UITableView与NSFetchedResultsController reloadData但不移动单元格

Leo*_*rdo 1 objective-c uitableview nsfetchedresultscontroller nsnotificationcenter

我有一个UITableView支持NSFetchedResultsController.

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

基本上,我在插入/更新/删除的对象中分析通知并设置标志needsReload = YES,表中有相关​​的实体和属性.在viewWillAppear上,我检查这个变量并调用reloadData.

但是NSFetchedResultsController在NSManagedObject属性'pname'上有一个排序顺序.

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

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

Mar*_*n R 7

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

因此,在重新分配代表后,您必须致电

[self.fetchedResultsController performFetch:&error]
Run Code Online (Sandbox Code Playgroud)

先是然后

[self.tableView reloadData];
Run Code Online (Sandbox Code Playgroud)