Swift展开非可选类型

时间:2016-11-15 11:47:07

标签: swift optional

我有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'"。

1 个答案:

答案 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变量的类型。)