从Firebase下载图像并将其添加到阵列

时间:2018-12-17 16:15:37

标签: ios swift firebase

基本上,到目前为止,我得到的是一个数组,其中包含原型单元所必需的所有数据。我从Firebase检索该数据(图像,名称和品牌)。现在,我创建了一个循环以从数据库中检索所有内容,但是现在的问题是,我无法将“图像”添加到我的“ tempShopCells.append()”方法中,因为它位于该循环中并且无法访问。 代码:

Note

1 个答案:

答案 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)
}