构造函数调用的可选链接?

时间:2015-05-05 08:16:17

标签: swift optional optional-chaining

我想选择将NSNumber?转换为Int?,但Int的初始化方法仅需init(NSNumber),因此我无法传递NSNumber? }}

我有没有办法压缩这段代码,以便它使用类似可选链接的东西?

// number: NSNumber?
let integer = number == nil ? nil : Int(number!)

1 个答案:

答案 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会自动在NSNumberInt之间“桥接”。