1

我有一个带有 NSFetchedResultsController 支持的 UITableView。

当控制器离开屏幕时,我按照建议辞去获取的控制器代表的职务。因此我完全依赖上下文通知和 reloadData。

基本上,当在插入/更新/删除的对象中存在表的相关实体和属性时,我分析通知并设置标志需要重新加载=YES。在 viewWillAppear 我检查这个变量并调用 reloadData。

但是 NSFetchedResultsController 对 NSManagedObject 属性“pname”有一个排序顺序。

当在其他视图控制器中我将 pname 说从 0name 更新为 Zname 时,我可以拦截上下文确实更改通知,并且表在下一个 viewWillAppear 时正确重新加载。

问题是我希望单元格由于排序顺序而位于底部,但我想它仍然在顶部更新,因为 reloadData 只更新可见单元格。我该如何解决这个问题?

4

1 回答 1

7

如果您将其委托设置为 ,则获取的结果控制器不再跟踪托管对象上下文中的更改nil

因此,在重新分配委托后,您必须调用

[self.fetchedResultsController performFetch:&error]

先后

[self.tableView reloadData];
于 2012-09-02T07:05:06.787 回答