FetchedResultsController NSSortDescriptor 用于一对多关系

Posted

技术标签:

【中文标题】FetchedResultsController NSSortDescriptor 用于一对多关系【英文标题】:FetchedResultsController NSSortDescriptor for one-to-many relationship 【发布时间】:2014-04-10 21:39:53 【问题描述】:

我有 2 个实体:chat> chatMessages(每个聊天有 0+ 条消息,每条消息属于一个聊天)。

我正在发送FetchedResultsController,我想按最后一条消息的日期对聊天进行排序:

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"ChatModel" inManagedObjectContext:[NSManagedObjectContext MR_defaultContext]];
    [fetchRequest setEntity:entity];

    NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"chatMessages.messageDate" ascending:NO];
    [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];

但是通过这段代码我得到:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'to-many key not allowed here'

如何按要求的方式对聊天进行排序? (就像whatsapp一样)

【问题讨论】:

【参考方案1】:

您可以使用集体运营商。

Read about it here

您必须期待的现成答案就像创建这样的排序描述符 -

 NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"chatMessages.@max.messageDate" ascending:NO];

【讨论】:

以上是关于FetchedResultsController NSSortDescriptor 用于一对多关系的主要内容,如果未能解决你的问题,请参考以下文章

FetchedResultsController 中没有部分

如何将对象从 fetchedResultsController 到 Plist?

fetchedResultsController 对象的表视图部分

fetchedResultsController 和 Integer

将 fetchedResultsController 更改为 protected from private

将 fetchedResultsController 与 swift3 一起使用