0

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

假设我们有a,b,c,d,e,f和 m 个用户。m是给我自己的。现在有来自a、b、c、d、e、fm的发送者的消息,对于接收者也是如此。所有的消息都有m作为发送者或接收者以及来自其他用户的一个对象。现在我希望将数据分组为..

A组

包含发送到a或从a接收到的消息的所有消息

B组

包含发送到b或从b接收到的消息的所有消息

C组

具有发送到c或从c接收到的消息的所有消息

等等....

任何人都可以建议我如何做到这一点。我调查了一些问题,但找不到答案。任何有帮助的人都会很感激。

4

2 回答 2

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返回 sorted的瞬态属性来简化allMessages。请不要说直接在数据源方法中这样做效率不高,我只是把它放在这里来说明这一点。

于 2013-08-23T11:31:04.237 回答
-1

如果在 viewController 结果中,您可以使用 NSFetchedresultscontroller。此对象包含结果数据中的部分和行

于 2013-08-23T11:17:38.597 回答