我更新到了Swift 3,并且在我的项目中使用了Google Analytics(分析)。最初,我有以下代码行:

 tracker.send(GAIDictionaryBuilder.createScreenView().build() as [NSObject : AnyObject])

Swift 3转换工具完成后,将其更改为:
tracker?.send(GAIDictionaryBuilder.createScreenView().build() as [AnyHashable: Any])

我收到错误消息:
Cannot convert value of type NSMutableDictionary! to type [AnyHashable:Any] in coercion

我可以通过将行更改为来消除此错误:
tracker?.send(GAIDictionaryBuilder.createScreenView().build() as? [AnyHashable: Any])

但是,这给了我标题中的警告。有人知道为什么会这样吗?这是Swift 3中的错误吗?

最佳答案

我不确定Swift Team(或Apple?)是否认为这是一个错误。但实际上,Swift 3运行时可以使用NSMutableDictionary![AnyHashable:Any]类型的值转换为as!类型。

要取消显示警告,请尝试以下操作:

tracker?.send(GAIDictionaryBuilder.createScreenView().build() as NSDictionary as! [AnyHashable : Any])

关于ios - 从NSMutableDictionary转换?到无关类型[AnyHashble:Any]总是失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39904432/

10-10 02:57