一段相当简单的代码
var dict: [String: AnyObject] = [:] dict["key"] = "value"
生成以下编译时错误
Cannot assign value of type 'String' to type 'AnyObject?'
简单的类型检查告诉我这String是AnyObject
String
AnyObject
"value" is AnyObject // returns true
我可以更改AnyObject为Any,一切都会正常
Any
var dict: [String: Any] = [:] dict["key"] = "value"
但我想了解为什么会出现错误?是否String不再AnyObject?还是这是一个错误?
在b6中,String不再神奇地桥接到NSString。字符串不是类;它不是类。这是一个结构。您需要手工进行桥接:
dict["key"] = "value" as AnyObject
is似乎仍在桥接的事实可能是一个错误,应该报告。
is
不言而喻的是[String: AnyObject]和[String: Any]应作为你的代码越少越好。
[String: AnyObject]
[String: Any]
(请确保遵循以下评论中的Hamish提供的链接。)