我有一个带有NSFetchedResultsController的UITableView。
当控制器离开屏幕时,我按照建议辞职为取得的控制器代表。 因此,我完全依赖于上下文通知和reloadData。
基本上,我分析了通知,并在插入/更新/删除的对象中设置了一个标志needsReload = YES,表中有一个相关的实体和属性。 在viewWillAppear上,我检查这个变量并调用reloadData。
然而,NSFetchedResultsController在NSManagedObject属性'pname'上有一个排序顺序。
当在其他视图控制器中我更新pname时说从0name到Zname,我可以拦截上下文确实更改通知,并在下一个viewWillAppear正确地重新加载表。
问题是我希望单元格因为排序顺序而在底部,但是它仍然在顶部更新,我想因为reloadData只更新可见单元格。我该如何解决这个问题?
答案 0 :(得分:7)
如果将其委托设置为nil
,则获取的结果控制器不再跟踪托管对象上下文中的更改。
因此,在重新分配代表后,您必须致电
[self.fetchedResultsController performFetch:&error]
首先
[self.tableView reloadData];