批量更新表行,重新排序&同时更新?

时间:2016-11-27 14:01:17

标签: ios uitableview core-data nsfetchedresultscontroller

描述

我有一个名为Person的CoreData条目,我使用NSFetchedResultsController获取它,其中fetchRequest按属性“name”排序。然后我在表格视图单元格中显示“名称”。

问题

当我更改实体的“名称”属性并重新排序行时,NSFetchedResultsControllerDelegate会给我一个NSFetchedResultsChangeType.move。但是单元格上显示的“名称”已过时,这意味着我没有收到NSFetchedResultsChangeType.update

Table View Programming Guide: Inserting and Deleting Rows and Sections表示批量更新首先进行更新,然后删除,最后进行插入。

  

在处理行或节的删除之前,它会延迟任何行或节的插入。表视图的行为与在更新块内部调用的重新加载方法的行为相同 - 在执行动画块之前,相对于行和段的索引进行重新加载。无论插入,删除和重新加载方法调用的顺序如何,都会发生此行为。

问题

了解NSFetchedResultsController发送通知的方式,尤其是有关插入,删除,更新和排序的顺序。移动?

或者我如何有效地使用某种代码(意味着部分更新,而不是重新加载所有数据)来解决这个特殊问题?

1 个答案:

答案 0 :(得分:0)

您的设置不合标准。 sectionNameKeyPath实际上适用于部分而不是。获取Person实体,并通过itemForRowAtIndexPath直接使用个人姓名填充单元格。

然后,您将获得预期的更改类型。