首页 > 解决方案 > Firebase 存储图像在集合视图中的随机顺序

问题描述

在我的 firebase 数据库中,我有几个项目,每个项目都有一个名称和一个图像。在我的应用程序中,我想在一个集合视图中显示所述参数,每个单元格中都有一个图像视图和一个标签。我可以在标签中显示每个项目的名称,也可以在 imageview 中显示项目图像,但是从 firebase 下载的图像每次都以随机顺序出现。标签每次都以正确的固定顺序显示项目名称。每个项目都有一个名为“image”的子项和一个名为“storage”的子项,该子项存储来自 firebase 存储的图像 url。下载图片的代码:

func downloadImg() {
    let ref = Database.database().reference().child(itemNumber1)
    ref.observeSingleEvent(of: .value) { (snapshot) in
        for item in snapshot.children {
            let snap = item as! DataSnapshot
            let imageSnap = snap.childSnapshot(forPath: "image/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.imageArray.append(image!)
                        self.collectionView?.reloadData()
                    }
                }
            }
        }
    }
}

正如我所说,代码工作正常,但我希望图像每次都以相同的顺序显示,并且与它们存储在存储/数据库中的顺序相同。我尝试将 url 常量附加到一个空数组并打印它,这个数组按我想要的顺序打印存储 url。然而,当图像本身附加到 imageArray 时,似乎会发生一些事情。

标签: iosswiftfirebasefirebase-realtime-database

解决方案


推荐阅读