2010-11-30 12 views
3

私はエンティティを動的に作成するユーザが必要なiPadアプリケーションを構築しています。私はすでに3つのエンティティを使用してプログラムを使用しています。
コードの作成方法を教えてください。Objective-Cでエンティティを動的に作成する方法は?

私は新しいmanagedObjectModelを作成する必要があり、新しいエンティティを追加し、既存のものにマージよりも、私の理解によると、全体の構造を理解したい、それが正しいのですか?

答えて

2

大規模複雑で、実際にその場で新しいエンティティと新しいモデルを作成することは可能ですが。そうでなければ、既存の永続データを新しいモデルと新しい永続ストアファイルに移行する必要があります。特にCore Dataを使い始めたばかりの方には、これを試してみることを強くお勧めします。あなたが実際に新しいエンティティを必要と確信している、まず

あなたは選択肢がありますか? Core Dataを使い始めたばかりの人は、管理対象オブジェクトのエンティティを誤っていることがよくあります。エンティティは、クラスがインスタンスになるときに、管理オブジェクトになります。エンティティは、オブジェクトグラフを作成するために使用される抽象です。彼らは実際にデータを含んでいません。新しいエンティティが必要な時代は非常にまれです。あなたが動的なエンティティのいくつかの種類が必要です場合

第二に、それは通常、多くの固定のサブエンティティに動的なエンティティを分解して、仮想エンティティを作成するために関係を使用するのが最善でしょう。例えば。動的Person "エンティティ"が必要です。そのため、モデル内にそれぞれの属性を保持する複数のエンティティを作成します。 fieldNameアトリビュートとfieldValueアトリビュートを持つFieldエンティティを持つことができます。次に、実際のPersonエンティティに属性がなく、必要なFieldオブジェクトとの関係のみを持ちます。任意のフィールドに必要なフィールドを追加して、関係をそのフィールドに移動することによって仮想人物オブジェクトを再構成することができます。

しかし、私はあなたがそのような種類の柔軟性を必要としていると疑っています。そのような必要性は非常にまれです。私は元に戻って、ユーザーが入力する必要があると思われる動的データを正確に見ていきます。

+0

+1私はあなたがOPを別の管理対象オブジェクト(共通)を追加する必要があり、別のエンティティ(途方もなくまれ)を追加する必要性の間で混同されていることを推測するに、右だと思います。 – h4xxr

+0

TechZenに感謝します。第2の選択肢についてもっと詳しく知ることができますか?お願いします... –

2

正しいです - あなたが新しい管理オブジェクトモデルにsetEntities:を呼び出し、その後、NSEntityDescriptionオブジェクトの配列を作成したいです。最後に、そのモデルを組み込みモデルとマージします。

しかし、管理オブジェクトコンテキストを作成するために使用される(またはストレージのために使用される)された後は、モデルを変更することはできませんのでご注意。モデルを変更した後は、新しいストレージとコンテキストを作成する必要があります。

関連する問題