【问题标题】:iPhone - Ordering Core data relationshipiPhone - 订购核心数据关系
【发布时间】:2011-09-12 09:47:57
【问题描述】:

我目前有一个应用程序,其中列出了许多事件(骑马、聚会等),我希望能够将这些事件添加到将存储在核心数据中的“收藏夹”列表中,但我也希望这些事件按照添加到收藏夹的顺序进行排序。我意识到我可以在事件中添加一个索引属性并在检索事件时使用描述符进行排序,但我希望能够将事件添加到多个收藏夹列表中,所以我认为这行不通。

我还研究了有序关系,这正是我正在寻找的,但需要 iOS5,作为最后的手段,我可​​能会处理这个问题,但如果可能的话,我希望能够找到另一种方法来做到这一点.有什么想法吗?

谢谢。

编辑:用户还可以添加和删除收藏夹列表,因此无法添加日期属性和排序。

【问题讨论】:

    标签: iphone core-data relationships


    【解决方案1】:

    正确的解决方案是使用第三个实体来代表收藏列表中某个事件的成员资格。我们就叫它EventInFavourites吧。

    EventInFavourites 有两个多对一关系:

    Favourites > EventInFavourites 这个说Favourites可以有几个Event

    Event > EventInFavourites 这表示一个事件可以是多个Favourites 列表的一部分。

    最后,该事件在收藏夹列表中的位置用一个属性表示 EventInFavourites,比如说position

    因此,当您想将事件添加到收藏列表时,您可以创建一个 EventInFavourites 实例并将其链接到该事件和收藏列表。有点像这样:

    EventInFavourites *newFavouriteMembership = [EventInFavourites insertInManagedObjectContext:self.moc];
    newFavouriteMembership.event = anEvent;
    newFavouriteMembership.favourites = aFavouritesList;
    newFavouriteMembership.position = 3; // or whatever
    [self.moc save:NULL];
    

    我遗漏了一些细节,但这应该可以让您了解全局。

    当然,你可以等待 iOS 5。

    【讨论】:

    • 太棒了。我从来没有想过这样做,但它工作得很好。谢谢。
    【解决方案2】:

    与 iOS 5 建立有序的关系。iOS 设备的更新速度相当快,我想您不会放弃很大比例的潜在客户。更不用说您不必推出自己的实施所节省的时间了。

    【讨论】:

      【解决方案3】:

      存储项目添加到收藏夹的时间和日期。稍后查询数据库时,按此时间戳排序。

      对于不同的收藏列表,您可能希望存储多个时间戳,每个列表一个。

      【讨论】:

      • 感谢您的回答。我考虑过这样做,但我希望用户能够添加和删除收藏夹列表,这意味着我需要在核心数据中动态添加/重命名我认为不可能的属性?
      猜你喜欢
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      相关资源
      最近更新 更多