如何更改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中的记录顺序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 4 CoreData 中设置合并策略

用于以任何出现顺序匹配具有多个单词的列中的字符串的 Coredata 谓词

数据导入CoreData期间如何显示progressBar?

在 CoreData 记录中进行更改,SwiftUI

coreData:从 NSSet 实体移动记录

如何更改从 NSFetchedResultsControler 填充的 UITableview 中部分的显示顺序?