(NSFetchedResultsController *)fetchedResultsController {
// Recommended writing method to reduce the nesting level
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
// First determine which entity needs to be used
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"XMPPMessageArchiving_Message_CoreDataObject"];
// Sort
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"timestamp" ascending:YES];
request.sortDescriptors = @[sort];
//Only read messages from the current user
NSLog(@"streamBareJidStr============%@",[SXXMPPTools sharedXMPPTools].xmppStream.myJID);
*
// 从自己写的工具类里的属性中得到上下文
NSManagedObjectContext *ctx = [SXXMPPTools sharedXMPPTools].xmppMessageArchivingCoreDataStorage.mainThreadManagedObjectContext;
// 实例化,里面要填上上面的各种参数
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:ctx sectionNameKeyPath:nil cacheName:nil];
_fetchedResultsController.delegate = self;
return _fetchedResultsController;
}
(void)controllerDidChangeContent:(NSFetchedResultsController *)controller{
[self.tableview reloadData];
}
I added this query condition request.predicate = [NSPredicate predicateWithFormat:@"streamBareJidStr=%@",[SXXMPPTools sharedXMPPTools].xmppStream.myJID]; I added this query condition and there will be no callback when the database content changes.
This is the data for reading XMPP chat messages because you need to switch accounts to log in. I don’t want to find out the historical messages of previous accounts, so I need to add this predicate