gpt4 book ai didi

ios - SWIFT:计算 tableView 的 numberOfRowsInSection 时数组索引超出范围

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

我正在尝试根据上一屏幕上选择的特定类别类型(例如卧室装饰、厨房用品、客厅家具等)来计算 numberOfRowsInSection。我已经使用上一屏幕中的prepareForSegue传递了一个索引,并使用以下命令来获取所选的类别类型:

let category = categoryData[index!]
let categoryType = category.category

然后,我使用供应商数据结构交叉引用该类别类型,以在 tableView 中显示该特定类别的所有供应商。以下是确定 numberOfRowsInSection 的函数:

//pulls the data from the Category and Vendor data structures which both contain a "category" item
let categoryData = Data().headerData
let vendorData = Data().vendorData

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows

let category = categoryData[index!]
let categoryType = category.category

var count: Int = 0

for (var i=1; i <= vendorData.count; i++) {

if vendorData[i].category == categoryType {

count = count + 1
}
}

return count
}

它成功运行,但是一旦到达供应商列表屏幕,它就会崩溃,并且控制台显示“数组索引超出范围”。我在 Playground 上对此进行了测试,看起来效果很好。

对于完整的上下文,一旦确定了正确的行数,我将运行以下命令来填充每个单元格:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("vendorCell", forIndexPath: indexPath) as! VendorSelectionTableViewCell

let category = categoryData[index!]
let categoryType = category.category

let vendorEntry = vendorData[indexPath.row]

if vendorEntry.category == categoryType {

cell.vendorName.text = vendorEntry.name

} else {
cell.vendorName.text = "No Value"

}

return cell
}

最佳答案

Swift 数组从 0 开始计数,而不是从 1 开始计数。如果您将代码更改为

for (var i=0; i < vendorData.count; i++) {
if vendorData[i].category == categoryType {
count = count + 1
}
}

你应该没问题。不过,我不确定为什么它在 Playground 上起作用。也许您的 vendorData 为空。

关于ios - SWIFT:计算 tableView 的 numberOfRowsInSection 时数组索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31895277/

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