私はiOS開発の新人です。開発にはXCode 5.02を使用します。私はいくつかのエンティティ(例えば、User)を持っていて、彼の名前にユニークな制約を設定する必要がありますが、ビジュアルエディタを使ってどのように行うことができません。それはGUIを介して行うことは可能ですか?それともコードだけで可能ですか?進歩をありがとう。可能であれば、私はいくつかのスクリーンショットを取得することがうれしいです。コアデータの一部のフィールドに固有の制約を追加する方法
答えて
これはiOS 9で実際に変更されました。アップルは、エンティティに一意の制約を追加する機能を追加しました。私はa blog postこのセットアップを得る方法を説明書を書いた。
TL;コアデータのエディタでエンティティを選択するとき、DRは、サイドバーの新しいセクションがあります。あなたが節約時に自動競合解決のためのエンティティ
のすべてのインスタンス全体で一意になりたい何の制約(複数可)を設定することができ、あなたは、マージポリシーセットを持っていることを確認する必要があります管理対象オブジェクトコンテキストのためか、他
_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[_managedObjectContext setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];
が挿入セーブ中にのみ起こる心の紛争解決に保ち、そしてません(実際にあなたが望むものであるかもしれない)保存するときに、あなただけのエラーを取得します。したがって、NSFetchedResultsControllerを使用している場合は、挿入されるときに一意ではない制約を持つエンティティが表示されます。
あなたは(あなたがFRCを利用している場合)、保存せずに、あなたの管理オブジェクトコンテキスト内の非一意性制約とは実体を持たないことを確認したい場合は、this answerはおそらくまだするための最良の方法です行く。 NSFetchRequestsは高価な操作なので、たくさんの挿入をしていると高価です。
スウィフトソリューション:
他の回答で述べたように、あなたが以降iOS9のためにコアデータでユニーク制約を持つことができます。
これを行うには、まずコアデータエディタからEntityに制約を追加します(Zacharyの答えの説明)。
その後のコードに次の行を追加します。
managedObjectContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
注:あなただけの管理対象オブジェクトにオブジェクトを追加している間、あなたはmanagedObjectContext.save()
しないとき一意性がチェックされています。
NSMergeByPropertyObjectTrumpMergePolicy
は、古い値を新しいポリシーで上書きするマージポリシーの1つに過ぎません。その他のオプションについては、ドキュメンテーションを参照してください。
- 1. 2つのフィールドとその逆の固有の制約
- 2. コアデータ固有の制約 - 保存時に「無効なオブジェクトへの参照のダングリング」
- 3. 既存の列に外部キーの制約を追加する
- 4. Django REST Frameworkシリアライザにユーザ固有のフィールドを追加する
- 5. oracle内の単一の文に外部キー制約を持つ新しい列を追加する方法
- 6. フィールドの一意制約を保証する方法
- 7. 式を含むOracle固有の制約
- 8. symfony2のコントローラからフィールド固有のエラーを追加する
- 9. フィールド上の制約を作る方法
- 10. laravel 5同じ外部キーidを持つフィールドに一意の制約を追加
- 11. レールモデルの一部のフィールドにローカライゼーションを追加するには
- 12. web.xmlファイルにセキュリティ制約を追加する方法は?
- 13. 複数の列にわたるDB2固有の制約
- 14. ヌル値を許可する固有の制約
- 15. カラムにデフォルト制約を追加する
- 16. コアデータios9:マルチフィールドユニーク制約
- 17. yamlで制約インデックスを追加する方法Doctrine 2
- 18. マイグレーションによって既存のインデックスに `unique`制約を追加する方法
- 19. 複製テーブルの一意制約の追加/変更
- 20. テーブルに外部キー制約を追加できません
- 21. 存在しないように見える制約を参照するOracle固有の制約違反
- 22. Oracleの列の組み合わせに固有の制約を与える方法はありますか?
- 23. SDCAlertViewでの制約の追加
- 24. 既存のユーティリティアプリケーションにコアデータを追加する方法
- 25. Javaプロジェクトの一部としてシェルスクリプトを追加する方法
- 26. phpMyAdminで制約を追加する
- 27. 制約ダイアログを使用してSQL Server 2008に制約を追加する方法は?
- 28. プログラムでスウィート加算制約を追加
- 29. レイアウト制約に優先度を追加
- 30. javascript固有の日付形式で日を追加する方法
Zachary Orr:あなたのブログの投稿リンクは、この同じページを指しています... –
おっと!固定。.. –
コンマ区切りのリストにプロパティ名を追加しましたが、git statusに自分の作業ディレクトリの変更が行われていないと表示されます。 – Skyler