我尝试访问一个属性:
let ejh = userInfo.firstName;
但是我收到了这个错误:
fatal error: Can't unwrap Optional.None
为什么?
userInfo的类型为CKDiscoveredUserInfo!
答案 0 :(得分:1)
这有很多答案,例如here。
userInfo
(您没有显示其定义)可能是一个可选值(即可能是nil
)。请改用:
if let ejh = userInfo.firstName {
println("Got it!\(ejh)")
} else {
println("nil")
}
答案 1 :(得分:1)
这是因为userInfo.firstName的值是可选的,可以是nil。 你需要打开它。 如果您确定有值,可以使用强制解包:
let ejh = userInfo.firstName!
但如果您不确定是否有价值用途:
if let ejh = userInfo.firstName {
// use ejh here
}
获得价值的另一种方法是:
let ejh = userInfo?.firstName;
如果userInfo有一个或者它给你nil,那么这给你值。
答案 2 :(得分:1)
行应为let ejh = userInfo.firstName?
,因为firstName可能为零值