我正在开发与Web服务一起使用的应用程序。我已经成功获取api数据,但正在努力将其保存为类对象的数组。
我已经设置了一个类(ItemType)来保存来自api的数据,该类具有四个属性,其中之一是UIImage(var iconImage:UIImage?= nil)。我也有一个空数组(itemArray)来保存类对象。该应用程序使用Alamofire和AlamofireImage调用api。我有一个函数可以进行调用,获取JSON,使用JSON值创建there类的实例,然后将其附加到数组。
//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属性始终显示为nil-我通过将图像分配给名为imageTester的UIImageView进行测试。