var dictionary:[String : AnyObject] = [:]dictionary["key"] = float(1000)
并且编译器给出错误“无法将类型float的值赋给AnyObject”.如果我按如下方式编写代码,则没有问题,因为NSNumber实际上是一个对象类型.
dictionary["key"] = NSNumber(value:float(1000))
Swift编译器还提示将代码更正为
dictionary["key"] = float(1000) as AnyObject
但我不确定这是否正确.如果确实在NSNumber和本机类型(Int,float等)之间存在桥接,为什么编译器强制转换为AnyObject?
像float,Int,Double这样的原始类型被定义为struct,因此它们不实现AnyObject协议.相反,Any可以代表任何类型的实例,因此您的字典的类型应该是:var dictionary: [String: Any] = [:]
除此之外,在您执行的代码中:
dictionary["key"] = float(1000) as AnyObject
float被隐式转换为NSNumber,然后被上传到AnyObject.你本可以做NSNumber来避免后者.
总结以上是内存溢出为你收集整理的NSNumber vs Int,Swat in Swift Dictionary全部内容,希望文章能够帮你解决NSNumber vs Int,Swat in Swift Dictionary所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)