Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Can';t展开可选。无_Swift - Fatal编程技术网

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是可选的,而不仅仅是名字,那么请检查本文和这个问题。最后一个选项应该适合您。