我有swift可选的unwrapped变量phone
但是当我尝试使用这个变量时,它给出了可选的包裹,如下所示
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
包含可选值,但是当我尝试强制打开此可选项时,它会抛出错误"无法强制解包非可选类型' String'"。
答案 0 :(得分:1)
你是对的,打印时手机不应该是可选类型。正如Hamish在上面评论的那样,在将值赋给mobile
属性时听起来有点出错。
这是一个简单的例子:
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"
}
(如果你正在使用XCode,当你在编辑器中将光标放在它上面时,检查它告诉你的phone
变量的类型。)