【问题标题】:Persist and rearrange the order of Core Data records持久化和重新排列 Core Data 记录的顺序
【发布时间】:2009-05-06 21:14:23
【问题描述】:
【问题讨论】:
标签:
objective-c
cocoa
macos
core-data
【解决方案1】:
Core Data 期望您使用 NSSortDescriptors 定义自己的排序,因此您必须添加自己的属性来跟踪用户可自定义的排序索引。我很幸运地在实体的关系键路径(从托管对象本身内部)上使用 KVO,以便在添加或删除新的关系对象时根据需要更改顺序。
要处理重新排列,您需要利用 NSTableView 的拖放方法并根据需要重置订单索引属性。 NSTableView 文档应该解释得很好。
【解决方案2】:
您需要添加一个跟踪项目顺序的字段(可以是整数字段)。当您将对象放入表中时,您需要按该字段排序。
当你实现拖放时,你应该更新项目的顺序。
【解决方案3】:
我不使用整数,而是使用创建的实际日期和时间(一种时间戳)。这将确保您的订单字段不重复。
然后,当我向上/向下移动一个项目时,我只是交换他们的订单字段。它的处理成本相对较低。
当我获取数据时,我只是按照 am 字段的顺序选择项目。