2
코어 데이터를 동시에 적절하게 사용하는 방법을 찾는 데 어려움을 겪고 있습니다.코어 데이터, 동시성 및 GCD
업데이트가있을 때마다 새 데이터를 추가하기 전에 엔터티의 핵심 데이터를 지워야합니다. 그러므로 나는이 조각을 사용하기로 결정했습니다
-(void)addSale:(NSArray *)results{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSString *entity = @"Sale";
CoreDataManager.sharedInstance.delegate = self;
dispatch_async(dispatch_get_main_queue(), ^{
[CoreDataManager.sharedInstance deleteEntityWithName:entity];
});
NSManagedObjectContext *privateContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
privateContext.parentContext = CoreDataManager.sharedInstance.managedObjectContext;
for (NSDictionary *dataDictionary in [results valueForKey:@"Sales"])
{
NSManagedObject *managedObject = [NSEntityDescription insertNewObjectForEntityForName:entity inManagedObjectContext:privateContext];
// Fill ManagedObject
// .....
}
NSError *error;
[privateContext save:&error];
if (error != nil) {
NSLog(@"Couldn't save private context bcoz of %@\n%@", error, error.localizedDescription);
}
dispatch_async(dispatch_get_main_queue(), ^{
// Save Main ManagedObjectContext
[CoreDataManager.sharedInstance saveContext:CoreDataManager.sharedInstance.managedObjectContext WithEntityName:entity];
});
});
}
문제는 코어 데이터에 어떤 영향없이 반응하는 UI를 유지하면서 내가이 개 다른 기업을 위해 같은 일을해야한다는 것입니다.
더 나은 접근 방법이 있습니까?