iOSの親/子管理対象コンテキストに問題があります。私は、一時的な子管理対象オブジェクトコンテキストを使用することを標準的な使用例として思い出します。そのため、save()コールを使用して保存を押して変更を親に伝播させることも、子プロセスに放棄することもできますMocが消える。子オブジェクトからオブジェクトを保存NSManagedObjectContextは親では使用できません
childMoc = NSManagedObjectContext(concurrencyType: .PrivateQueueConcurrencyType)
childMoc.parentContext = parentMoc
をそして私は、私はすべての必要な変数として、私のピカピカの新しいオブジェクトを移入が完了した後
let objectInChildMoc = NSEntityDescription.insertNewObjectForEntityForName(...
を使用してchildMocでオブジェクトを作成します。
は、私はこのような子供を作成しますいくつかの依存オブジェクトを取得するには、このコードをSwiftで使用して、親コンテキストから新しいオブジェクトにアクセスしようとします。
childMoc.performBlock({
do {
try childMoc.save()
parentMoc.performBlock({
do {
try parentMoc.save()
do {
let objectInParentMoc = try parentMoc.existingObjectWithID(objectInChildMoc.objectID) as? TheRightType
} catch {
print("Couldn't find object in parent")
}
} catch {
print("Couldn't save parent")
}
})
}
catch {
print ("Couldn't save child")
}
})
私はいつも「親にオブジェクトを見つけることができませんでした」というメッセージが表示されます。私は何が欠けていますか?私は、NSManagedObjectContext保存通知を使用する古いサンプルコードを参照してくださいが、私はそれらが親子のマネージドオブジェクトコンテキストではもう必要ではないことを読んでいます。上記のコードは、最近のObjectiveCコードに基づいています。しかし、このリンクCorrect implementation of parent/child NSManagedObjectContextは、上記の設定がうまくいくはずであることを私に示唆しています。
明確にするために、オブジェクトは親のMOCに保存されています。私が後でフェッチすると、私はそれを見つける。したがって、existingObjectWithIDは、親のManaged Object Context内のオブジェクトを見つける間違った方法のようです。 –
私は 'existingObjectWithID'呼び出し全体をスキップしようとしましたが、コードがオブジェクトを削除しようとするまでは動作しているようですが、間違ったコンテキスト内からオブジェクトを削除しなければならないという不満があります。 –