2014-03-04 2 views
1

채팅 앱을 만들고 코어 데이터 사용자 프로필 (이미지, 이름, 나이, 세부 정보)에 저장하려고하며 다른 사용자와 대화합니다. 모든 새로운 메시지를 저장해야 할 필요가 있음에도 불구하고 사용자가 자신의 기록을 보려고 할 때 메시지가 읽혔다는 것을 알 필요가 있습니다. 예를 들어 VC의 상단으로 스크롤하는 것과 같은 웹 서비스에서로드합니다.코어 데이터에 xmpp 메시지 저장 및로드

메시지를 저장하고로드하는 데이 코드를 사용하지만 2 명의 정확한 사용자에 대한 생성 채팅 기록에 결과 배열을 어떻게 사용할 수 있습니까?

은 당신의 요청이 술어를 추가 누군가가 여전히 답을 필요로하는 경우

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

회담에서 VC

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 I get the NSArray with element type of "XMPPMessageArchiving_Message_CoreDataObject" 
+0

몇 가지 코드를 표시하십시오. 어떤 예를 시도 했습니까? – Marcio

+0

@marcio, 내 게시물을 업데이트합니다. 결과 배열에 메시지, 날짜, 이미지, 채팅을 시작하는 2 명의 사용자 이름이 있어야하지만, 그렇지 않습니다. – user3358463

+0

데이터 모델을 만들었습니까? 엔티티가 추가 되었습니까? 다운로드 한 데이터를 처리하고 데이터 저장소에 저장 하시겠습니까? 가져 오기 요청에서 결과가 반환됩니까? 얼마나 멀리 있고, 작동하지 않는지에 대해 구체적으로 설명하십시오. – Wain

답변

0

를 저장된 메시지를 검색합니다.

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"bareJidStr = %@", user.jid];