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 trialMax Ramirez
iOS Development Techdegree Graduate 17,361 PointsError with Code, not comping, Optional Values
Hello, My code is not compiling and I do not know why, is there an issue with my code? Please take a look and any assistance is greatly appreciated, I tried using all of the knowledge as shown in the videos, but still no success.
struct Book {
let title: String
let author: String
let price: String?
let pubDate: String?
init?(dict: [String : String]) {
guard let title: dict["title"], let author: dict["author"] else {
return nil
}
self.title = title
self.author = author
self.price = dict["price"]
self.pubDate = dict["pubDate"]
}
}
2 Answers
Max Ramirez
iOS Development Techdegree Graduate 17,361 PointsYes I see now, thank you Chris!
Chris Sehnert
30,857 PointsYou are welcome Max....BTW...the solution is still less than perfect ...and worth examining....for instance... since the price and pubDate properties are not part of the guard let statement.....there exists the possibility where a dictionary used to instantiate a newBook may have a ["price": 8.0] member or a [pubDate: 12/16/14] member....where the value type associated with the expected key does not match the String? type specified.......
String? means it will accept a String value ...or nil.......
any other value will cause the app to CRASH!!!
Max Ramirez
iOS Development Techdegree Graduate 17,361 PointsI understand this way more now, I appreciate it!
Chris Sehnert
30,857 PointsChris Sehnert
30,857 Points"Assign" values to optionals through guard let statements.... = not :
init?(dict: [String : String]) { guard let title = dict["title"], let author = dict["author"] else { return nil } self.title = title self.author = author self.price = dict["price"] self.pubDate = dict["pubDate"] }