2017-03-01 27 views
1

我想我的代碼Swift 2 Swift 3但我不能轉換下面的代碼。上下文類型'任何'不能用於數組文字Swift 3

當我使用Any而不是AnyObject時出現如下錯誤:上下文類型'Any'不能與「items:」部分中的數組字面值一起使用。

當我用戶AnyObject,然後使用「名字:」一部分AnyObject越來越像錯誤:上下文類型「AnyObject」不能與數組字面

我無法找到它的最佳解決方案中使用。 我該怎麼辦?

var menus: [[String: AnyObject]] { 
     return [ 
      ["name": NSLocalizedString("General", comment: ""), 
       "items": [ 
        MenuItem(icon: UIImage.fontAwesomeIcon(FontAwesome.Heart, textColor: TubeTrends.Settings.foregroundColor, size: TubeTrends.Settings.menuIconSize), title: NSLocalizedString("Favorites", comment: ""), action: { (indexPath) -> Void in 
         self.navigationController?.pushViewController(self.favoritesVideoListVC(), animated: true) 
        }),      
       ] 
      ] 

回答

1

在斯威夫特3種異構文字集合類型必須明確標註的,例如

var menus: [[String: Any]] { 
    let dict : [String:Any] = ["name": NSLocalizedString("General", comment: ""), 
      "items": [ 
       MenuItem(icon: UIImage.fontAwesomeIcon(FontAwesome.Heart, textColor: TubeTrends.Settings.foregroundColor, size: TubeTrends.Settings.menuIconSize), title: NSLocalizedString("Favorites", comment: ""), action: { (indexPath) -> Void in 
        self.navigationController?.pushViewController(self.favoritesVideoListVC(), animated: true) 
       }),      
       ] 
      ] 
     return [dict] 
} 
+0

感謝您的幫助vadian。有了這個解決方案,我得到的上下文類型'任何'不能用於「項目:」部分 – Jessica

+0

中的數組文字錯誤。然後,您需要分別聲明(和註釋)'items'的值。 – vadian

+0

很不幸,Swift不能簡單地推斷異構集合的「任何」。 –

相關問題