0
我在多线程环境中遇到CoreData问题。CoreData多线程
我有一个RestKit设置,这意味着有一个persistentManagedObjectContext(私有),我创建了一个子上下文(self.autoSyncMOC,也是私有的)。我没有触及RestKit(main-thread)的mainManagedObjectContext,它是persistentMOC(我的autoSyncMOC的同级)的子级。
@property (nonatomic, strong) NSManagedObjectContext *autoSyncMOC;
这是抛出Multithreading_Violation_AllThatIsLeftToUsIsHonor异常的代码:
self.autoSyncMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
self.autoSyncMOC = [RKObjectManager sharedManager].managedObjectStore.persistentStoreManagedObjectContext;
[self.autoSyncMOC performBlockAndWait:^{
//do normal fetch
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:...];
fetchRequest.predicate =[NSPredicate...
NSArray *result = [self.autoSyncMOC executeFetchRequest:fetchRequest error:nil];
//do stuff with fetched objects (i.e. set a property)
for (DownloadableItem *item in result) {
item.checksumDownload = @"test";
}
//save context
[self.autoSyncMOC save:...];
}];
可能出问题的是什么?我想我仍然不理解这些概念。
我知道需要更多的代码和上下文来给出正确的答案。我只想知道我的代码是否有效。
谢谢!
我刚刚做了另一个测试,让我感到困惑:当我在属性中保存我的上下文时,代码会抛出异常。如果我只是在我的方法中创建它,一切都按预期工作。有人可以解释这个吗? – pawi
你是什么意思,你把它保存到一个属性?你是在重新创建而不是将其存储在一个静态属性中? –
我将它保存在一个静态属性中..在单例类中创建一次。 – pawi