코어 데이터의 논리가 혼란 스럽습니다.iOS 핵심 데이터 - 왜 작동합니까?
저는 핵심 데이터를 데이터베이스로 처리하고 핵심 데이터 메소드를 SQL 쿼리로 처리했습니다.
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Book" inManagedObjectContext:_managedObjectContext]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"identifier == %@", theBook.identifier];
[request setPredicate:predicate];
NSError *error;
Book *book = [[_managedObjectContext executeFetchRequest:request error:&error] lastObject];
if (error) {
NSLog(@"Error getting book to update: %@", error);
abort();
}
// NSLog(@"%d", book == theBook);
error = nil;
if (![_managedObjectContext save:&error]) {
NSLog(@"Error saving the book: %@", error);
abort();
}
theBook
내가 업데이트 할 개체입니다 : 나는 로컬 메모리의 개체와 핵심 데이터의 일부 개체를 업데이트하려고 할 때
은, 난 그냥 아래의 코드로 기능을 할 수 있다는 것을 발견 핵심 데이터의 대상.
내가 로그 메시지가 두 객체가 동일 말한다 발견 ...
내가 요청을 가져 아무것도하지 않았다 그러나 그것은 작동합니다. 왜 작동합니까?
코드의 저장 섹션 만 사용하면 작동하는 것으로 나타났습니다. 나는 theBook이 가져온 결과이기도하다고 생각한다. – glast
귀하의 질문에 전혀 분명하지 않습니다. 왜 작동하지 않는지 나는 알 수 없다. –
코어 데이터를 데이터베이스로 처리 할 때 (1) 가져 오기 요청에서 개체를 가져오고 (2) 개체 값을 편집 한 다음 (3) 저장해야한다고 생각했습니다. 하지만 프로세스 (1)과 (2)를 생략하면 작동합니다. 나는 영어 원어민이 아니기 때문에 내 질문을 설명하기가 어렵다. 죄송합니다 :) – glast