持久化和重新排列 Core Data 记录的顺序

Posted

技术标签:

【中文标题】持久化和重新排列 Core Data 记录的顺序【英文标题】:Persist and rearrange the order of Core Data records 【发布时间】:2009-05-06 21:14:23 【问题描述】:

我遵循了核心数据教程

http://macresearch.org/cocoa-scientists-part-xxiii-itunes-ifying-core-data-app

完成的应用程序在 NSTableView 中显示数据。数据的顺序是否也是持久的?有没有一种方法可以允许拖放重新排列到记录的顺序?我正在考虑类似于 iTunes 允许您通过拖放重新排列播放列表中的歌曲的方式。

【问题讨论】:

【参考方案1】:

Core Data 期望您使用 NSSortDescriptors 定义自己的排序,因此您必须添加自己的属性来跟踪用户可自定义的排序索引。我很幸运地在实体的关系键路径(从托管对象本身内部)上使用 KVO,以便在添加或删除新的关系对象时根据需要更改顺序。

要处理重新排列,您需要利用 NSTableView 的拖放方法并根据需要重置订单索引属性。 NSTableView 文档应该解释得很好。

【讨论】:

【参考方案2】:

您需要添加一个跟踪项目顺序的字段(可以是整数字段)。当您将对象放入表中时,您需要按该字段排序。

当你实现拖放时,你应该更新项目的顺序。

【讨论】:

【参考方案3】:

我不使用整数,而是使用创建的实际日期和时间(一种时间戳)。这将确保您的订单字段不重复。

然后,当我向上/向下移动一个项目时,我只是交换他们的订单字段。它的处理成本相对较低。

当我获取数据时,我只是按照 am 字段的顺序选择项目。

【讨论】:

以上是关于持久化和重新排列 Core Data 记录的顺序的主要内容,如果未能解决你的问题,请参考以下文章

使用 Core Data 时如何重新排列部分

如何通过删除和重新安装 App 将数据持久化在 Core Data 中

应用重新启动时数据不会在 Core Data 中持久化

Core Data 默认使用线程吗?

如何使用带有 Swift 的 Core Data 获取非标准(可转换)属性来更新/保存和持久化?

iOS 5/Lion Core Data 有序关系:指定顺序?