使用UISegmentedControl切换NSFetchedResultsController

发布于 2024-10-14 23:48:39 字数 534 浏览 5 评论 0原文

在我看来,我有一个表视图和一个分段控件。 表视图从 NSFetchedResultsController 获取数据。

当单击分段控件时,我尝试更改为另一个 NSFetchedResultsController (它使用另一个谓词、排序描述符甚至另一种类型的实体)。

类似于此问题的答案之一中所建议的内容.

我还定义了自己的枚举,以跟踪表视图所处的状态(当前选择的段)。

问题是,当表视图重新加载其数据时,我得到一个“NSInternalInconsistencyException”,因为节数和/或行数已从 X 更改为 Y - 但“(0 插入,0 删除)”。

我的问题是:

  • 是否有可能按照我尝试的方式解决这个问题?
  • beginUpdates、endUpdates 和 reloadData 应该去哪里(与 NSFetchedResultsController 的切换相关)?
  • 谁有更好的解决方案来解决这个问题?

提前致谢!

In my view I have a table view along with a segmented control.
The table view is getting its data from an NSFetchedResultsController.

When clicking the segmented control I try to change to another NSFetchedResultsController (which is using another predicate, sort descriptor and even another type of entity).

Something like suggested in one of the answers to this question.

I also have typedefed my own enum, to keep track of which state the table view is in (which segment that currently is selected).

The problem is, when the table view reloads its data, I get an "NSInternalInconsistencyException", since the number of sections and/or the number of rows have changed from X to Y - but "(0 inserted, 0 deleted)".

My questions are:

  • Is it even possible to solve this the way I'm trying to?
  • Where should the beginUpdates, endUpdates and reloadData go (in relation to the switch of NSFetchedResultsController)?
  • Anyone with better solutions to this problem?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

掐死时间 2024-10-21 23:48:39

如果您正在延迟加载 FRC,则终止 FRC 并在 UITableView 上调用 reloadData 以获取新的 FRC 以及要使用的新谓词/排序描述符。

这与使用 UISearchBar 时执行的操作相同,如 这个问题

If you are doing lazy loading of the FRC, then kill the FRC and call reloadData on the UITableView to get the new FRC with the new predicates/sort descriptors to be used.

This is the same thing you do when using a UISearchBar, as answered in this question

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文