gpt4 book ai didi

ios - 如何将 newIndexPath 用于 NSFetchedResultsChangeUpdate?

转载 作者:可可西里 更新时间:2023-11-01 04:22:43 29 4
gpt4 key购买 nike

我以为我got it .但是我在我的应用程序中发现的一个新崩溃表明情况并非如此。因此,当 newIndexPath 为非零且与 Controller 中的 indexPath 不同时,任何人都知道 NSFetchedResultsChangeUpdate 的真正正确代码: didChangeObject:atIndexPath:forChangeType:newIndexPath:?

最佳答案

我刚刚在更新时遇到了崩溃,当该索引路径与检索所需的索引路径不匹配时,似乎 newIndexPath 被提供为获取的结果 Controller 对象的索引路径表中的单元格。请考虑以下事项:

  1. TableView 在索引 0 处有一个包含 15 个项目的部分。
  2. 删除索引 13 处的项目(倒数第二个项目)
  3. 索引 14 处的项目(最后一项)已更新

在上述情况下,假设您在适当的 controllerWill/DidChangeContent: 中使用 [tableView beginUpdates][tableView endUpdates]方法,您将需要使用 indexPath 参数从表中检索要更新的单元格(这将是第 0 节,索引 14),并使用 newIndexPath 参数检索使用结果 Controller (将是第 0 节,索引 13)配置单元格的对象。

我假设它是这样工作的,因为就结果 Controller 而言,删除似乎已经发生,但在 TableView 中还没有发生(由于 beginUpdates/endUpdates 调用包装更新)。如果您考虑上述情况,这是有道理的,但似乎所有文档都没有考虑这种情况。

所以问题的答案是,您似乎应该使用 indexPath 参数从 TableView 中检索单元格,并使用 newIndexPath 参数检索来自获取的结果 Controller 的对象。请注意,如果没有插入或删除,它似乎会为 newIndexPath 传递 nil,因此在这种情况下,您必须使用 indexPath用于这两个目的。

关于ios - 如何将 newIndexPath 用于 NSFetchedResultsChangeUpdate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12438827/

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