данные не анализируются, я хочу проанализировать данные в словарь, затем в массив, а затем выполнить итерацию

#ios #swift #alamofire #swifty-json

#iOS #swift #alamofire #swifty-json

Вопрос:

данные не анализируются, я хочу проанализировать данные в словарь, затем в массив, а затем выполнить итерацию и сохранить их в пользовательском массиве. из структурированного JSON {"stores" : [{},{}]}

Код:

 Alamofire.request(NEARBY_STORES, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: headers).responseJSON{ (response) in

        if response.result.error == nil {
            print(response)
      if let dict = response  as? NSDictionary
      { print("dict saved")
        if let stores = dict["stores"] as? Array<AnyObject>
        {
            for items in stores
            {
            let storeName = items["name"] as? String

            let storeCover = items["cover"] as? String

            let minimumOrder = items["min_order_amt"] as? String

            let  storeRating = items["average_rating"] as? String

            let storeSpeed = items["delievery_time"] as? String

            let  storeLogo = items["logo"] as? String


                let shoplist = shopModel(shopName: storeName!, shopBGImage: storeCover!, shoplogo: storeLogo!, speed: storeSpeed!, accuracy: storeRating!, minimumOrder: minimumOrder!)
                self.shopLists.append(shoplist)
                print("PARSED")
 

Комментарии:

1. опубликуйте ожидаемый json

2. ОТВЕТ JSON ХОРОШИЙ, НО ОН НЕ ПЕРЕДАЕТ ЕГО В СЛОВАРЬ, А ЗАТЕМ В МАССИВ

3. Я думаю, что что-то не так с объявлением типов словаря и массива

4. Не используйте NSDictionary, предпочитает словарь (например [String: Any] , показать JSON, иначе мы не можем догадаться, что не так.

5. Пожалуйста, отправьте json. Пока вы не опубликуете это, мы не сможем направлять вас.

Ответ №1:

Заменить, если let dict = response как? NSDictionary с if let dict = response.result.value как? NSDictionary и проверьте

Комментарии:

1. если let stores = dict[«stores»] как? Array<AnyObject> пожалуйста, помогите мне преобразовать это в массив

Ответ №2:

Я обычно использую SwiftyJSON для выполнения этого анализа.

             if let result = response.result.value {
                let dict = JSON(result)
                print(dict)
                //you can try to print your stores and continue with your logic
                let stores = dict["stores"]

            }
 

Ответ №3:

 if let dict = response  as? [String,Any]{
    if let stores = dict["stores"] as? [[String:Any]]{
        for items in stores{
            //Do stuff here
        }
    }
}
 

Ответ №4:

Попробуйте это:

 Alamofire.request(NEARBY_STORES, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: headers).responseJSON{ (response) in

    if response.result.error == nil {
        print(response)
  if let dict = response  as? Dictionary<String, Any> ?? [:]
  { print("dict saved")
    if let stores = dict["stores"] as? Array ?? []
    {
        for items in stores
        {
        let itemDict = items as? Dictionary<String, Any> ?? [:]
        let storeName = itemDict["name"] as? String

        let storeCover = itemDict["cover"] as? String

        let minimumOrder = itemDict["min_order_amt"] as? String

        let  storeRating = itemDict["average_rating"] as? String

        let storeSpeed = itemDict["delievery_time"] as? String

        let  storeLogo = itemDict["logo"] as? String


            let shoplist = shopModel(shopName: storeName!, shopBGImage: storeCover!, shoplogo: storeLogo!, speed: storeSpeed!, accuracy: storeRating!, minimumOrder: minimumOrder!)
            self.shopLists.append(shoplist)
            print("PARSED")