2016-10-18 9 views
0

私は、関係を使って複数のテーブルを持つコアデータ設計をしています。私のデータベースはSQLiteです。アップデートの場合は、JSONからデータをインポートして、このメソッドを使用します。独自の制約と関係を持つコアデータ-IQ

[NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:context]. 

コアデータに一意の制約が追加されました。 別のオブジェクトの関係であるエンティティを更新すると、接続が失われます。

例: "pet_id"と一対一の関係を持つエンティティ "person"。 「ペット」を更新するとIDが変更され、「人」は以前のIDを指しているので、これ以上関係はありません。 この問題を回避する方法はありますか?

答えて

1

これはどこにも書かれていないと思います。

  • 新しいインスタンスを作成します。制約は、このインスタンスが既存のインスタンスと一致することを意味します。しかし...
  • 新しいインスタンスには、この関係のためのnil値があります。したがって...
  • 既存のインスタンスの関係の値は、この新しいnil値で置き換えられます。

この関係を維持するには、新しいインスタンスが既にその関係の正しい値を持つ必要があります。本質的に、制約マッチングシステムは、関係の値が新しいインスタンスでは異なるが、他の属性に対しては新しい値を受け入れるという事実を無視するように求めています。

が完全に合理的だと思いますが、現在の実装ではそれがサポートされていないことにも驚いていません。私はこれについてアップルにバグを提出し、あなたのデータを一意に保つ非制約ベースのアプローチを調べることをお勧めします。

+0

ありがとうございました。私はバグを提出しようとしますが、それは役に立たないと思います。 –

関連する問題