작업중인 앱에서 동시에 Core Data에 액세스하고 기록해야합니다. 나는 이것이 여러 managedObjectContexts를 사용자가 필요하다는 것을 의미하지만 그 두 managedObjectContexts를 어떻게 설정 해야하는지 이해하지 못한다는 것을 모을 수있었습니다.
일단 설정을 마치면 managedObjectContext의 백그라운드 스레드에서 쓰기 작업을 수행 한 다음 Core Data and threads / Grand Central Dispatch와 같은 작업을 통해 데이터를 병합해야한다는 것을 이해합니다 .
그래서 내 질문은 두 개의 개별 managedObjectContext를 시작하여 설명한대로 사용할 수 있도록 어떻게할까요?
이렇게 NSManagedObjectContexts
똑같은 두 개를 따로 만들어야 NSPersistentStoreCoordinator
합니다.
먼저이 생성 NSManagedObjectContexts
으로 이름 backgroundManagedObjectContext
과 mainBackgroundManagedObjectContext
같은 모델 클래스
+ (NSManagedObjectContext *)backgroundManagedObjectContext
{
static NSManagedObjectContext * backgroundManagedObjectContext;
if(backgroundManagedObjectContext != nil){
return backgroundManagedObjectContext;
}
@try {
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
backgroundManagedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[backgroundManagedObjectContext setPersistentStoreCoordinator: [self persistentStoreCOordinator]];
}
}
@catch (NSException *exception) {
NSLog(@"Exception occur %@",exception);
}
return backgroundManagedObjectContext;
}
그런 다음 둘 다 동일 persistentStoreCoordinator
해야하고 다음 과 같이 데이터를 저장할 때마다 에 병합해야 backgroungManagedObjectContext
합니다 mainBackgroundManagedObjectContext
.NSNotification
backgroundManageObjectContext
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(contextDidSave:)
name:NSManagedObjectContextDidSaveNotification
object:nil];
그런 다음 mainManagedObjectContext
이와 같이 업데이트하기 위해이 알림 방법을 구현해야 합니다.
- (void)contextDidSave:(NSNotification *)notification
{
SEL selector = @selector(mergeChangesFromContextDidSaveNotification:);
[[self mainManagedObjectContext] performSelectorOnMainThread:selector withObject:notification waitUntilDone:YES];
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다