Reputation: 157
I have swift optional unwrapped variable phone
but when i try to use this variable it gives optional wrapped like below
if let phone = self!.memberItem!.address?.mobile {
print(phone) // Optional(+123232323)
//error "Cannot force unwrap non optional type 'String'".
print(phone!)
}
struct Address{
var tel: String?
var fax: String?
var mobile: String?
var email: String?
}
phone
contains optional value, but when i try to force unwrap this optional it throws error "Cannot force unwrap non optional type 'String'".
Upvotes: 1
Views: 657
Reputation: 1340
You're correct, phone shouldn't be an Optional type when printing it. As Hamish commented above, it sounds like something went wrong when assigning the value to the mobile
property.
Here's a simple example:
struct Person {
let address: Address?
}
struct Address {
let mobile: String?
}
let dude: Person? = Person(address: Address(mobile: "555-1234"))
if let phone = dude?.address?.mobile {
print(phone) // Prints plain "555-1234", without "Optional"
}
(If you're using XCode, check what it tells you about the phone
variable's type when you put your cursor on it in the editor.)
Upvotes: 1