NSFetchedResultController 업데이트 문제에 대한 질문이 있습니다.핵심 데이터 - NSFetchedResultController가 NSPredicate 및 델리게이트를 제공하면 변경 사항을 자동으로 추적합니다.
이미 알았 겠지만 모든 항목을 가져 와서 NSFetchedResultController의 대리자를 설정하면 데이터가 변경된 경우 컨트롤러가 변경 내용을 캐치하여 해당 개체를 자동으로 업데이트합니다.
그러나 NSPredicate로 항목을 가져 오는 경우 변경 사항이나 해당 개체를 잡아 내지 못합니다. 누군가 왜 저에게 말할 수 있습니까?
다음은 NSPredicate가 설정된 코드입니다. 코드에서
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.globalContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:200];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Department" ascending:YES selector:nil];
NSArray *descriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:descriptors];
[sortDescriptor release];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"Department IN %@",departmentArray];
[fetchRequest setPredicate:pred];
self.resultsController = [[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.globalContext sectionNameKeyPath:@"Department" cacheName:@"Root"] autorelease];
self.resultsController.delegate = self;
[self.resultsController performFetch:nil];
[fetchRequest release];
, 나는 sectionNameKeyPath로 @ "부서"를 설정하고 난 단지 "사람"부서 (departmentArray)의 다수의 항목, 모든 부서가 필요합니다.
NSFetchRequest에서 NSPredicate를 제거하면 새 부서도있는 사람 항목을 삽입 할 때마다 resultsController가 대리자를 알고 트리거합니다.
그러나 NSPredicate를 유지하면 resultsController가 변경 사항을 알 수 없습니다. 예 :
내 부서 배열의 이름은 "Sales", @ "Human Resources"입니다.
처음에는 핵심 데이터에 @ "판매"의 인물이 없습니다. 가져 오기를 수행하면 @ "인적 자원"의 인물 만 얻습니다.
@ "Sales"의 사람이 삽입되면 resultsController가 자동으로 업데이트되어야한다고 생각하십니까? @ "Sales"를 가진 새로운 사람이 NSPredicate에 맞기 때문에, 맞습니까?
감사
그런데 내가 가져 오기를 수행하기 전에 모든 캐시를 삭제합니다. – Jack