NSData를 사용하여 코어 데이터에 배열을 저장하려고하는데 ManagedObjectContext에 0 개의 개체가 있으며 호출 할 때 NULL로 표시됩니다. 엔티티가 Event라는 3 개의 속성 (chatArray, ..., ...)이 있습니다. 나는 11 시간 동안 노력했지만 알아낼 수는 없다. 나는 NSData가 정확하기 때문에 내가 잘못 설정하고 있다고 생각한다. 나는 이것을 어떻게 세워야 하나?핵심 데이터 관리되는 개체 컨텍스트 저장 문제
내가 채팅 응용 프로그램을 개발하고 있는데 테이블보기에서 채팅 메시지가
UPDATE (이 데이터의 배열입니다). 앱을 종료하고 다시로드하면 채팅 기록을 모두 저장해야합니다. 내가 문자열로 들어오는 메시지를 테이블 배열에 추가했습니다. 배열을 만들지 않고 핵심 데이터에 텍스트 문자열로 메시지를 추가하면 응용 프로그램을 다시로드 할 때 테이블보기의 배열에 어떻게 추가 할 수 있습니까?
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSManagedObject *managedObject;
//
NSArray *array = [[[NSArray alloc]initWithObjects:@"one",@"two",@"three", nil]autorelease];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
NSLog(@"data %@",data);
NSLog(@"Array %@",[NSKeyedUnarchiver unarchiveObjectWithData:data]);
[(Event*)managedObject setValue:data forKey:@"chatArray"];
if ([self managedObject])
{
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]];
[(Event *)managedObject setChatArray:data]; }
else {
Event *event = [[[Event alloc] initInsertingIntoManagedObjectContext:managedObjectContext]autorelease];
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]];
[event setChatArray:data];
}
NSError *error;
[managedObjectContext save:&error];
NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithData:[(Event*)managedObject valueForKey:@"chatArray"]];
NSLog(@"chatArray %@",myArray);
나는 여기서 무슨 일이 일어나는지 정말로 말할 수 없다. managedObject 및 [self managedObject]가 있습니다. 그것들이 똑같다고 가정 할 때 나는 맞습니까? 하지만 확인하기 전에 메시지를 보내십시오. 그러면 어떻게됩니까? nil이 아니라면 모델에 삽입되는 코드가 실행되지 않습니다. 따라서 이전에 managedObject를 모델에 삽입했는지 여부는 알 수 없습니다. 두 경우 모두 가져 오기 요청을 만들지 만 실행하지 마십시오. 어떤 코드 경로를 사용하고 있습니까? 컨텍스트를 저장 한 후에 오류 값을 확인 했습니까? – morningstar
두 번째 걸립니다. 그리고 그것은 아무런 오류도 없다. Nill은 ... –