NSNumber?オプションで anを anにキャストしたいのですInt?が、のイニシャライザ メソッドはIntのみを取るinit(NSNumber)ため、 an を渡すことはできませんNSNumber?。
オプションの連鎖のようなものを使用するように、このコードを圧縮する方法はありますか?
// number: NSNumber?
let integer = number == nil ? nil : Int(number!)
NSNumber?オプションで anを anにキャストしたいのですInt?が、のイニシャライザ メソッドはIntのみを取るinit(NSNumber)ため、 an を渡すことはできません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?`
NSNumberSwift は と の間をInt自動的に「ブリッジ」するためです。