Firebase存储映像不会追加到数组中

问题描述 投票:0回答:1

因此,我正在尝试下载一组图像以显示在我的应用程序的collectionview中。我将图像保存在firebase存储器中,并将它们的url保存在数据库中每个项目节点中“ img”节点下的位置,并以url作为键的子级“ storage”。

我首先创建了一个空的UIImage数组:var somePicArray = [UIImage](),然后通过此功能将图片附加到该数组:

func test() {
    let penis = Database.database().reference().child("kategorier").child("brus")
    penis.observeSingleEvent(of: .value) { (snapshot: DataSnapshot) in
        for item in snapshot.children {
            let snap = item as! DataSnapshot
            let imageSnap = snap.childSnapshot(forPath: "img/storage")
            if let url = imageSnap.value as? String {
            let someRef = self.storageRef.reference(forURL: url)
                someRef.getData(maxSize: 10 * 10024 * 10024) { data, error in
                    if let error = error {
                        print(error)
                    } else {
                        let image = UIImage(data: data!)
                        self.testPicArray.append(image!)
                        self.collectionView?.reloadData()
                    }
                }
            }
        }
    }
}

直到“ if let url”行为止,一切正常,因为我尝试在此if语句中打印url,并且它将所有url完美地打印为字符串。

但是我对第二部分不确定。我在应用程序的其他地方使用了此代码块来显示Firebase存储中的图片,效果很好。但是,它似乎在此功能中不起作用,并且我不确定自己在做什么错。

为了显示单元格中的图像,我尝试在collectionview cellforitematindexpath方法中使用以下代码:

cell.cellimage.image = somePickArray[2] 

[我只是在数组中选择了一个随机数,看是否可以显示任何图片,但是它崩溃时说这行的索引超出范围,我认为这是因为数组为空。

ios swift firebase firebase-storage
1个回答
0
投票

当vc出现时,数组为空,因此>

cell.cellimage.image = somePickArray[2] 

将在数组填充数据之前崩溃,您需要确保这样做

return somePickArray.count 

numberOfItemsAtRow内部

© www.soinside.com 2019 - 2024. All rights reserved.