Swift Optionals:如果我需要将非可选类型更改为可选,该怎么办?

时间:2015-09-29 11:03:49

标签: ios swift swift2 optional optional-variables

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

我该怎么办?将类型更改为可选?并在任何地方更改代码以打开包装。其他更好的解决方案?

2 个答案:

答案 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)