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 trialJason Teo
Courses Plus Student 8,398 PointsHow do I solve this question?
How do I correctly pass the associated value of .Done?
3 Answers
Ritesh R
Courses Plus Student 17,865 PointsTry this code..
enum Button {
case Done(String)
case Edit(String)
func toUIBarButtonItem() -> UIBarButtonItem {
switch self {
case .Done: return UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: nil, action: nil)
case .Edit: return UIBarButtonItem(title: "Plain", style: UIBarButtonItemStyle.Plain, target: nil, action: nil)
}
}
}
let done = Button.Done("Done")
let doneButton = done.toUIBarButtonItem()
johnhenri
42,259 PointsThe correct code is:
enum Button {
case Done(String?)
case Edit(String?)
func toUIBarButtonItem() -> UIBarButtonItem {
switch self {
case Done: return UIBarButtonItem(title: "Done", style: UIBarButtonStyle.Done, target: nil, action: nil)
case Edit: return UIBarButtonItem(title: "Plain", style: UIBarButtonStyle.Plain, target: nil, action: nil)
}
}
}
let done = Button.Done("Done")
let doneButton = done.toUIBarButtonItem()
Jason Teo
Courses Plus Student 8,398 PointsThank you!!
Marina Alenskaja
9,320 PointsWhy did you change the associated values to optionals? In the challenge, it's written as: case Done(String).
johnhenri
42,259 PointsI was correcting Ritesh R's code where he was using optional. The correct code without switching associated values is :
enum Button {
case Done(String)
case Edit(String)
func toUIBarButtonItem() -> UIBarButtonItem {
switch self {
case .Done: return UIBarButtonItem(title: "Done", style: UIBarButtonStyle.Done, target: nil, action: nil)
case .Edit: return UIBarButtonItem(title: "edit", style: UIBarButtonStyle.Plain, target: nil, action: nil)
}
}
}
let done = Button.Done("Done")
let doneButton = done.toUIBarButtonItem()
both methods work with the latter being the most correct.
Ritesh R
Courses Plus Student 17,865 PointsI was trying the code challenge in a playground & after the optional course i just put it there just in case, as it was getting difficult to complete the challenge. Thanks @johnhenri
johnhenri
42,259 Pointsanytime Ritesh R