我有一个视图,我从主NSManagedObjectContext
检索已保存的实体(路线*)。我想将其导入tempContext
。按照Marcus Zarra的例子,我这样做:
NSManagedObjectContext *moc = _route.managedObjectContext;
NSManagedObjectID *routeId = [_route objectID];
NSPersistentStoreCoordinator *psc = moc.persistentStoreCoordinator;
self.tempContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[self.tempContext setPersistentStoreCoordinator:psc];
NSManagedObject *localRoute = [self.tempContext objectWithID:routeId];
[localRoute moToDictionary:localRoute];
self.tempContext.parentContext = moc; // crashes here
在我尝试将parentContext
的{{1}}设置为主MOC之前,一切都很好。我收到错误:
tempContext
我理解它告诉我,我无法更改Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Context already has a coordinator; cannot replace.'
。但是,我不确定为什么它会告诉我。当我设置断点时,persistentStoreCoordinator
与主moc的内存地址不同。此外,tempContext
为零。所以我认为如果它是零,我可以将nil参数设置为moc,但它会崩溃。有什么想法吗?提前谢谢!
答案 0 :(得分:6)
对于托管对象上下文,您可以
但不是两者。