1

我想有选择地将 an 强制NSNumber?转换为 an Int?,但初始化方法Int只需要init(NSNumber),所以我不能通过NSNumber?.

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

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

1 回答 1

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

于 2015-05-05T08:26:26.207 回答