2010-11-30 21 views
1

CoreDataモデルに多少の関係がありますが、逆の関係がないと奇妙な動作が発生します。問題を保存した後にCoreDataが関係を失う

例:タイプAのエンティティは、タイプBのエンティティと多対多の関係を持ちます.BとAは逆の関係はありません。タイプAのオブジェクトとタイプBのオブジェクトを接続すると、問題ない。しかし、管理オブジェクトコンテキスト全体を保存してアプリケーションを再起動すると、オブジェクト間の接続は、1つのオブジェクト(まだ関係がある)を除いてはもう存在しません。タイプAの異なるオブジェクトは、タイプBの1つの特定のエンティティとの関係を持ち、同じオブジェクトを共有していることがあります。

何が問題なのですか?

答えて

1

最も簡単な説明は、実際には一対多の関係が設定されているのではなく、1対1の関係が設定されていることです。最後に設定したBを保存するだけです。保存する直前に関係を記録して、Bが1つだけ設定されているかどうかを確認します。

また、相互関係がなくても、オブジェクトがエラーを発生させることなくグラフから消える可能性があります。 BがAと関係がない場合、BはAを観測していないことを意味し、何が起こるかは気にしません。あなたは気づかずにグラフを変更しているかもしれません。ルールを削除すると、この状況で奇妙な動作が発生する可能性もあります。

非常にまれなケースでは、反転を使用しないリレーションシップのみを使用してください。逆の関係は、オブジェクトグラフの整合性を維持し、孤立したオブジェクトや消えていくオブジェクトを防ぎます。

+0

良い点は、私は関係をチェックしており、もちろんそれらのエンティティ間には多対多の関係があります。 1つの注記:オブジェクトコンテキストを保存した後も関係は消えません。アプリの再起動後に限り、関係はなくなりました! – brutella

+0

私は逆の関係を追加することで問題を修正しました!ありがとう – brutella

関連する問題