仅从Firebase数据库Swift中下载所有内容后才重新加载TableView数据

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

我已经搜索了一段时间,但我不知道该如何处理。我有一个Firebase数据库,其中包含一些数据以及指向存储在存储中的图像的链接。我希望从数据库下载每个图像后,不仅是第一个图像,都可以重新加载UICollectionView。

newRef.observeSingleEvent(of: .value, with: { (snapshotOne) in
        for child in snapshotOne.children {
            let snap = child as! DataSnapshot
            let key = snap.key

            newRef.child(key).observeSingleEvent(of: .value, with: { (snapshotTwo) in
                for child in snapshotTwo.children {
                    let snappotto = child as! DataSnapshot
                    var imageDownloaded: UIImage?

                    if let dictionary = snappotto.value as? [String : AnyObject] {
                        let url = URL(string: dictionary["imageURL"] as! String)
                        URLSession.shared.dataTask(with: url!) { (data, response, error) in
                            if error != nil {
                                print("[Error]: \(String(describing: error))")
                                return
                            }

                            imageDownloaded = UIImage(data: data!)

                            let person = Person(name: dictionary["name"] as! String, surname: dictionary["surname"] as! String, tags: [.castana], image: imageDownloaded!)
                            self.storedData.append(person)

                            self.filteredData = self.storedData

                            DispatchQueue.main.sync {
                                UIApplication.shared.endIgnoringInteractionEvents()
                                self.collectionView.reloadData()
                                self.dismiss(animated: false, completion: nil)
                            }

                        }.resume()
                    }
                }
            }) { (error) in
                print("[Error]: \(String(describing: error))")
            }
        }
    }) { (error) in
        print("[Error]: \(error)")
    }

这是我使用的代码,但是只有下载了第一个图像后,它才会更新UICollectionView,并且它结束了IgnoringInteractionEvents-并允许用户一次又一次地重新加载数据,这会导致很多图像重复。] >

从数据库中的每个项目下载后,如何移动重新加载和endIgnoringInteractionEvents?

数据库的结构如下:

| folder
-| user
--| autoId
---| name
---| surname
---| imageUrl
--|autoId
---| name
---| surname
---| imageUrl
-| user
--| autoId
---| name
---| surname
---| imageUrl

非常感谢,NicopDev

我已经搜索了一段时间,但我不知道该如何处理。我有一个Firebase数据库,其中包含一些数据以及指向存储在存储中的图像的链接。我想要我的...

swift firebase firebase-realtime-database firebase-storage
1个回答
1
投票

您将观察者嵌套在嵌套的数据上,这似乎是浪费代码。当您将观察者附加到某个位置时,该位置下的所有数据都已加载。

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