Je travaille sur une application de chat et en utilisant xmppframework. Maintenant, il est nécessaire de stocker le message dans un stockage persistant. Quelqu'un peut-il me dire comment puis-je stocker et récupérer des messages de CoreData dans IOS.
Puisque vous utilisez github / robbiehanson / XMPPFramework, il est facile d'save vos messages entrants et sortants pendant l'initialisation:
//this code init your XMPPStream xmppStream = [[XMPPStream alloc]init]; [xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()]; xmppStream.autoStartTLS = YES; xmppReconnect = [[XMPPReconnect alloc]init]; [xmppReconnect activate:self.xmppStream]; xmppMessageArchivingCoreDataStorage = [XMPPMessageArchivingCoreDataStorage sharedInstance]; xmppMessageArchivingModule = [[XMPPMessageArchiving alloc]initWithMessageArchivingStorage:xmppMessageArchivingCoreDataStorage]; [xmppMessageArchivingModule setClientSideMessageArchivingOnly:YES]; [xmppMessageArchivingModule activate:xmppStream]; //By this line all your messages are stored in CoreData [xmppMessageArchivingModule addDelegate:self delegateQueue:dispatch_get_main_queue()];
Pour récupérer le message enregistré, voici l'exemple de code dans mon projet:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSManagedObjectContext *context = [self.xmppMessageArchivingCoreDataStorage mainThreadManagedObjectContext]; NSEntityDescription *messageEntity = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject" inManagedObjectContext:context]; fetchRequest.entity = messageEntity; NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"timestamp" ascending:NO]; fetchRequest.sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; NSError *error = nil; NSArray *results = [context executeFetchRequest:fetchRequest error:&error]; //Now you get the NSArray with element type of "XMPPMessageArchiving_Message_CoreDataObject"
Utilisez-vous https://github.com/robbiehanson/XMPPFramework Si oui, alors par defaults implémente datatables de base et il vous suffit de faire des changements mineurs pour get le message de chat …