根据Swift 3的文档,NSNumber被桥接到Swift本机类型,如Int,Float,Double,...但是当我尝试在Dictionary中使用本地类型时,我得到编译错误固定使用NSNumber,为什么?这是我的代码:NSNumber VS Int,Float in Swift Dictionary
var dictionary:[String : AnyObject] = [:]
dictionary["key"] = Float(1000)
并且编译器给出错误“无法将Float类型的值赋值给AnyObject”。如果我按照以下方式编写代码,则不存在任何问题,因为NSNumber实际上是一种对象类型。
dictionary["key"] = NSNumber(value:Float(1000))
斯威夫特编译器还提示纠正代码
dictionary["key"] = Float(1000) as AnyObject
,但我不知道这是否是做或不正确的事情。如果确实在NSNumber和本地类型(Int,Float等)之间存在桥接,那么为什么编译器强制将类型转换为AnyObject?
相关:http://stackoverflow.com/questions/39321421/working-with-nsnumber-integer-values-in-swift- 3 –