17

エンティティAとエンティティB(片側)との間に1対1の関係があります(たとえばbRelという名前)。サブクラスがNSAtomicStore(MyStore)、NSAtomicStoreCacheNode(MyCacheNode)です。 MyStoreのload:メソッドでは、エンティティAとB(aNodeとbNode)のMyCacheNodeのインスタンスを作成し、それぞれに対応するpropertyCache辞書を割り当てます。 aNodeのpropertyCacheには、鍵@"bRel"のbNodeが含まれています。NSManagedObjectはNSAtomicStoreCacheNodeから属性を取得できません

aManagedObjectは正常に作成され、すべてのプロパティが有効です。しかし、ManagedObjectがaManagedObject.bRel.someAttributeを通してbManagedObjectにアクセスすると、bManagedObjectはフォールトのままです。 bManagedObjectはawakeFromInsertまたはawakeFromFetchを受信しません。 bNodeとbManagedObjectは同じインスタンスmanagedObjectIDを共有します。 bNodeは、bManagedObjectがsomeAttributeにアクセスすると生きています。 ManagedObjectはその属性にアクセスすると、MyCacheNodeのvalueForKey:を通過します。 bManagedObjectが実行すると、そこには到達しません。

bManagedObjectはまったく発生しません。

誰でもこの状況で何を確認すればよいですか?

+0

カスタムNSAtomicStoreを使用しているときに関係を接続する際に問題が発生しましたが、どこに問題があったのですか? – Vamos

+0

可変式 ValueForKeyを使用してリレーションシップにアクセスする場合も同様に動作しますか? – quellish

答えて

1

はい。問題は管理対象オブジェクトにaRelのForward宣言があることが原因である可能性があります。 aManagedObject.hファイルにインポートしてみてください。そうすれば、その属性にアクセスできるはずです。

は私がちょうど合成する性質のためwillAccessValueForKey:/didAccessValueForKey:を呼び出していませんでしたてきた、そしてそれは店をカスタマイズするには無関係だったと思う私は、現在の視点から、それは:)

1

を行く方法を知ってみましょう。 Bは、A、AFAIRの合成された特性であった。

関連する問題