핵심 데이터가 내 술어를 수정하려고 할 때 변경되지 않는 문제에 직면했습니다. 나는 왜 내가 가져온 속성이 나에게 정확한 결과를 보여주지 못하는지 (아래 코드를 보시오) 그리고 마침내 또 다른 커피 휴식을 한 후에 그것을 본 (잠깐!) 나의 가져온 물건이 잘 작동하기 시작한다는 것을 알기 위해 많은 시간을 보냈다. 데이터 모델을 업데이트하는 데 약간의 지연이 있습니까? 아니면 더 자주 휴식해야합니까?코어 데이터가 지연되어 데이터 모델을 새로 고 칩니 까?
-(void)printData{
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Empl"];
NSError *error;
NSArray *empls = [[self managedObjectContext] executeFetchRequest:request error:&error];
for (NSManagedObject *emplMO in empls){
NSString *output = [NSString stringWithFormat:@"%@ \n", [emplMO valueForKey:@"emplName"]];
[self.managedObjectContext refreshObject:emplMO mergeChanges:YES];
NSArray *allChairs = [emplMO valueForKey:@"allChairs"];
output = [output stringByAppendingFormat:@" has %d chairs \n", allChairs.count];
NSLog(@"%@", output);
}
}
두 가지 : (1) 최근에이 객체가 얼마나 최근에 수정 되었습니까? 이 방법을 호출하기 직전 이었습니까? (2) refreshObject : mergeChanges :를 호출하는 목적은 방금 가져온 객체에 무엇입니까? –
@TomHarrington (1) 몇 가지 유사 콘텐츠를 시도했습니다 : empl/assets이 cd에 삽입 된 직후 'printData'를 호출하고 나중에 - 응용 프로그램을 다시 시작한 후에 ('printData'의 결과가 잘못되었을 때 앱을 중지합니다. 청소/다시 빌드하십시오. 다음 번에 시뮬레이터를 실행해도 결과는 여전히 올바르지 않습니다.)이 문제의 규칙을 찾을 수 없었습니다. 그것은 갑자기 사라집니다. 디퍼링 후 페치 된 속성 (즉, 모든 랩톱에 대해 가져 오기)의 조건을 변경하려고 시도했지만 시뮬레이터를 다시 시작한 후에도 여전히 의자에 대한 결과가 표시되었습니다. 그래서 모델을 새로 고치는 데 약간의 지연이 있다고 생각합니다. –
@TomHarrington (2) 내 경우에 유용 할 수 있다고 생각했습니다. –