如何在XMPP中获取所选用户的聊天记录

时间:2014-08-07 09:09:00

标签: ios objective-c xmpp

我是xmpp的新手,我需要存储并显示用户的聊天记录。我在使用以下代码时获得完整的历史记录。我只需要所选用户的聊天记录。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    XMPPMessageArchivingCoreDataStorage *xmppMessageArchivingCoreDataStorage=[XMPPMessageArchivingCoreDataStorage sharedInstance];
    NSManagedObjectContext *context = [xmppMessageArchivingCoreDataStorage mainThreadManagedObjectContext];
    NSEntityDescription *messageEntity = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject" inManagedObjectContext:context];

    fetchRequest.entity = messageEntity;

    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"timestamp" ascending:YES];
    fetchRequest.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
    NSError *error = nil;
    NSArray *results = [context executeFetchRequest:fetchRequest error:&error];
    [self print:[[NSMutableArray alloc]initWithArray:results]];

如何获取特定用户的聊天记录。我搜索了很多但是没有成功

1 个答案:

答案 0 :(得分:3)

试试这个

- (void)loadChatHistoryWithUserName:(NSString *)userName
{
    NSString *userJid = [NSString stringWithFormat:@"%@@%@",userName,self.hostName];
    NSManagedObjectContext *moc = [_xmppMsgStorage mainThreadManagedObjectContext];
    NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject"
                                                         inManagedObjectContext:moc];
    NSFetchRequest *request = [[NSFetchRequest alloc]init];
    [request setEntity:entityDescription];
    NSError *error;
    NSString *predicateFrmt = @"bareJidStr == %@";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateFrmt, userJid];
    request.predicate = predicate;
    NSArray *messages = [moc executeFetchRequest:request error:&error];
}