Swift 3のドキュメントによると、NSNumberはInt、Float、DoubleなどのSwiftネイティブタイプにブリッジされています。しかし、辞書でネイティブタイプを使用しようとすると、 NSNumberを使用すると固定されますが、それはなぜですか?ここに私のコードです:NSNumberとInt、Swift DictionaryのFloat
var dictionary:[String : AnyObject] = [:]
dictionary["key"] = Float(1000)
とコンパイラが「ANYOBJECTにfloat型の値を割り当てることができません」エラーが発生します。コードを次のように記述すると、NSNumberが実際にオブジェクト型であるため問題はありません。
dictionary["key"] = NSNumber(value:Float(1000))
スウィフトコンパイラも
dictionary["key"] = Float(1000) as AnyObject
ように、コードを修正するよう要求しますが、私は何かないように正しいものであるかどうかわからないです。実際にNSNumberとネイティブ型(Int、Floatなど)の間にブリッジがある場合、コンパイラはAnyObjectに型キャストする必要がありますか? Float
、Int
、Double
よう
関連:http://stackoverflow.com/questions/39321421/working-with-nsnumber-integer-values-in-swift- 3 –