2016-06-25 6 views
0

まず、jsonデータを確認します。Swiftを使用して次のデータをテーブルビューにフェッチする方法は?

[ 
{ 
"id": "244", 
"name": "PIZZAS", 
"image": "", 
"coupon": "1", 
"icon": "", 
"order": "1", 
"aname": "", 
"options": "2", 
"subcategory": [ 
    { 
    "id": "515", 
    "name": "MARGARITA", 
    "description": "Cheese and Tomato", 
    "image": "", 
    "icon": "", 
    "coupon": "1", 
    "order": "1", 
    "aname": "", 
    "options": "2", 
    "item": [ 
     { 
     "id": "1749", 
     "name": "9 Inch Thin & Crispy Margarita", 
     "description": "", 
     "price": "3.40", 
     "coupon": "1", 
     "image": "", 
     "options": "2", 
     "order": "1", 
     "addon": "495", 
     "aname": "", 
     "icon": "" 
     }] 
    }] 
}] 

私はAlamofireを使用して、以下のこのコードの応答を取得しています

Alamofire.request(.GET, myUrl, parameters:nil , encoding: .JSON) 
      .validate() 
      .responseString { response in 
       print("Response String: \(response.result.value)") 
      } 
      .responseJSON { response in 
       print("Response JSON: \(response.result.value)") 


       if let jsonResult = response as? Array<Dictionary<String,String>> { 
        let Name = jsonResult[0]["name"] 
        let ID = jsonResult[0]["id"] 
        let Order = jsonResult[0]["order"] 

        print("JSON: Name: \(Name)") 
        print("JSON: ID: \(ID)") 
        print("JSON: Order: \(Order)") 

       } 
      } 

しかし、応答データを取得した後、私は任意の値を取得することはできませんよ。ここでは、名前、ID、サブカテゴリなどのすべてのデータを取得したいのですが、これを実装する方法は?

+0

テーブルビューに表示するためにすべての名前を配列に保存する必要がある場合は、これどうやってするの。 @ MAB –

+0

質問に対する回答を受け入れました。今質問の意味を変えないでください。新しい問題がある場合は、*新しい質問を投稿してください。*この問題を解決しないでください。 – Moritz

+0

確認してください。 @ EricD –

答えて

1

複数の問題があります。 最初の応答のタイプはResponse<Anyobject, NSError>です。探しているのは解析されたオブジェクトではなく、ログの場合と同じようにresponse.result.valueを使用する必要があります。第二に あなたがArray<Dictionary<String,String>>response.result.valueをキャストしようとした場合でも、それはあなたがこのコードDictionary<String, String>

にキャストすることはできませんアン・インナー配列subcategoryはあなたのために働く必要があります持っているあなたのJSONデータであるため渡しません。

Alamofire.request(.GET, myUrl, parameters:nil , encoding: .JSON) 
    .validate() 
    .responseString { response in 
     print("Response String: \(response.result.value)") 
    } 
    .responseJSON { response in 
     print("Response JSON: \(response.result.value)") 


     let array = response.result.value as! Array<NSDictionary> 
     for item in array 
     { 
      let Name = item["name"] 
      let ID = item["id"] 
      let Order = item["order"] 
      let Subcategories = item["subcategory"] as! Array<NSDictionary> 
      for subCategory in Subcategories 
      { 
       let subId = subCategory["id"] 
      } 

     } 
} 

そして、ここに遊び場の結果があります:enter image description here

乾杯。

+0

ありがとうございました –

+0

データの迅速なモデルを生成するためにhttps://github.com/insanoid/SwiftyJSONAcceleratorを使用することをお勧めします。データをオブジェクトに直接解析するのは簡単で簡単な方法です。 – MAB

+0

ここで私のアプリでは、モデルクラスを作成せずにやっています。データモデルにデータを取り込むことはあまりありません。もしあなたがこのことについて説明したり、リンクを送ったりできたら –

関連する問題