如何在swift的单独数组中保存NSDictionary项的数组

时间:2016-06-27 08:41:23

标签: arrays swift nsarray nsdictionary alamofire

我的json数据样本是

[
{
 "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": ""
                            }]
              }]
}]

这个Json不是整个数据。我只是简单地给出了样本数据。因为不可能发送所有数据。 我能够在每个特定项目的NSdDictionary数组中获取响应数据。之后,我试图保存每个特定数据,如所有名称,所有子类别名称,数组中的所有项目名称,以便我可以在表格视图中显示它。我使用了以下代码

Alamofire.request(.GET, myUrl, parameters:nil , encoding: .JSON)
        .validate()
        .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"]!
                print(Name)
                self.menuName.arrayByAddingObject(Name)  ///error below mentioned
                let ID = item["id"]!
                print(ID)
                let Order = item["order"]!
                print(Order)
                let Subcategories = item["subcategory"]! as! Array<NSDictionary>
                //print(Subcategories)
                for subCategory in Subcategories
                {
                    let subId = subCategory["id"]!
                     print(subId)
                    let subName = subCategory["name"]!
                     print(subName)

                    let subDesc = subCategory["description"]!
                    print(subDesc)
                    let suborder = subCategory["order"]!
                    print(suborder)
                    let SubItems = subCategory["item"]! as! Array<NSDictionary>
                    //print(SubItems)
                    for subItem in SubItems
                    {
                        let itemId = subItem["id"]!
                        print(itemId)
                        let itemName = subItem["name"]!
                        print(itemName)

                        let itemPrice = subItem["price"]!
                        print(itemPrice)
                        let itemOrder = subItem["order"]!
                         print(itemOrder)
                        let itemAddOn = subItem["addon"]!
                        print(itemAddOn)
                    }
                }

            }
             print("Names of menu are : \(menuName)")

我将menuName视为NSArray。错误来自"can't unwrap the optional value "。如何实现这个??

0 个答案:

没有答案