gpt4 book ai didi

swift - 仍然收到错误空数组

转载 作者:行者123 更新时间:2023-11-30 12:33:33 24 4
gpt4 key购买 nike

我在 tableView 中仍然遇到错误,但我不明白为什么:

@objc class MyViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

var productsToDisplay: [SKProduct]!

override func viewWillAppear(_ animated: Bool) {
// an assync call to load products to the productsToDisplay
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "PurchaseItemTableViewCell", for: indexPath) as? PurchaseItemTableViewCell else {
fatalError("Coulnd't parse table cell!")
}

// here the app always show an error without any specification
if(!(self.productsToDisplay != nil && self.productsToDisplay!.count > 0)) {
return cell
}

cell.nameLabel.text = "my text"

return cell

}

}

我做错了什么?或者如何修复错误/在加载数据之前不加载表的内容?

非常感谢

最佳答案

基本上永远不会永远不会将数据源数组声明为(隐式解包)可选。将其声明为非可选空数组:

var productsToDisplay = [SKProduct]()

好处是非可选类型不会崩溃。

<小时/>

numbersOfRows中返回项目数:

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return productsToDisplay.count
}

如果数组为空,则永远不会调用cellForRow

<小时/>

cellForRow中,首先设置标签,然后返回单元格,并且不需要检查0和nil:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PurchaseItemTableViewCell", for: indexPath) as! PurchaseItemTableViewCell
let product = productsToDisplay[indexPath.row]
cell.nameLabel.text = product.name // change that to the real property in SKProduct
return cell

}

关于swift - 仍然收到错误空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43144961/

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