好友聊天都是通过一个代理来完成,不管收消息还是发消息都要通过这个代理
群组聊天和好友聊天的区别就是jid!!!!!
// 上下文
NSManagedObjectContext *context = [WCXMPPTool sharedWCXMPPTool].msgStorage.mainThreadManagedObjectContext;
// 请求对象
NSFetchRequest *request = [NSFetchRequest
fetchRequestWithEntityName:@"XMPPMessageArchiving_Message_CoreDataObject"];
// 1.当前登录用户的JID的消息
// 2.好友的Jid的消息
NSPredicate *pre = [NSPredicate
predicateWithFormat:@"streamBareJidStr = %@ AND bareJidStr =
%@",[WCUserInfo sharedWCUserInfo].jid,self.roomJID.bare];
request.predicate = pre;
// 时间升序
NSSortDescriptor *timeSort = [NSSortDescriptor sortDescriptorWithKey:@"timestamp" ascending:YES]; request.sortDescriptors = @[timeSort];
// 查询
_resultsContr = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:nil];
NSError *err = nil;
// 代理
_resultsContr.delegate = self;
[_resultsContr performFetch:&err];
//执行代理 /当收到消息和自己发送消息的时候会执行这个代理 / ResultController的代理
-(void)controllerDidChangeContent:(NSFetchedResultsController
*)controller{
controller就是我们聊天的数据
}
网友评论