我设计了一个肯定会返回值的自定义对象。现在整个应用程序都是围绕该自定义对象构建的。现在出现了可能导致自定义对象为零的条件。Swift可选项:如果我需要将非可选类型更改为可选
我该怎么做。将类型更改为可选?并在任何地方更改代码以展开。其他更好的解决方案?
我设计了一个肯定会返回值的自定义对象。现在整个应用程序都是围绕该自定义对象构建的。现在出现了可能导致自定义对象为零的条件。Swift可选项:如果我需要将非可选类型更改为可选
我该怎么做。将类型更改为可选?并在任何地方更改代码以展开。其他更好的解决方案?
将类型更改为隐式解包可选。通过这种方式,您可以在任何地方将它用作常规非可选值,肯定不会是nil
(或nil
意味着不可恢复的错误),并检查它是否为nil
。
例子:
let stringOrNil:String! = "foo"
if let string = stringOrNil { // used like an optional type
println(string)
}
println(stringOrNil.isEmpty) // used like a non-optional type, will crash is stringOrNil is nil
通常你想避免隐含展开自选,除非,你不能初始化对象的情况下由于技术原因,例如太早在Interface Builder网点或异步初始化对象的情况下,等
类型更改为可选那么就应该允许零值too.Check这下面的例子将帮助您:
var specialValue :String? = "Some Value"
if let value = specialValue {
// do some stuff.
}else {
// Here specialValue is nil value.
}
(或) Swift 2.0,我们被允许使用后卫。
guard let value = specialValue { return }
print(value)
将类型更改为'Optional',然后在出现编译器错误的每个地方处理nil情况。 – Aderstedt