0

Core Data (iPhone 用) を使用して最初のプロジェクトを設計していますが、設計アプローチに関連する可能性のある問題がいくつかあります。

ユーザーが注文を作成できるアプリケーションを実行しています (レストランの場合としましょう)。グラフィック デザイナーを使用して永続化オブジェクト (OrdeMO) をモデル化しています。管理対象オブジェクトであることを示すために、各名前の先頭に MO を追加します。XCode を使用して、Managed Object Class を自動的に作成します。

Managed Context で新しいオブジェクトを検索または作成できる "DAO" クラスをいくつか作成しました。

今私の問題に。

ユーザーが作成している注文を保存するために OrderMO オブジェクトを作成したいのですが、ユーザーが実際に注文するまで、それをコンテキストの一部にしたくありません。[OrderMO alloc] を使用してオブジェクトを作成しようとしましたが、取得したオブジェクトは「不完全」であり、その属性を設定しようとするとエラーが発生します。

問題は、それを使用するためにコンテキスト内で注文を作成する必要があることだと思います。そうですか?

私はさまざまなオプションを検討しました:

  1. コンテキストでオブジェクトを作成し、ユーザーが注文を破棄した場合はユーザー ロールバックを作成します。問題は、ユーザーがプロセス中に他のコンテキスト オブジェクト (設定など) を保存する可能性があるため、これが機能しないことです。「別のトランザクション内」でオブジェクトを作成する方法はありますか?

  2. MO と同じデータを保持するラッパー オブジェクトを作成し、ユーザーが注文したときにのみ MO を作成します。これの欠点は、新しいクラスを維持しなければならないことです。

  3. MO に「placed」などの属性を作成し、コンテキストで検索をフィルタリングするために使用します。これの問題は、ドメイン内に「ゴミ」オブジェクト (つまり、未配置の注文) が残り、時々クリーンアップを行う必要があることです...

他に選択肢はありますか?

どんな提案でも大歓迎です。

ありがとう(この長い投稿を読んでくれて!)ゴンソ

4

1 に答える 1

0

管理対象オブジェクト コンテキストで OrderMO オブジェクトを作成し、ユーザーが注文しない場合は削除する必要があります。
オブジェクトが削除される前にコンテキストが保存された場合、「ゴミ箱」オブジェクトは次回の保存時に永続ストアから削除されます (コンテキストが保存されていない場合、「ゴミ箱」オブジェクトは永続ストアに保存されません)。 .
注文が行われたかどうかを判断するフラグは、オプション 3 で提案されているように、OrderMO オブジェクトに存在する必要はありません。編集中の注文を追跡しているビュー コントローラーに存在する可能性があります。また、「ゴミ箱」オブジェクトは削除されているため、存在しません。

于 2009-11-03T05:18:03.630 に答える