2016-05-31 33 views
7

コアデータが以下に示す構造を作成することを拒否する理由を説明してください。CoreData:一意性制約と1対1の義務的な逆関係

|Employee |           |Department| 
    |------ | <<--(opt)-------inverse-------(non_opt)--> |----------| 
    |id (un) |           |name (un) | 
    |fullName | 

    * un - unique, opt - optional 

一部の部門では、ゼロ以上の従業員が働くことができますが、すべての従業員は1つの部門のみで働く必要があります。たとえば、MySqlのスキーマは明白です。コアデータについては、一貫性エラーを避けるために逆の関係を作りました。しかし、Core Dataは、独自のビジョンを持っており、これは、それが私のためにこう言われる、

error: Misconfigured Entity: Entity Department cannot have uniqueness constraints and to-one mandatory inverse relationship Employee.department

私はすでにいくつかの不審な解決策は、(、すべての関係をオプションにDepartment.nameからユニークを削除し、「プログラムで」それをチェックし、削除を発見しました逆の関係)、私は間違いを犯した場合、またはそうでない場合、Appleがこの奇妙なロジックで何を言おうとしているのかを理解したいと思います。

+1

それは 'ユニーク制約に、NSMergeByPropertyObjectTrumpMergePolicyだけではないrelationships.'、すべての属性を上書きし、ここを参照してくださいに関連するべきです:http://dorianroy.com/blog/2015/09/how-インプリメンテーションユニーク制約インコアデータ-iOS-9/ – bteapot

+2

ありがとうございますが、私のケースではないと思います。 1)私はこのポリシーを使用しません。すべての制約チェックエラーは例外をスローします.2)これはコンパイル時エラーです。コアデータは自分のデータスキーマに嫌いであり、アプリケーションはそれでビルドできません。 – Anton

+0

ユニークな制約の競合は、マージの競合に似ていますが、SQL固有のインデックスではありません – malhal

答えて

0

ユニーク制約は、エンティティ内のレコードが特定のフィールドによって一意であることを確認します。しかし、To-Many関係に伴う固有の制約は、矛盾を解決しながら多くの奇妙な問題につながります。

"無効なオブジェクトへの参照のダングリング"

この投稿は基本的に修正するまでに時間がかかるかもしれない小さな問題に焦点を当てています。

http://muhammadzahidimran.com/2016/12/08/coredata-unique-constraints-and-to-many-relationship/

関連する問題