我有一个名为Person的CoreData条目,我使用NSFetchedResultsController获取它,其中fetchRequest按属性“name”排序。然后我在表格视图单元格中显示“名称”。
当我更改实体的“名称”属性并重新排序行时,NSFetchedResultsControllerDelegate
会给我一个NSFetchedResultsChangeType.move
。但是单元格上显示的“名称”已过时,这意味着我没有收到NSFetchedResultsChangeType.update
Table View Programming Guide: Inserting and Deleting Rows and Sections表示批量更新首先进行更新,然后删除,最后进行插入。
在处理行或节的删除之前,它会延迟任何行或节的插入。表视图的行为与在更新块内部调用的重新加载方法的行为相同 - 在执行动画块之前,相对于行和段的索引进行重新加载。无论插入,删除和重新加载方法调用的顺序如何,都会发生此行为。
了解NSFetchedResultsController
发送通知的方式,尤其是有关插入,删除,更新和排序的顺序。移动?
或者我如何有效地使用某种代码(意味着部分更新,而不是重新加载所有数据)来解决这个特殊问题?
答案 0 :(得分:0)
您的设置不合标准。 sectionNameKeyPath
实际上适用于部分而不是行。获取Person
实体,并通过itemForRowAtIndexPath
直接使用个人姓名填充单元格。
然后,您将获得预期的更改类型。