부모/자식 동시성 패턴을 사용하여 큰 데이터 청크를 가져옵니다. 가져 오기는 다음과 같이 기본 스레드를 차단하지 않고 백그라운드에서 수행됩니다.NSManagedObjectContext 취소 performBlock
NSManagedObjectContext *temporaryContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
temporaryContext.parentContext = mainMOC;
[temporaryContext performBlock:^{
// import data …
// push to parent
NSError *error;
if (![temporaryContext save:&error]) {
// handle error
}
// save parent to disk asynchronously
[mainMOC performBlock:^{
NSError *error;
if (![mainMOC save:&error]) {
// handle error
}
}];
}];
모든 것이 잘 작동하지만 데이터 가져 오기를 취소해야하는 경우 어떻게해야합니까? performBlock을 취소 할 수있는 방법이 있습니까?
죄송합니다 - 잘못된 샷시입니다 ... 한 번 작동을 시작한 후에 취소 할 수 없습니다. 취소되지 않은 경우 취소 할 수 없습니다. NSOperations에는 cancel 메소드가 있지만 작업 상태 만 설정합니다. 작동을 취소했는지 확인하기 위해 배경 컨텍스트를 저장하기 전에 상태를 확인하기 위해 프로그램을 작성해야합니다 ( –
). 취소 된 경우 문맥을 저장하지 않습니다. – sash