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情况。