2013-12-16 42 views

回答

0

是否使用https://github.com/robbiehanson/XMPPFramework 如果是,那麼它的默認實現核心數據你不得不做出細微的變化讓聊天消息...

+0

是的,我正在使用此鏈接。如何將消息存儲在數據庫中?請告訴我。 –

+0

有XMPPMessageArchiving模型..研究這個..消息首先獲取存儲到..並且用戶可以從此獲取數據... –

5

由於您使用的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" 
+1

嗨AdrianHou ...實際上我接收消息 - (void)xmppStream: (XMPPStream *)發送者didReceiveMessage:(XMPPMessage *)消息...現在在此處如何將消息保存在XMPPMessageArchivingCoreDataStorage中... –

+0

由於未捕獲的異常'NSInvalidArgumentException',理由:'+ entityForName:nil不是一個合法的NSManagedObjectContext參數搜索實體名稱'XMPPMessageArchiving_Message_CoreDataObject''請幫助調試這個異常 –

+0

你好@Adrian,我怎麼能爲MUC做同樣的事情? –