2016-10-06 53 views
1

我更新到Swift 3,我在我的項目中使用Google Analytics。本來我有這行代碼工作的:從NSMutableDictionary轉換?到不相關的類型[AnyHashble:任何]總是失敗

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

雨燕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中的錯誤嗎?

回答

2

我不確定Swift Team(或Apple?)是否認爲這是一個錯誤。但事實上,Swift 3運行時間可以使用as!將類型NSMutableDictionary!的值轉換爲類型[AnyHashable:Any]

相應的警告,請試試這個:

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

我解決它這個(安全)的方式:

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) 
    } 
相關問題