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

我遵循了核心数据教程

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

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

【问题讨论】:

    标签: objective-c cocoa macos core-data


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2016-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-02
          • 1970-01-01
          • 2012-06-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多