Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

iOS Swift 2.0 Enumerations and Optionals Introduction to Optionals Working with Optional Types

Is unwrapping an optional not required in String Interpolation?

struct Person { let firstName: String let middleName: String? let lastName: String

func getFullName() -> String{
    return "\(firstName) \(middleName) \(lastName)" //no error
    return firstName + " " + middleName + " " lastName //error - Value of type 'String?' not    unwrapped
}

}

When I type this code out in Playground, I don't get any error that indicates that middleName has to be unwrapped, whereas if I don't use String Interpolation, I do get an error. Does this mean that unwrapping optionals is not required within String Interpolation?

2 Answers

Jason Anders
MOD
Jason Anders
Treehouse Moderator 145,692 Points

Hey Madelyn,

That's a really good question, and really not explained anywhere in the Swift Docs that I can find. If I remember correctly, it is talked about in one of the Swift videos here on Treehouse, but I really can't remember which one.

So, I will try my best to remember why... In Swift, optionals have to be unwrapped. The thing is they can be unwrapped automatically by the code. This is what is happening with String Interpolation. When the variable is interpolated, it is checked (unwrapped) by Swift. If the variable is empty it returns nil and "nil" will be printed to the string.

Concatenation, on the other hand, doesn't come with this 'auto-unwrap' feature, which is why you are getting the error.

I will try to remember the video this is addressed it, but I hope this clears it up a bit for you. :)

Keep Coding! :dizzy:

Thank you for your simple, clear explanation. It makes a lot of sense when explained!

Mostafa Mohsen
Mostafa Mohsen
6,688 Points

if the optimal has a value String Interpolation will print optional (value) and you have to ununwrap the value