核心数据:按关系属性排序

Posted

技术标签:

【中文标题】核心数据:按关系属性排序【英文标题】:Core Data: Sort by Relationship's Attribute 【发布时间】:2011-04-24 01:44:29 【问题描述】:

我正在构建一个open-source clone of iPhone's native Messages app called AcaniChat on GitHub。

我有一个 Conversation 实体和一个带有 sentDate 属性的 Message 实体。每个Conversation 可以有多个Messages。如何获取Conversations 按其最旧的sentDate 排序的Message

【问题讨论】:

我在这里发布了类似的解决方案:***.com/a/11550855/306764 【参考方案1】:

我能想到的最好方法是向 Conversation 实体添加一个名为 lastMessageSentDate 的属性,并且每次 Message 进入并添加到 Conversation 时,设置该对话的 @ 987654327@ 到该消息的sentDate。我可能还想在Conversation 实体中添加一个名为lastMessageText 的属性,因为我想在ConversationsViewController 上显示最后一条消息的文本(就像本机iPhone 消息应用程序一样),这样做可以让我不必再为Message 提取核心数据。

其实我只是有个想法!或许我可以按照Xcode Documentation: Key-Value Coding Programming Guide: Collection Operators,按照messages.@max.sortedDateConversations进行排序。

【讨论】:

您的第一个想法可能更有效,因为它无需在每次获取 Conversation 时计算每个 Conversation.messages 集合的最大日期! 或者只是在Conversation 中有一个lastMessage 而不是lastMessageSentDatelastMessageText :) @MattDiPasquale 我尝试了你的想法。它没有用。查看相关问题:***.com/questions/12748852/…

以上是关于核心数据:按关系属性排序的主要内容,如果未能解决你的问题,请参考以下文章

核心数据获取:按关系计数排序

按日期和字符对核心数据属性进行排序

按两个依赖属性对核心数据实体进行排序

NSSortDescriptor 按核心数据对多关系中的项目数排序

NSPredicate 按属性过滤核心数据关系 NSSet

核心数据 NSFetchRequest 按类别排序方法返回值