Swift Can';t展开可选。无
我尝试访问一个属性:Swift Can';t展开可选。无,swift,Swift,我尝试访问一个属性: let ejh = userInfo.firstName; 但我得到了这个错误: fatal error: Can't unwrap Optional.None 为什么? userInfo有一个类型CKDiscoveredUserInfo对此有很多答案,例如 userInfo(您没有显示其定义)可能是一个可选值(即可以是nil)。改用这个: if let ejh = userInfo.firstName { println("Got it!\(ejh)") }
let ejh = userInfo.firstName;
但我得到了这个错误:
fatal error: Can't unwrap Optional.None
为什么?
userInfo有一个类型
CKDiscoveredUserInfo代码>对此有很多答案,例如
userInfo
(您没有显示其定义)可能是一个可选值(即可以是nil
)。改用这个:
if let ejh = userInfo.firstName {
println("Got it!\(ejh)")
} else {
println("nil")
}
这是因为userInfo.firstName的值是可选的,可以为零。
你需要打开它。
如果确定存在一个值,则可以使用“强制展开”:
let ejh = userInfo.firstName!
但如果您不确定是否有价值,请使用:
if let ejh = userInfo.firstName {
// use ejh here
}
获取该值的另一种方法是:
let ejh = userInfo?.firstName;
如果userInfo有一个值,它会给你值,或者它会给你零。行应该是让ejh=userInfo.firstName?
,因为firstName可能有零值。firstName或userInfo本身是一个可选变量(用问号定义),它是零(未定义)。如果让ejh=userInfo.firstName{可能是因为userInfo是可选的,而不仅仅是名字,那么请检查本文和这个问题。最后一个选项应该适合您。