为什么Swift中的可选数组不可枚举?什么是让它发挥作用的最佳方法?
例如
var objs:String[]?
// Won't work
for obj in objs {
}
Run Code Online (Sandbox Code Playgroud)
您首先需要"解包"可选项,或者换句话说,验证它是否是nil:
if let actualObjs = objs {
for obj in actualObjs {
}
}
Run Code Online (Sandbox Code Playgroud)
actualObjs变为type:String[]如果objs不是,则使用它运行块nil.如果 objs是nil,则只会跳过该块.(有关此内容的更多信息,请阅读Apple的文档)
如果你是积极的,objs是不是nil,你也可以只使用武力展开操作符(!):
for obj in objs! {
}
Run Code Online (Sandbox Code Playgroud)
如果objs是nil这种情况,它将抛出运行时错误,整个程序将停止.
注意:你需要打开可选项的实际原因是,它Optional是Swift中自己的类型:
enum Optional<T>
Run Code Online (Sandbox Code Playgroud)
因此,当您尝试Optional直接与其进行交互时,您实际上正在与枚举进行交互.这个枚举只是将真实价值存储在其中.(因此得名"unwrap")
| 归档时间: |
|
| 查看次数: |
1023 次 |
| 最近记录: |