在 CoreData 中使用单个实体时如何保持重新排序项目?
Posted
技术标签:
【中文标题】在 CoreData 中使用单个实体时如何保持重新排序项目?【英文标题】:How to persist reordering items when using a single entity in CoreData? 【发布时间】:2017-11-09 10:05:06 【问题描述】:用户可以在 UITableView 中重新排序项目,数据来自单个实体。我想将用户定义的顺序(通过移动项目)保留回CoreData,这样当我取回记录时,顺序就是用户定义的顺序。我知道您可以通过在模型中添加一个整数属性来简单地做到这一点,但是如果我有很多记录,那将是低效的,因为我必须更新所有其他记录。有没有一种优雅的方法可以实现这一点,而不必使用我提到的方法?谢谢
【问题讨论】:
【参考方案1】:如果这些项目与其他项目相关,您可以使用来自该其他项目的有序对多关系。这是 Core Data 提供的唯一选项。
不管怎样,如果您添加一个排序索引,您不需要在用户更改订单时更新“所有”其他记录。您只需要更新更改的开始和结束位置之间的那些。例如,如果用户将某物从索引 2 移动到索引 12,则索引 1 处的项目仍位于索引 1,并且索引 13 到 800 亿处的项目也具有相同的索引。
【讨论】:
以上是关于在 CoreData 中使用单个实体时如何保持重新排序项目?的主要内容,如果未能解决你的问题,请参考以下文章
RestKit + CoreData:操作成功时替换实体内容,失败时保持原样