【问题标题】:Swift Optionals : What if i need to change an non - optional type to optionalSwift Optionals:如果我需要将非可选类型更改为可选怎么办
【发布时间】:2015-12-26 19:58:28
【问题描述】:

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

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

【问题讨论】:

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

标签: ios swift swift2 optional optional-variables


【解决方案1】:

将类型更改为隐式展开的可选。这样你就可以在你知道它不会是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

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

【讨论】:

    【解决方案2】:

    将类型更改为 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      • 2014-11-03
      相关资源
      最近更新 更多