一尘不染

“无法将'String'类型的值分配给'AnyObject吗?'”,Swift 3,Xcode 8 beta 6

swift

一段相当简单的代码

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

生成以下编译时错误

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

简单的类型检查告诉我这StringAnyObject

"value" is AnyObject // returns true

我可以更改AnyObjectAny,一切都会正常

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

但我想了解为什么会出现错误?是否String不再AnyObject?还是这是一个错误?


阅读 356

收藏
2020-07-07

共1个答案

一尘不染

在b6中,String不再神奇地桥接到NSString。字符串不是类;它不是类。这是一个结构。您需要手工进行桥接:

dict["key"] = "value" as AnyObject

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

不言而喻的是[String: AnyObject][String: Any]应作为你的代码越少越好。

(请确保遵循以下评论中的Hamish提供的链接。)

2020-07-07