我已经搜索了一段时间,但我不知道该如何处理。我有一个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数据库,其中包含一些数据以及指向存储在存储中的图像的链接。我想要我的...
您将观察者嵌套在嵌套的数据上,这似乎是浪费代码。当您将观察者附加到某个位置时,该位置下的所有数据都已加载。