4

我设计了一个自定义对象,它肯定会返回一个值。现在整个应用程序都是围绕该自定义对象构建的。现在出现了可能导致自定义对象为零的情况。

我该怎么办 。将类型更改为可选?并在各处更改代码以展开。还有其他更好的解决方案吗?

4

2 回答 2

4

将类型更改为隐式展开的可选。通过这种方式,您可以在任何您确定它不会出现的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

通常,您会希望避免隐式展开的选项,除非由于技术原因您不能过早初始化对象,例如在接口构建器出口或异步初始化对象等的情况下。

于 2015-09-29T11:10:52.983 回答
0

将类型更改为Optional然后它也应该允许nil值。检查下面的示例将帮助您:

var specialValue :String? = "Some Value"

if let value = specialValue {
     // do some stuff.
}else {
    // Here specialValue is nil value.
}

(或)在Swift 2.0中,我们可以使用guard

guard let value = specialValue { return }
print(value)
于 2015-09-29T11:48:03.077 回答