Быстрая проблема с добавлением свойства изображения в массив объектов класса - PullRequest
0 голосов
/ 06 февраля 2019

Я разрабатываю приложение для работы вместе с веб-сервисом.Я успешно получаю данные API, но я пытаюсь сохранить их как массив объектов класса.

Я установил класс (ItemType) для хранения данных из API, который имеет четыре свойства, одноиз которых UIImage (var iconImage: UIImage? = nil).У меня также есть пустой массив (itemArray) для хранения объектов класса.Приложение делает вызовы API, используя Alamofire и AlamofireImage.У меня есть функция, которая делает вызов, получает JSON, создает экземпляр класса там, используя значения JSON, а затем добавляет его в массив.

//First grab the JSON objects from the api and populate the itemArray

func getPlasticItems(url: String) {

    Alamofire.request(url, method: .get).responseJSON { response in

        if let data = response.data {

            do {
                let itemTypeJSON = try JSON(data: data)


                for (index, subJson) in itemTypeJSON {


                    let newItemType = ItemType()
                    let imagePath : String = "//someURL"
                    let imageURL: String = "\(imagePath)\(newItemType.imagFileName)"
                    newItemType.name = subJson["name"].string!
                    newItemType.id = subJson["id"].int!
                    newItemType.imagFileName = subJson["imgFileName"].string!


                    Alamofire.request(imageURL, method: .get).responseImage { response in
                        guard let image = response.result.value else {
                            // Handle error
                            return
                        }

                        newItemType.iconImage = image


                    }
                    self.itemArray.append(newPlasticType)
                    // If I try this here I get an out of index error: self.imageTester.image = self.itemArray[3].iconImage
                }

            } catch {
                print(error)
            }

        } else {
            print("Error \(String(describing: response.result.error))")
        }
        // The same here: self.imageTester.image = self.itemArray[3].iconImage
    }
}

Кажется, это работает нормально, и я могу получить доступсвойства объектов из созданного массива.За исключением свойства UIImage, которое всегда отображается как ноль, если я не получаю к нему доступ из вызова - я проверяю это, назначая изображение для UIImageView с именем imageTester.

...