从核心数据中获取分组数据

时间:2013-08-23 11:06:26

标签: iphone ios objective-c sqlite core-data

我在消息表中有数据。这些消息是某种聊天消息。现在我想以这样的对话形式获取数据......

假设我们有 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

收到

等......

任何人都可以建议我如何做到这一点。我已经调查了一些问题,但找不到答案。那里的任何人都可以提供帮助。

2 个答案:

答案 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。此对象包含结果数据

中的部分和行