我有快速可选的未包装变量,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'”。
没错,电话在打印时不应该是可选类型。正如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
在编辑器中将光标放在变量上时检查它能告诉您有关变量类型的信息。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句