在XMPPFrameWork ios中保存CoreData中的XMPPMessage

我正在开发一个聊天应用程序,并使用xmppframework。现在需要将消息存储在持久性存储中。 任何人都可以告诉我如何存储和检索IOS中的CoreData消息。

由于您使用的是github / robbiehanson / XMPPFramework,在初始化过程中很容易获得存储的传入和传出消息:

//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()]; 

要检索已保存的消息,请参阅我的项目中的示例代码:

 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"