Я разрабатываю приложение для работы вместе с веб-сервисом.Я успешно получаю данные 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.