2011-10-28 14 views
0

同じ属性を持つ新しいエンティティを作成する前にエンティティが既に存在するかどうかを確認するにはどうすればよいですか?または、CoreDataはすでにエンティティを作成しないほど賢いですか?新しいエンティティを作成する前に既存のエンティティを確認する

例では、属性nameとidを持つエンティティEmployeeがあります。これで、ユーザーはダイアログ画面から新しい従業員を作成しますが、この従業員はIDに基づいて既に終了しています(同じ名前の従業員がいる可能性があります)。私はフェッチ要求を作成することができますが、どこにコードを記述すればよいですか?これを行うにはEmployeeのクラスを作成する必要がありますか?

編集:私の質問を投稿した後、私はこのページを見つけました:http://www.macresearch.org/cocoa-scientists-part-xxiii-itunes-ifying-core-data-appこれを行う方法でしょうか?多くのエンティティを持っているかのように見えますが、たくさんのコードを複製しています。

答えて

0

コアデータを使用すると、オブジェクトIDを除いてすべて同じである管理対象オブジェクトを作成できます。

最も簡単な解決策は、従業員の名前が重複しないようにすることです。ユーザーが新しい従業員を入力すると、キーボードまたはマウスを使用してイベントがトリガーされます。このイベントのアクションメソッドでは、入力した名前が既存の名前と一致するかどうかを確認して、まずユーザーの入力を検証します。あなたが引用したリンクは、使用できるフェッチ要求の例ですが、より効率的な一致するオブジェクトの数をフェッチする方法を調べることもできます。一致するものがあれば、アラートを表示します。

本当に重複する名前を許可したい場合は、CoreDataによって割り当てられたobjectIDを使用してエントリを区別することができます。しかし、ユーザーはそのIDが何であるかを知ることはできません。したがって、名前の一致を確認し、同じ名前の別の従業員エントリを実際に作成するかどうかを確認する確認ダイアログを表示する必要があります。

+0

ありがとうございます - 私はそのリンクからコードを実装し、あなたの提案を検討します。たぶん私はカテゴリに入れて、それを私のすべてのエンティティに使うことができます。 – Koen

関連する問題