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 trialCarl Smith
8,185 PointsNot sure how to complete this.
So I know I need to build a computed property, probably one that takes parameters for the constants built for the UIFontStyles. Not sure how to write it out or if I'm maybe heading in the wrong direction?
let UIFontTextStyleHeadline = "UIFontTextStyleHeadline"
let UIFontTextStyleBody = "UIFontTextStyleBody"
let UIFontTextStyleFootnote = "UIFontTextStyleFootnote"
enum Text {
case Headline
case Body
case Footnote
}
var style: String {
}
1 Answer
Martin Wildfeuer
Courses Plus Student 11,071 PointsJust as classes and structs, enums can have properties. As the task descriptions says: for example Text.Headline.style
should return the string "UIFontTextStyleHeadline". That indicates that style is a member of the Text enum. In code, that would be:
// With type annotation
let headlineStyle: String = Text.Headline.style // "UIFontTextStyleHeadline"
// Swift can infer the type String, so we can omit the type annotation
let headlineStyle = Text.Headline.style // "UIFontTextStyleHeadline"
So, depending on the enum, we want to return the corresponding style. That's where switch
comes in handy. As style
is a property of the Text
enum, we can check for its current value with self
.
let UIFontTextStyleHeadline = "UIFontTextStyleHeadline"
let UIFontTextStyleBody = "UIFontTextStyleBody"
let UIFontTextStyleFootnote = "UIFontTextStyleFootnote"
enum Text {
case Headline
case Body
case Footnote
// A computed property is a var that does not store
// a value, but returns a "computed" value
var style: String {
switch self {
// Use the Text enum cases here to return the
// corresponding constant, like UIFontTextStyleHeadline
}
}
}
Now all that's let is to define a case for each of the 3 enum members, returning the corresponding String in the body of style
Hint:
switch <value> {
case <enum>: return <value>
}
Hope that helps :)