main から保存された Entity (Route *) を取得するビューがあります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
をメイン MOCparentContext
に設定しようとするまでは、すべて問題ありません。tempContext
エラーが発生します:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Context already has a coordinator; cannot replace.'
を変更できないと言っているのは理解していpersistentStoreCoordinator
ます。しかし、なぜそれが私にそれを言っているのか私にはわかりません。ブレークポイントを設定するとtempContext
、メイン モックとは異なるメモリ アドレスになります。また、self.tempContext.parentContext
はゼロです。したがって、nil の場合、nil パラメータを moc に設定できると思いますが、クラッシュします。何かご意見は?前もって感謝します!