Как проанализировать вложенный JSON с помощью пользовательского блока завершения с JSONDecoder? - PullRequest
0 голосов
/ 09 июля 2019

у меня есть вложенный объект json, и мне нужно разобрать и выполнить заполнение collectionViewCell с imageUrls в json мне нужно перебрать слишком большой список.recommendBannerImages и сохранить его во внешнем var, чтобы я мог использовать его в моем collectionViewCells

1 Ответ

0 голосов
/ 09 июля 2019

Сначала вы пишете для этого функцию, и давайте предположим, что имя этой функции fetchData и ваша модель данных должны соответствовать протоколу Codable.

func fetchData(url: String, completion: @escaping(Result<[DataModel], Error>)->()){
guard let url = URL(string: url) else { return }
    URLSession.shared.dataTask(with: url){(data, response, error) in
        if error != nil{
            completion(.failure(error!))
            print(error!)
        } else{
            guard let _ = response as? HTTPURLResponse, let jsonData = data  else { return }
            let yourDataModel = try? JSONDecoder().decode([DataModel].self, from: jsonData)
            guard let dataModels = mainPageContentData else { return } //dataModels is array of DataModel
            completion(.success(dataModels)) // And we send this array to completion blocks
        }
        }.resume()
}

И вам следует использовать эту функцию следующим образом

        fetchData { (result) in //Trailing closure syntax
        switch result {
        case .failure(let error):
            print(error)
        case .success(let datas):
            for data in datas{
              print(data)
              }
         }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...