我在消息表中有数据。这些消息是某种聊天消息。现在我想以这样的对话形式获取数据......
假设我们有 a,b,c,d,e,f 和m个用户。 m 适合我自己。现在有消息来自 a,b,c,d,e,f 和 m 的发件人,接收者也是如此。所有邮件都有 m 作为发件人或收件人,以及其他用户的一个对象。现在我想将数据分组为..
Groupe A
所有邮件都有消息发送到 a 或从 a
收到Groupe B
所有邮件都有消息发送到 b 或从 b
收到Groupe C
所有邮件都有消息发送到 c 或从 c
收到等......
任何人都可以建议我如何做到这一点。我已经调查了一些问题,但找不到答案。那里的任何人都可以提供帮助。
答案 0 :(得分:1)
使用Fetched Results Controller,您必须考虑一些消息将被包含多次。
1)获取User
实体,按name
2)部分数量:fetchedObjects.count
3)部分中的行数:
NSSet *allMessages = [user.receivedMessages setByAddingObjectsFromSet:user.sentMessages];
return allMessages.count;
4)填充单元格:
NSSet *allMessages = [user.receivedMessages setByAddingObjectsFromSet:user.sentMessages];
NSArray *sorted = [allMessages sortedArrayUsingDescriptors:@[[NSSortDescriptor
sortDescriptorWithKey:@"message.topic" ascending:YES]]];
Message *m = sorted[indexPath.row];
可以通过向User
添加一个返回已排序allMessages
的瞬态属性来简化此操作。请注意,在数据源方法中直接执行此操作并不是很有效,我只是在这里说明这一点。
答案 1 :(得分:-1)
如果在viewController结果中,您可以使用NSFetchedresultscontroller。此对象包含结果数据
中的部分和行