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

时间:2020-01-03 16:05:33

标签: ios swift firebase firebase-storage

因此,我正在尝试下载一组图像以显示在我的应用程序的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] 

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

1 个答案:

答案 0 :(得分:1)

当vc出现时,数组为空,所以

cell.cellimage.image = somePickArray[2] 

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

return somePickArray.count 

numberOfItemsAtRow