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

Ios Swift Optionals:如果我需要将非可选类型更改为可选类型,该怎么办,ios,swift,swift2,optional,optional-variables,Ios,Swift,Swift2,Optional,Optional Variables,我设计了一个自定义对象,它肯定会返回一个值。现在整个应用程序都是围绕这个自定义对象构建的。现在出现了可能导致自定义对象为零的条件 我该怎么办。是否将类型更改为可选?并将所有代码更改为“展开”。还有其他更好的解决方案吗 将类型更改为隐式展开可选。通过这种方式,您可以在您知道的任何地方将其作为常规非可选值使用,以确保它不会是nil(或者nil表示不可恢复的错误),并在可以是nil的地方检查nil 例如: let stringOrNil:String! = "foo" if let string =

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


我该怎么办。是否将类型更改为可选?并将所有代码更改为“展开”。还有其他更好的解决方案吗

将类型更改为隐式展开可选。通过这种方式,您可以在您知道的任何地方将其作为常规非可选值使用,以确保它不会是
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

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

将类型更改为可选,然后该类型也应允许值。检查以下示例将帮助您:

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)

将类型更改为
可选
,然后在出现编译器错误的每个地方处理nil情况。