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 に設定できると思いますが、クラッシュします。何かご意見は?前もって感謝します!