0

私は、coredata iPhone TabBar アプリで作業し、appdelegate managedObjectContext をすべてのビューとサブビューに渡します。あるインスタンスで、エンティティ A の新しいレコードを作成する必要があり、エンティティ A がユーザーによって保存されていない間に、別のエンティティ B を作成する必要があります同じ共有コンテキストを使用して。今、私の問題は、エンティティ B のコンテキストを保存すると、エンティティ A も保存されることです。ユーザーが保存したくないまで、エンティティAを保存したくありません。

エンティティBまたは何か他のものに対して別のコンテキストを作成する方法は1つしかありません....?

この問題を解決するのを手伝ってください。

ありがとう、

4

1 に答える 1

0

あなたはできる:

  1. 別のコンテキストを使用します。プロ:あなたが望むことをします。短所: 複雑さが増し、関係を簡単に形成できなくなります。
  2. オブジェクトを挿入するときにコンテキストに nil 値を渡して、nil コンテキストで object-A を作成します。次に、保存するときにコンテキストに追加します。プロ:あなたが望むことをします。短所: 上記と同じで、元に戻すサポートなど、コンテキストによって提供されるすべての機能が失われます。
  3. オブジェクトAを削除するだけで、ユーザーは保持したくないと判断します。長所: シンプルで安全。短所: オブジェクト グラフの関係では、オブジェクト A を削除できる必要があります。つまり、保持したい他のオブジェクトがオブジェクト A の存在を要求することはできません。モデルを設計するときは、このことを念頭に置いておく必要があります。

私はほとんどいつも(3)に行きます。これは、最も簡単で安全な方法です。これは、ユーザーが実際に行っていること、つまりデータ オブジェクトを作成してから破棄することを決定することを模倣するため、優れた設計手法でもあります。

于 2010-07-25T14:30:34.983 に答える