0

オブジェクトの配列を保持するシングルトン データ コントローラーがあります。私の解決策については、たとえばバナナの質問を参照してください: singelton dataController banansArray

ここで、バナナの配列を永続的な状態に保存したいと思います。このコア データ チュートリアル:コア データ - ストア イメージにより、コア データの一般的な理解が深まり、データ コントローラーをシングルトンに変更する前にアプリケーションに含めることができました。

今何が最高ですか?

アプリケーション デリゲート内で生成されたコア データ スタックを、バナナ配列を管理する singletonDataController に移動する必要がありますか? または、コア データ テンプレートを使用して生成されたマスター ビュー コントローラーで行うように、アプリケーション デリゲートでシングルトンのコンテキストを設定する必要がありますか?

その場合、appDelegate でコンテキストを設定するにはどうすればよいですか? これは、AppDelegate アプリケーションでは機能しません (テンプレートの masterView では機能します)。didFinishLaunchingWithOptions:

DataControllerSingleton *dataController;
dataController.managedObjectContext = self.managedObjectContext;

提供されたbeerDataModelの例では、ManagedObjectCodeは次のとおりです。

if (_mainContext == nil) {
    _mainContext = [[NSManagedObjectContext alloc] init];
    _mainContext.persistentStoreCoordinator = [self persistentStoreCoordinator];
}
4

1 に答える 1

2

あなたの質問に基づいて、それは個人的な選択だと思います。たとえば、私のプロジェクトでは、コア データ スタックを管理するためのシングルトン クラスを維持し、それをアプリケーション全体で使用することを好みます。アプリのデリゲートをクリーンなままにしておくことを好みます。

とにかく、コア データを使用すると、オブジェクトの配列を管理する古いシングルトンはもはや役に立ちません。Core Data を使用すると、永続ストアから取得できるオブジェクトのグラフが得られます (たとえば)。明らかに、モデルを正しく設計する必要があります (エンティティ、関係など)。たとえば、あなたの場合、Banana正しい属性を持つエンティティが正しい選択です。

シングルトン クラスの動作を確認するにはBeerDataModel.h/.m、@BenSheirman を参照してください。これは従うべき非常に良いアプローチです。以下のように使えます。

NSManagedObjectContext *mainContext = [[BeersDataModel sharedDataModel] mainContext];

PS変更またはあなたBeersDataModelBananasDataModel好む名前。

于 2013-05-16T20:23:33.440 に答える