Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialManish Giri
16,266 PointsString Interpolation is supposedly wrong
My code doesn't pass - it says in the error message that the implementation of description isn't as expected, and HINT: Use string interpolation.
I'm not sure what's wrong.
struct Tag {
let name: String
}
struct Post {
var title: String
var author: String
var tag: Tag
func description() -> String {
return "\(title) by \(author). Filed under \(tag)"
}
}
let firstTag = Tag(name: "MNP")
let firstPost = Post(title: "XYZ", author: "ABC", tag: firstTag)
let postDescription = firstPost.description()
2 Answers
Manish Giri
16,266 PointsI found the solution. And no, I wasn't writing in Xcode and pasting it into the Treehouse editor, I was writing it directly in the editor itself. In fact, when it didn't work in the editor, I tried it out in an Xcode playground, which is how I found the solution.
So the implementation of description requires the tag name to be returned, as "filed under swift". In my code, I had
return "\(title) by \(author). Filed under \(tag)"
Here, interpolation of (tag) does not return a "string", as is required in the challenge. Instead, it returns a "Tag" instance, because tag
is of type Tag.
So, I just changed the \(tag)
to \(tag.name)
so that it returns the stored property in the struct Tag, which is a string, and it worked.
return "\(title) by \(author). Filed under \(tag.name)"
My only complaint is that the "preview" should show what is being returned, instead of being empty (as was the case here). Looking at the return value in the playground just took me seconds to see what the problem was.
Hope this helps.
Eric Lakatos
2,338 PointsAh, yea that makes sense. Thanks!
Trent Christofferson
18,846 Pointsif you are doing it in xcode then pasting it into treehouse it could be different since you may be using swift 3.0 instead of 2.0 like this course is. I dont know for sure if string interpolation has changed in 3.0 or not just a possible theory.
Eric Lakatos
2,338 PointsEric Lakatos
2,338 PointsIm having the same problem and created a post as well. Not sure what we're missing here...