2017-03-01 7 views
1

Swift 2をSwift 3にコードしようとしていますが、次のコードを変換できません。コンテキストタイプ 'Any'は配列リテラルで使用できません。Swift 3

AnyObjectの代わりにAnyを使用すると、次のようなエラーが表示されます。コンテキストタイプ 'Any'は「items:」の部分に配列リテラルで使用できません。

ときIユーザーANYOBJECTし、「名前:」を使用ANYOBJECTのようなエラーになって一部を:コンテキスト型「ANYOBJECTを」私はそれのための最善の解決策を見つけることができませんでした

配列リテラルを使用することはできません。 どうすればいいですか?スウィフト3異種のリテラルのコレクション型で

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

あなたの助けのためのヴァディアン例えば

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

おかげで、明示的に注釈を付けなければなりません。この解決策では、コンテキスト変数の型 'Any'は「items:」の部分の配列リテラルエラーで使用できません。 – Jessica

+0

次に、 'items'の値を別に宣言(および注釈)する必要があります。 – vadian

+0

スウィフトは、異種コレクションの「Any」を単純に推論することはできません。 –

関連する問題