基本上,到目前为止,我得到的是一个数组,其中包含原型单元所必需的所有数据。我从Firebase检索该数据(图像,名称和品牌)。现在,我创建了一个循环以从数据库中检索所有内容,但是现在的问题是,我无法将“图像”添加到我的“ tempShopCells.append()”方法中,因为它位于该循环中并且无法访问。 代码:
Note
答案 0 :(得分:0)
在初始化_data
中的图像后,将行添加到数组中的新元素上移动行
if let _data = data {
let image: UIImage! = UIImage(data: _data)
tempShopCells.append(ShopCell(productName: name, brandName: brand, productImage: image))
}
还请注意,检索图像的数据是异步任务,因此完成数据将为空数组。
因此,我建议您使用DispatchGroup
。
首先创建新的DispatchGroup
。然后,在请求图像数据之前,先输入到dispatchGroup
,然后在收到数据后离开 dispatchGroup
。收到每个图像的数据后,请在completion
dispatchGroup.notify(queue:)
let dispatchGroup = DispatchGroup()
for child in snapshot.children.allObjects as! [DataSnapshot] {
...
dispatchGroup.enter()
imageReference.getData(maxSize: (1 * 1024 * 1024)) { (data, error) in
... // error, appending to array, etc.
dispatchGroup.leave()
}
}
dispatchGroup.notify(queue: .main) {
completion(tempShopCells)
}