我想有选择地将 an 强制NSNumber?
转换为 an Int?
,但初始化方法Int
只需要init(NSNumber)
,所以我不能通过NSNumber?
.
有没有办法让我压缩这段代码,以便它使用可选链接之类的东西?
// number: NSNumber?
let integer = number == nil ? nil : Int(number!)
我想有选择地将 an 强制NSNumber?
转换为 an Int?
,但初始化方法Int
只需要init(NSNumber)
,所以我不能通过NSNumber?
.
有没有办法让我压缩这段代码,以便它使用可选链接之类的东西?
// number: NSNumber?
let integer = number == nil ? nil : Int(number!)
构造Int
函数不采用可选参数。您可以将结构“包装”成map()
:
let number : NSNumber? = ...
let n = number.map { Int($0) } // `n` is an `Int?`
但是在这里使用可选链接的integerValue
属性更容易:NSNumber
let n = number?.integerValue // `n` is an `Int?`
要不就
let n = number as? Int // `n` is an `Int?`
因为 Swift自动地在NSNumber
和之间“架起”桥梁。Int