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?`
NSNumber
Swift は と の間をInt
自動的に「ブリッジ」するためです。