【问题标题】:Swift 2.0 conditional assignment and syntaxSwift 2.0 条件赋值和语法
【发布时间】:2016-07-08 04:48:44
【问题描述】:

以下代码有效(其中someArray.objectForKey("someKey") 的类型为NSNumber):

var someInt:Int = 123

if(someDict["someKey"] != nil) {
    someInt = someDict["someKey"]!.integerValue
}

所以它可以工作并且可以满足我的需要,但我几乎 100% 肯定这不是它应该在 Swift 中完成的方式。

我正在为上述代码寻找更优雅的解决方案。

【问题讨论】:

标签: swift if-statement


【解决方案1】:

称为可选绑定

if let someValue = someArray["someKey"] as? Int { 
   someInt = someValue 
}

请阅读Swift Language Guide中关于可选绑定的部分

【讨论】:

    【解决方案2】:

    如果我正确理解你的问题,你可以这样做

    if let someInt = someArray.objectForKey("someKey")?.integerValue {
    
    }
    

    或者

    someInt = someArray.objectForKey("someKey")?.integerValue ?? 0
    

    如果 objectForKey 返回 nil,0 是分配给 someInt 的默认值。

    【讨论】:

    • 这很有趣,我要试验一下!
    • 当你开始试验时,也试试guard let@Parad0x13
    • 好的,经过实验,我真的很喜欢你的第二个例子。由于我已经有了 somInt 的默认值,因此我将您的代码更改为: someInt = someDict["someKey"]?.integerValue ?? someInt 这似乎完美无缺,谢谢
    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 2018-09-20
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多