быстрое получение всех значений словаря и передача в viewcontroller с помощью almaofire - PullRequest
0 голосов
/ 27 мая 2018

Привет, есть приложение, которое собирает данные из API, и я использую Alamofire и swiftyJSON.текущая проблема, с которой я сталкиваюсь сейчас, состоит в том, что у меня есть разные словари в одном массиве, и я хочу иметь возможность перенастроить определенные элементы в словаре.это массив, с которым я работаю

Json

[
    {
        "images": [
            {
                "id": 8,
                "original": "http://127.0.0.1:8000/media/images/products/2018/05/f3.jpg",
                "caption": "",
                "display_order": 0,
                "date_created": "2018-05-26T17:24:34.762848Z",
                "product": 13
            },
            {
                "id": 9,
                "original": "http://127.0.0.1:8000/media/images/products/2018/05/f5.jpg",
                "caption": "",
                "display_order": 1,
                "date_created": "2018-05-26T17:24:34.815214Z",
                "product": 13
            },
            {
                "id": 10,
                "original": "http://127.0.0.1:8000/media/images/products/2018/05/f2.jpg",
                "caption": "",
                "display_order": 2,
                "date_created": "2018-05-26T17:25:19.117271Z",
                "product": 13
            },
            {
                "id": 11,
                "original": "http://127.0.0.1:8000/media/images/products/2018/05/f4.jpg",
                "caption": "",
                "display_order": 3,
                "date_created": "2018-05-26T17:25:19.155159Z",
                "product": 13
            }
        ]
    }
]

получить одно изображение, как это

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

        if response.result.error == nil {

            guard let data = response.data else {return}
            do {

                if let json = try JSON(data: data).array {
                    for item in json {

 let images = item["images"][0]["original"].stringValue


 ....

это возвращает толькопроиндексированное изображение. [0]если он установлен в [1], он возвращает индексированное изображение в 1.

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

1 Ответ

0 голосов
/ 27 мая 2018

Вы можете изменить это так:

if let json = try? JSON(data: data).arrayValue {


        for item in json {
            let imagesList = item["images"].arrayValue

            let imagesURL = imagesList.map {$0["original"].string}.compactMap({$0})
             if imagesURL.count > 0{
                print( imagesURL[0])
            }


        }
    }

Или:

do {
            let json  = try JSON(data: data).array

            json?.forEach({ (item) in
                let imagesList = item["images"].arrayValue

                let imagesURL = imagesList.map {$0["original"].string}.compactMap({$0})
                  if imagesURL.count > 0{
                print( imagesURL[0])
                }
            })
  } catch  {
          print(error.localizedDescription)
}
...