如何更改coredata中的记录顺序?
Posted
技术标签:
【中文标题】如何更改coredata中的记录顺序?【英文标题】:How to change records order in coredata? 【发布时间】:2015-08-31 13:10:04 【问题描述】:我在核心数据中有一些记录,其中包含名称、内容、电子邮件、图像等。我在集合视图中显示了这些数据,在那里我提供了拖放/移动单元格功能。现在如何更新核心数据中重新排序/重新排列的数据?请帮忙。
【问题讨论】:
您需要有一个 itemOrder 属性,该属性根据索引路径存储到每条记录的位置,然后后续提取应按相同属性排序。 【参考方案1】:CoreData 没有任何排序。
您要做的就是对获取的数据进行排序。例如,如果您使用NSFetchRequest
,您可以添加一个NSSortDescriptors
数组,指定获取数据的排序顺序
所以,例如:
NSFetchRequest *request = ....
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
编辑:评论后:
如果必须将排序保留到 CoreData 存储,我看到的唯一方法是在您的模型中添加一个整数属性。默认情况下,您可以将其留在-1
,即无订单。
当您在 UI 中执行拖放操作时,您可以将索引保存到属性并将其保存在存储中。
您的获取请求可能会变成类似
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES], [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
这样在等序(-1)的情况下会考虑名称,否则索引优先。
【讨论】:
以上是关于如何更改coredata中的记录顺序?的主要内容,如果未能解决你的问题,请参考以下文章
用于以任何出现顺序匹配具有多个单词的列中的字符串的 Coredata 谓词