我在
上关注了核心数据教程http://macresearch.org/cocoa-scientists-part-xxiii-itunes-ifying-core-data-app
完成的应用程序在NSTableView中显示数据。数据的排序是否也是持久的?有没有一种方法可以允许拖放重新排列到记录的顺序?我正在考虑类似于iTunes如何允许您通过拖放重新排列播放列表中的歌曲的内容。
答案 0 :(得分:4)
Core Data希望您使用NSSortDescriptors定义自己的排序,因此您必须添加自己的属性来跟踪用户可自定义的排序索引。我很幸运在实体的关系密钥路径上使用KVO(来自托管对象本身),以便在添加或删除新关系对象时根据需要更改排序。
要处理重新排列,您需要利用NSTableView的拖放方法并根据需要重置订单索引属性。 NSTableView文档应该很好地解释它。
答案 1 :(得分:0)
您需要添加一个跟踪项目顺序的字段(可以是整数字段)。当您将对象放在表中时,您将需要按该字段进行排序。
实施拖放时,您应该更新项目的顺序。
答案 2 :(得分:0)
不使用整数,而是使用创建的实际日期和时间(时间戳的种类)。这将确保您的订单字段不会重复。
然后当我向上/向下移动项目时,我只需交换他们的订单字段。它的处理成本相对较低。
当我获取数据时,我只按am字段的顺序选择项目。