【问题标题】:How to change records order in coredata?如何更改coredata中的记录顺序?
【发布时间】:2015-08-31 13:10:04
【问题描述】:

我在核心数据中有一些记录,其中包含名称、内容、电子邮件、图像等。我在集合视图中显示了这些数据,在那里我提供了拖放/移动单元格功能。现在如何更新核心数据中重新排序/重新排列的数据?请帮忙。

【问题讨论】:

  • 您需要有一个 itemOrder 属性,该属性根据索引路径存储到每条记录的位置,然后后续提取应按相同属性排序。

标签: ios objective-c iphone core-data


【解决方案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)的情况下会考虑名称,否则索引优先。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多