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 trialjc laurent
6,351 PointsMake sure you are creating a failable initializer that accepts a dictionary as an argument for initialization
I thought I did it??
struct Book {
let title: String
let author: String
let price: String?
let pubDate: String?
init?(withDictionary dict: Dictionary<String, String>) { // See comment below!
guard let title = dict["title"] else { return nil }
self.title = title
guard let author = dict["author"] else { return nil }
self.author = author
self.price = dict["price"]
self.pubDate = dict["pubDate"]
}
}
5 Answers
Moritz Lang
25,909 PointsThis is my solution:
init?(dict: [String: String]) {
// non-optional values
guard let title = dict["title"] else { return nil }
guard let author = dict["author"] else { return nil }
self.title = title
self.author = author
// optional values
self.price = dict["price"]
self.pubDate = dict["pubDate"]
}
Moritz Lang
25,909 PointsHi, why do you check the constants that arent optional and not the ones that are optional? :)
By the way: Dictionary<String, String>
is not the best way to declare a dictionary of type String: String
. It could be easily written like [String: String]
.
Moritz Lang
25,909 PointsOh, I'm sorry. I interpreted your code wrong. Just give me a moment and I'll provide you with a better solution :)
jc laurent
6,351 Pointsthks, but that's still giving this error = "Make sure you are creating a failable initializer that accepts a dictionary as an argument for initialization"
Moritz Lang
25,909 PointsThat's very strange. I can pass this challenge with exactly the code I've written above. Maybe you need to reload the challenge? :)
jc laurent
6,351 Pointsok Bud
jc laurent
6,351 Pointsyou were right! Don't know why it freezes