2016-12-05 4 views
-1

入れ子になっているDictionaryにアクセスしようとして問題が発生しました。これはnilを返すようです。スイフト3:返品nilからネストされた辞書にアクセスしていますか?

info = ["list_order": 1, "name": Some Text, "id": 1, "menu_items": { 
    1 =  { 
     "food_name" = "String"; 
     "food_picture" = "link"; 
     "food_price" = "2.00"; 
    }; 
    2 =  { 
     "food_name" = "String"; 
     "food_picture" = "link"; 
     "food_price" = "5.00"; 
     id = 2; 
    }; 
}] 

info["menu_items"]の出力:ここ

はタイプDictionary<String, Any>の私のinfo出力です

info["menu_items"] = { 
    1 =  { 
     "food_name" = "String"; 
     "food_picture" = "link"; 
     "food_price" = "2.00"; 
     id = 1; 
    }; 
    2 =  { 
     "food_name" = "String"; 
     "food_picture" = "link"; 
     "food_price" = "5.00"; 
     id = 2; 
    }; 
} 

ただし、以下の割り当てはtestnilを生成します。

let test = info["menu_items"] as? Dictionary<Int, Any> 

何か明白でないか、基本的な基礎を理解していないのですか?

+0

なぜ辞書を使用してスタティックキーでデータを保存していますか? – Alexander

+0

@AlexanderMomchliov:後で 'UITableView'に入れるためにコードで参照する必要があります – Pangu

+2

これは構造体やオブジェクトではできません。 – Alexander

答えて

2

キーがIntタイプではない場合は、おそらくStringタイプです。[String: Any]を使用してください。

if let menuItems = info["menu_items"] as? [String: Any] { 
    print(menuItems) 
} 
+0

うわー、そうです... ...私はばかです!...なぜinfo ["menu_items"]で 'print'を呼び出すのですか? '引用符なしのキーを表示する... ...これはintであると私を混乱させます – Pangu

+0

@ Pangu' Postman'または 'RestAPI'を使って実際のJSONをチェックし、オンラインエディタでJSONがあなたにバッターの理解を与えることを確認すれば、 Xcodeの出力をチェックするのではなく、あなたの 'JSON'の' –

関連する問題