我想选择将NSNumber?
转换为Int?
,但Int
的初始化方法仅需init(NSNumber)
,因此我无法传递NSNumber?
}}
我有没有办法压缩这段代码,以便它使用类似可选链接的东西?
// number: NSNumber?
let integer = number == nil ? nil : Int(number!)
答案 0 :(得分:4)
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
之间“桥接”。