查看对象 – UICollectionView
我试图将对象添加到数组,以便使用UICollection View查看它们。 我使用Firebase使用此代码:
// Retrieve the products and listen for changes databaseHandle = ref?.child("Products").observe(.childAdded, with: { (snapshot) in // Code to execute when new product is added let prodValue = snapshot.value as? NSDictionary let prodName = prodValue?["Name"] as? String ?? "" let prodPrice = prodValue?["Price"] as? Double ?? -1 let prodDesc = prodValue?["Description"] as? String ?? "" var prodToAddToView = Product(name: prodName, price: prodPrice, currency: "USD", description: prodDesc, location: "USA") self.products.append(prodToAddToView) })
但是当循环完成时,不会显示任何对象。 另一方面,使用此代码:
var pr = Product(name: "a", price: 3, currency: "3", description: "SDF", location: "ASD") products.append(pr)
该对象显示在UICollectionView中。 如果我以与第二种方法相同的方式添加更多产品,也会显示它们。 我错过了什么? 在范围内添加一个对象不会影响外部的数组吗?
另外 – 在调试的时候,我在observe函数中看到prodToAddToView创建好了。
产品类型[产品]
编辑:
这段代码在我的“ViewDidLoad”函数中,因为我想在加载视图之前加载所有产品。
你需要更新你的collectionView在self.products.append(prodToAddToView)
下面的主线程中添加self.collectionView.reloadData()
self.products.append(prodToAddToView)
DispatchQueue.main.async { self.collectionView.reloadData() }
完整代码
databaseHandle = ref?.child("Products").observe(.childAdded, with: { (snapshot) in // Code to execute when new product is added let prodValue = snapshot.value as? NSDictionary let prodName = prodValue?["Name"] as? String ?? "" let prodPrice = prodValue?["Price"] as? Double ?? -1 let prodDesc = prodValue?["Description"] as? String ?? "" var prodToAddToView = Product(name: prodName, price: prodPrice, currency: "USD", description: prodDesc, location: "USA") self.products.append(prodToAddToView) DispatchQueue.main.async { self.collectionView.reloadData() } })