我已经使用XMPP框架实现了一对一聊天它在一对一聊天中提供了广泛的支持。消息归档和提取非常简单。但是我看到,在处理群聊信息保存和显示方面非常困难。排序和谓词失败。显示重复的消息。如何处理MUC聊天消息 - 复制消息
这是我如何加入一个房间之前,我去找我已保存的消息)
XMPPRoomCoreDataStorage *coreDataRoomStorage=[self appDelegate].xmppRoomCoreDataStorage;
XMPPRoom *room=[[XMPPRoom alloc]initWithRoomStorage:coreDataRoomStorage jid:user.bareJid];
[room activate:[self appDelegate].xmppStream];
[room addDelegate:[self appDelegate] delegateQueue:dispatch_get_main_queue()];
[room joinRoomUsingNickname:user.user_name history:nil];
我看到,有消息的多个冗余的节省。一条消息被保存3-4次。我可能会做错什么。有些身体会有帮助!这是我为房间中的消息做的代码
- (NSFetchedResultsController *)fetchedResultsController{
if (fetchedResultsController == nil)
{
NSManagedObjectContext *moc = [[self appDelegate] managedObjectContext_message];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject"
inManagedObjectContext:moc];
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"bareJidStr=%@",_thisRoom.roomJID.bare];
NSSortDescriptor *sd1 = [[NSSortDescriptor alloc] initWithKey:@"timestamp" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sd1, nil];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
[fetchRequest setSortDescriptors:sortDescriptors];
[fetchRequest setPredicate:predicate];
[fetchRequest setFetchBatchSize:20];
fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:moc
sectionNameKeyPath:nil
cacheName:nil];
[fetchedResultsController setDelegate:self];
NSError *error = nil;
if (![fetchedResultsController performFetch:&error])
{
DDLogError(@"Error performing fetch: %@", error);
}
}
return fetchedResultsController;}
为什么downvoted?问题是真的,这个问题的答案将有助于任何人使用robbie hanson xmpp框架进行群聊。在这个框架中有相同的信息被重复使用3-4次。如果有人发现任何工作,这将节省 – 2014-11-01 10:04:13
不要担心哥们。很高兴。现在你可以看到你的问题没有投票。我已经投了你的问题。仅仅因为我完全同意你质疑它的真正问题。 – 2014-11-06 12:50:58