2016-11-12 10 views
2

私はios 10、xcode 8を使用しています(問題があれば、すべてを言います)。だからwwmdによれば、フェッチ要求は何かがコアデータにあるかどうかをチェックする必要はなく、そうであれば、重複しないように保存しません。ユニークな制約が導入されました。だから私は属性としてidとListと呼ばれるエンティティを持っています。 contraintsでは、私はidを(wwmdのデモンストレータとして)リストしました。私はNSMergeByPropertyObjectTrumpMergePolicyというマージポリシーを使ってコンテキストを与えました。私のポイントへユニークな制約が機能しない

var context: NSManagedObjectContext { 
    mutating get { 
     if #available(iOS 10.0, *) { 
      let context = persistentContainer.viewContext 
      context.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy 
      return context 
     } else { 
      return managedObjectContext 
     } 
    } 

}

、それは働いていません。私は同じIDを保存することができますそれは重複します!これに関するIOS10に関する文書はまったくありません。私はそれをsw9 IO9 managedObjectContextを使って動作させましたが、IOS10 persistentcontainer.viewcontextで動作させることはできません。誰かがこれに対する解決策を持っていれば、それは非常に高く評価されます。

答えて

1

固有の制約は、コンテキストを保存するときにのみ機能します。

NSMangaedObjectsを作成した後、それらを作成したNSManagedContextを保存します。

はいエンティティに関係がある場合は固有の制約はありません(xcode 7.3 ios9でこれを試しました)

1

解決策:コンテキストを必要とするViewControllerでビューのdidloadにmergepolicyを追加しました。 更新:もっと良い解決策:コアデータのユニークな制約が関係ではうまくいかないため、素晴らしい一意性アルゴリズムだけでなく、多くの有用なコアデータラッパーを持つコアストアを使用してしまいました。

関連する問題