使用 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。请不要说直接在数据源方法中这样做效率不高,我只是把它放在这里来说明这一点。