- (void)fetchMessageListWithCompletion:(HYBMessageListBlock)completion {
self.messageListBlock = completion;
NSManagedObjectContext *context = [self messageContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject"
inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
if (self.currentChatingBuddyJidString != nil) {
// 过滤内容,只找我与正要聊天的好友的聊天记录
NSString *jidString = [NSString stringWithFormat:@"%@@%@", _jid, kServer];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(bareJidStr like %@) && (streamBareJidStr like %@)", self.currentChatingBuddyJidString , jidString];
request.predicate = predicate;
}
__block NSError *error = nil;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSArray *results =[context executeFetchRequest:request error:&error];
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:results.count];
for (XMPPMessageArchiving_Message_CoreDataObject *object in results) {
XHMessage *model = [[XHMessage alloc] initWithText:object.body
sender:object.bareJidStr
timestamp:object.timestamp];
[array addObject:model];
}
dispatch_async(dispatch_get_main_queue(), ^{
if (completion) {
completion(array, [error description]);
}
});
});
}
获取消息列表,是需要过滤的,条件是:是我的好友且是我要查询的好友 的聊天记录:
if (self.currentChatingBuddyJidString != nil) {
// 过滤内容,只找我与正要聊天的好友的聊天记录
NSString *jidString = [NSString stringWithFormat:@"%@@%@", _jid, kServer];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(bareJidStr like %@) && (streamBareJidStr like %@)", self.currentChatingBuddyJidString , jidString];
request.predicate = predicate;
}