我相信我的问题相当简单,但我似乎无法找到一个体面而优雅的解决方案。也许 Core Data 没有一个优雅的解决方案,或者我的谷歌技能让我失望了,在这种情况下,我很抱歉。
假设我有一个简单的消息传递应用程序。我有两个核心数据实体:Thread
和Message
. AThread
包含许多Messages
.
我的应用程序应该打开一个 UITableView,其中Threads
列出了所有内容。应用程序将使用 RestKit 及其对象映射机制来加载数据。Messages
有财产created
。_
所以我想对我的线程列表进行排序,以便具有最新消息的线程出现在顶部,其中包含最旧消息的线程将出现在底部。
我相信这也是 Apple 自己的消息应用程序中发生的情况,它也使用了 Core Data。这是我希望有一个更优雅的解决方案的主要原因,而不是例如存储与数据库中最新消息的额外关系。在我的情况下这是不切实际的,因为我使用 RestKit 对象映射并且对 HTTP API 没有影响。
我尝试过瞬态值,这不起作用,因为您无法对它们进行排序。我尝试了一个带有 NSComparisonResult 块的排序描述符,但这也不起作用,因为核心数据说它不能对多对关系进行排序。而且我查看了获取的属性,但我无法弄清楚要使用什么谓词。
提前致谢。