我想选择施放NSNumber? 到Int? ,但Int的初始化方法只接受init(NSNumber) ,所以我无法传递NSNumber? 。
有没有办法让我压缩这段代码,以便它使用像可选链接这样的东西?
// number: NSNumber? let integer = number == nil ? nil : Int(number!)I want to optionally cast an NSNumber? to an Int?, but the initialiser method for Int only takes init(NSNumber), so I can't pass an NSNumber?.
Is there a way for me to compact this code so that it uses something like optional chaining?
// number: NSNumber? let integer = number == nil ? nil : Int(number!)最满意答案
Int构造函数不接受可选参数。 你可以将结构“包装”到map() :
let number : NSNumber? = ... let n = number.map { Int($0) } // `n` is an `Int?`但是在这里使用NSNumber的integerValue属性和可选链接更容易:
let n = number?.integerValue // `n` is an `Int?`要不就
let n = number as? Int // `n` is an `Int?`因为Swift会自动在NSNumber和Int之间“桥接”。
The Int constructors don't take optional arguments. You could "wrap" the construction into map():
let number : NSNumber? = ... let n = number.map { Int($0) } // `n` is an `Int?`But here it is easier to use the integerValue property of NSNumber with optional chaining:
let n = number?.integerValue // `n` is an `Int?`or just
let n = number as? Int // `n` is an `Int?`since Swift "bridges" between NSNumber and Int automatically.
更多推荐
发布评论