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