gpt4 book ai didi

ios - 对象查看 - UICollectionView

转载 作者:行者123 更新时间:2023-11-28 06:04:12 25 4
gpt4 key购买 nike

我正在尝试将对象添加到数组,以便使用 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 中。如果我按照第二种方法添加更多产品,它们也会显示出来。我错过了什么?在作用域内添加对象不会影响外部数组吗?

另外 - 在调试时,我看到观察函数中的 prodToAddToView 已经创建好了。

产品属于[产品]类型

编辑:

此代码在我的“ViewDidLoad”函数中,因为我想在加载 View 之前加载所有产品。

最佳答案

您需要在 self.products.append(prodToAddToView) 下的主线程中更新您的 collectionView addself.collectionView.reloadData()

    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()
}
})

关于ios - 对象查看 - UICollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48690711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com