gpt4 book ai didi

ios - didSelectRowAtIndexPath 方法与使用 Swift 2 的 Parse 中的 Load More 函数冲突

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

我正在使用 Parse 创建我的应用程序。我的应用程序工作正常,直到我使用 didSelectRowAtIndexPath 方法,一旦我使用该方法将数据传递到另一个 View Controller 以显示详细信息,当我点击“加载更多”行时,我收到错误:

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 13 beyond bounds [0 .. 12]'

我用谷歌搜索了一下,有人说:'问题可能出在您的 tableView:didSelectRowAtIndexPath: 方法中。当点击任何行时(包括 loadMore 单元格),将调用此函数。您可能想要检查正在点击的单元格是否是“加载更多”单元格,在这种情况下返回(并让对 super 的调用处理加载更多数据)。'

这对我来说相当合理,但这家伙没有给出解决方案,这是 2 年前的答案,而我现在正在使用 Swift。

这是我的代码,有人可以帮助我吗?谢谢。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

var targetObject = objectAtIndexPath(indexPath)!

gameIdSelected = targetObject["GameId"] as! String

performSegueWithIdentifier("segue", sender: self)
}

最佳答案

您的答案仍然包含解决方案

This is called when any of your rows is tapped - including the loadMore cell

如果您的数据数组仅包含 13 个项目(从 0 到 12),如果您包含一个 loadmore 单元格,它将不起作用,因为您将有 14 个单元格,而不是 13 个。因此,如果您点击 loadmore 单元格,它会起作用。将尝试访问数组的第 14 个项目,但您只有 13 个项目,因此这就是出现此索引错误的原因。

如果您的单元格是 loadmore 单元格,请不要调用 objectAtIndex。像这样的事情:

if indexPath.row == 13 {
//Do loadmore stuff
} else {
var targetObject = objectAtIndexPath(indexPath)!

gameIdSelected = targetObject["GameId"] as! String

performSegueWithIdentifier("segue", sender: self)
}

当然不要硬编码 loadmore 值,但我不知道你的数据源名称。通常我们会做这样的事情:

if indexPath.row == yourDataSourceArray.count()

关于ios - didSelectRowAtIndexPath 方法与使用 Swift 2 的 Parse 中的 Load More 函数冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33184485/

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