以下代码有效(其中someArray.objectForKey("someKey")
类型为NSNumber
):
var someInt:Int = 123
if(someDict["someKey"] != nil) {
someInt = someDict["someKey"]!.integerValue
}
所以它可以工作并完成我需要它做的事情,但我几乎 100% 确定这不是在 Swift 中应该完成的方式。
我正在寻找上述代码的更优雅的解决方案。
它
被称为可选绑定
if let someValue = someArray["someKey"] as? Int {
someInt = someValue
}
请阅读 Swift 语言指南中有关可选绑定的部分
如果我正确理解你的问题,你可以做
if let someInt = someArray.objectForKey("someKey")?.integerValue {
}
或
someInt = someArray.objectForKey("someKey")?.integerValue ?? 0
其中 0 是默认值,如果objectForKey
返回 nil,则分配给someInt
。