Ios 从NSMutableDictionary强制转换?对于不相关的类型[AnyHashble:Any]总是失败
我更新到Swift 3,在我的项目中使用谷歌分析。最初,我使用了这行代码:Ios 从NSMutableDictionary强制转换?对于不相关的类型[AnyHashble:Any]总是失败,ios,swift,xcode,google-analytics,swift3,Ios,Swift,Xcode,Google Analytics,Swift3,我更新到Swift 3,在我的项目中使用谷歌分析。最初,我使用了这行代码: tracker.send(GAIDictionaryBuilder.createScreenView().build() as [NSObject : AnyObject]) Swift 3转换工具完成后,将其更改为: tracker?.send(GAIDictionaryBuilder.createScreenView().build() as [AnyHashable: Any]) 我得到了一个错误: Cann
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中的一个bug吗?我不确定Swift团队(或苹果?)是否认为这是一个bug。但事实上,Swift 3运行时可以转换类型
NSMutableDictionary的值
使用as键入[AnyHashable:Any]
代码>
要取消显示警告,请尝试以下操作:
tracker?.send(GAIDictionaryBuilder.createScreenView().build() as NSDictionary as! [AnyHashable : Any])
我用这个(更安全的)方法解决了这个问题:
if let eventTracker = GAIDictionaryBuilder.createScreenView().build() {
var eventTrackerSwift: [AnyHashable: Any] = [:]
for item in eventTracker {
if let key = item.key as? AnyHashable {
eventTrackerSwift[key] = item.value
}
}
tracker.send(eventTrackerSwift)
}