我正在開發一個聊天應用程序並使用xmppframework。現在需要將消息存儲在持久性存儲中。任何人都可以告訴我如何在iOS中存儲和檢索來自CoreData的消息。在XMPPFrameWork中將XMPPMessage保存在CoreData中
回答
是否使用https://github.com/robbiehanson/XMPPFramework 如果是,那麼它的默認實現核心數據你不得不做出細微的變化讓聊天消息...
由於您使用的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"
嗨AdrianHou ...實際上我接收消息 - (void)xmppStream: (XMPPStream *)發送者didReceiveMessage:(XMPPMessage *)消息...現在在此處如何將消息保存在XMPPMessageArchivingCoreDataStorage中... –
由於未捕獲的異常'NSInvalidArgumentException',理由:'+ entityForName:nil不是一個合法的NSManagedObjectContext參數搜索實體名稱'XMPPMessageArchiving_Message_CoreDataObject''請幫助調試這個異常 –
你好@Adrian,我怎麼能爲MUC做同樣的事情? –
- 1. 將NSManagedObjectID保存在CoreData中
- 2. 將NSDictionary保存在coreData中
- 3. 將數據保存在coredata中?
- 4. ReverseGeoCode並將結果保存在CoreData中
- 5. 在CoreData中保存對象
- 6. 將CMTime存儲在CoreData中?
- 7. 在UITableViewController中保存CoreData,但UISlider數據僅在原型單元格中 - 我如何將它保存到CoreData中
- 8. 如何在CoreData中保存NSValue的NSMutableArray?
- 9. 如何在CoreData中保存位置
- 10. 在CoreData中保存一對多關係
- 11. 將UILabel結果保存到CoreData中
- 12. 將自定義類保存到Coredata中
- 13. XMPPFramework - 在iOS中未收到存在
- 14. CoreData-apps中的「保存」
- 15. 如何保存UILocalNotifications在CoreData
- 16. 將CoreData保存到iCloud(Swift)
- 17. 將USSwitch保存到CoreData
- 18. 如何在CoreData中保存CoreData的內容6
- 19. 在代碼中將變量保存到CoreData實體 - Objective-C/XCode
- 20. 如何在XMPPMessage中將xml解析爲swift?
- 21. XMPPFramework不發送存在
- 22. 在CoreData中存儲objectID
- 23. 在CoreData中存儲UIColor
- 24. CoreData保存錯誤
- 25. CoreData永久保存?
- 26. 永久保存CoreData
- 27. 保存NSDate到CoreData
- 28. 在iOS中支持HTTPS XMPPFramework
- 29. 在XMPPFramework中發送消息
- 30. 如何在Objective-C中將反向地理編碼數據保存到CoreData中?
是的,我正在使用此鏈接。如何將消息存儲在數據庫中?請告訴我。 –
有XMPPMessageArchiving模型..研究這個..消息首先獲取存儲到..並且用戶可以從此獲取數據... –