1

子オブジェクトのURIを格納するNSManagedObjectサブクラスがあります。子オブジェクトが最初に作成されたときに最初に一時URIを格納し、保存する前にNSManagedObjectContext-willSaveを呼び出すように実装する-obtainPermanentIDsForObjectsため、永続IDのみが保持されます。

しかし、私が遭遇している問題は、他のインスタンスも一時的なURIを格納していることです。-willSave同じ子を持つ別のオブジェクトが受け取った直後にメッセージを受け取ると、別の間違った永続的なURIも呼び出して取得-obtainPermanentIDsForObjectsし、次のような後続のCoreData障害エラーが発生します。

CoreData could not fulfill a fault for '0x102e4c110 <x-coredata://E17EE19B-E7F3-4102-ACFF-3E6F8BE8B104/MyEntityName/p2>'

NSManagedObjectの古い一時的なURIRepresentationから、すでに生成されている新しい永続的なURIRepresentationに移行する方法が必要です。

私の最初の考えは、使用する前に自分の辞書を保存<temporary URI,permanent URI>し、それを調べることです-obtainPermanentIDsForObjects-私が見逃しているより簡単な(より確実な、または組み込みの)方法はありますか?私がドキュメントで見つけたものは何も示唆していませんでした。

4

2 に答える 2

4

-obtainPermanentIDsForObjects子オブジェクトを作成した直後、親に属する前に、呼び出しで永続的なIDを取得することになりました。そうすれば、親オブジェクトに一時IDが表示されることはありません。これはうまくいきますが、もっと良い解決策があるかどうかはまだ知りたくありません。

于 2010-12-25T15:51:04.157 に答える
0

管理対象オブジェクトコンテキストのをサブスクライブしますNSManagedObjectContextDidSaveNotification。内のオブジェクトを反復処理し、NSInsertedObjectsKeyそれらの管理対象オブジェクトIDを取得します。この時点で、それらはすべて正しい永続的なIDになり、URIを安全に取得して保存できます。

于 2010-12-25T14:02:01.127 に答える