持久化和重新排列 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 记录的顺序的主要内容,如果未能解决你的问题,请参考以下文章
如何通过删除和重新安装 App 将数据持久化在 Core Data 中