我设计了一个自定义对象,肯定会返回一个值。现在整个应用程序围绕该自定义对象构建。现在出现了可能导致自定义对象为零的条件。
我该怎么办?将类型更改为可选?并在任何地方更改代码以打开包装。其他更好的解决方案?
答案 0 :(得分:3)
将类型更改为隐式展开的可选项。通过这种方式,您可以像处理常规的非可选值一样使用它,确保它不会nil
(或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
一般情况下,您可能希望避免隐式展开的选项,除非您因技术原因而无法过早初始化对象,例如在接口构建器出口或异步初始化对象等的情况下
答案 1 :(得分:0)
将类型更改为可选,然后也应该允许 nil 值。请在下面查看示例,它将为您提供帮助:
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)