1

NSNumber?オプションで anを anにキャストしたいのですInt?が、のイニシャライザ メソッドはIntのみを取るinit(NSNumber)ため、 an を渡すことはできません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?`

NSNumberSwift は と の間をInt自動的に「ブリッジ」するためです。

于 2015-05-05T08:26:26.207 に答える