3

ユーザーがエンティティを動的に作成する必要があるiPadアプリケーションを構築しています。私はすでにプログラムが使用する3つのエンティティを持っています。
それを行う方法のコードを手伝ってもらえますか?

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

4

2 に答える 2

2

その通りです。NSEntityDescription オブジェクトの配列を作成してsetEntities:から、新しい管理対象オブジェクト モデルを呼び出します。そして最後に、そのモデルを組み込みモデルとマージします。

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

于 2010-11-30T16:51:48.343 に答える
2

新しいエンティティと新しいモデルをオンザフライで作成することは可能ですが、実際にはこれは非常に複雑です。他に何もなければ、既存の永続データを新しいモデルと新しい永続ストア ファイルに移行する必要があります。特に Core Data を使い始めたばかりの場合は、これを試みないことを強くお勧めします。

オプションがあります:

まず、本当に新しいエンティティが必要ですか? Core Data を使い始めたばかりの人は、エンティティを管理対象オブジェクトと間違えることがよくあります。クラスがインスタンスに対するものであるように、エンティティは管理対象オブジェクトに対するものです。エンティティは、オブジェクト グラフの作成に使用される抽象化です。実際にはデータは含まれていません。新しいエンティティが必要になるときは、非常にまれです。

次に、何らかの動的エンティティが必要な場合は、通常、動的エンティティを多数の固定サブエンティティに分解し、関係を使用して仮想エンティティを作成するのが最善です。たとえば、動的な人物「エンティティ」が必要なため、モデル内に複数のエンティティを作成し、それぞれが人物の 1 つの属性を保持します。属性と属性をField持つエンティティを持つことができます。次に、属性を持たず、必要なオブジェクトとの関係だけを持つ実際のエンティティを作成します。任意の人に必要なフィールドを追加し、そのフィールドへの関係をたどって仮想人物オブジェクトを再構成できます。fieldNamefieldValuePersonField

ただし、そのような柔軟性が必要かどうかは疑問です。そのような必要性は非常にまれです。一歩下がって、ユーザーが入力する必要があると思われる動的データを正確に確認します。

于 2010-11-30T20:11:44.853 に答える