2016-06-25 2 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)") 

       } 
      } 

Но после получения данных ответа я не в состоянии получить какую-либо ценность. Здесь я хочу получить все данные, такие как имя, идентификатор и подкатегорию - как это реализовать?

+0

Если мне нужно сохранить все имена в массиве, чтобы я мог использовать его для отображения в виде таблицы. Как я могу это сделать. @MAB –

+0

Вы приняли ответ на свой вопрос. Не изменяйте значение своего вопроса сейчас. Если у вас есть новые проблемы, * публикуйте новый вопрос, * не уменьшайте этот. – Moritz

+0

хорошо. Я думал, что проблема находится в пределах одного и того же критерия. @ EricD –

ответ

1

У вас есть несколько проблем. Первый ответ типа Response<Anyobject, NSError>, это не разобранный объект, который вы ищете, вместо этого вы должны использовать response.result.value, как и для журнала. Во-вторых, даже если вы пытались бросить response.result.value в Array<Dictionary<String,String>> это не пройдет, потому что в ваших данных JSon у вас есть апп внутренний массив subcategory, который не может быть преобразован в Dictionary<String, String>

Этот код должен работать для вас:

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

Cheers.

+0

спасибо Это сработало –

+0

Я рекомендую использовать https://github.com/insanoid/SwiftyJSONAccelerator для создания быстрой модели для ваших данных, это простой и быстрый способ анализа данных непосредственно на объекты. – MAB

+0

Здесь, в моем приложении, я делаю без создания модели. У меня нет большой идеи, чтобы извлекать данные в модели данных. Если вы можете объяснить или отправить ссылку на это сообщение –

Смежные вопросы