“无法为”AnyObject?“类型”String“分配值,Swift 3,Xcode 8 beta 6

前端之家收集整理的这篇文章主要介绍了“无法为”AnyObject?“类型”String“分配值,Swift 3,Xcode 8 beta 6前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一个相当简单的代码片段
var dict: [String: AnyObject] = [:]
dict["key"] = "value"

生成以下编译时错误

Cannot assign value of type 'String' to type 'AnyObject?'

简单的类型检查告诉我,String是AnyObject

"value" is AnyObject // returns true

我可以将AnyObject更改为Any,一切都可以正常工作

var dict: [String: Any] = [:]
dict["key"] = "value"

但是我想明白为什么我会收到错误? String不再是AnyObject吗?还是这个bug?

在b6中,String不再神奇地与NSString桥接。字符串不是一个类;它是一个结构体。你需要手动桥接:
dict["key"] = "value" as AnyObject

仍然似乎是桥接的事实可能是一个错误,应该报告。

不言而喻,您的代码中应尽可能少地使用[String:AnyObject]和[String:Any]。

(请务必遵循Hamish在下面的评论中提供的链接。)

猜你在找的Swift相关文章