2012-02-10 10 views
0

CoreDataマネージャが自分のビューとやり取りする方法が、正しい/もっとも効率的な方法であるかどうかは疑問です。すべてのUINavigationControllers組み込みビューで利用可能なSingleton CoreDataマネージャ

CoreDataスタックを格納するために、Appleの例である標準のシングルトンパターンを使用します。また、Webサービスやその他のヘルパーメソッドで使用するユーティリティも含まれています。

2つのviewController、tableViewController、およびもう1つのviewController(プログラムによって作成されたviewController)を持つUINavigationコントローラがあります。

最初の2つのviewControllerはそれぞれセットアップ(Webサービスアドレスなど)とログインです。バットからすぐに、私はログインビュー(2番目のビュー)にポップアップします。ログインに成功すると、tableViewがプッシュされます。セルを選択すると、ビューがプログラムで作成され、プッシュされます。

これらのビューにはそれぞれデータストアが必要なので、viewDidLoadではシングルトンを取得しています。

これはやり方ですか?他のアイデアは何ですか?ナビゲーションコントローラはプロパティをすべての埋め込みビューに公開できますか?

ありがとうございました。

+0

あなたのポストの最後に3つの質問をしていますか、質問を読んでいるときに、あるビューコントローラから別のビューコントローラに情報を移動する最善の方法を尋ねていますか? –

+0

私は最後の3つの質問をしています。私は情報をうまく動かすことができて、私の現在のソリューションは動作しますが、これが私の最初のiOSプロジェクトです。基本的には、私のCoreData/viewアーキテクチャーが「見た目が正しい」かどうか疑問に思うだけです。 –

答えて

0

最近まで、Matt Gallagherの合成シングルトンを使用して、同じことを言いました。

しかし、最近私はARCを使うようにプロジェクトを変換したので、シングルトンの設定はやや単純化されました。今私は持っている:

static MMPersistentStoreController *sharedMMPersistentStoreController = nil; 

+ (MMPersistentStoreController *)sharedMMPersistentStoreController { 
    if (sharedMMPersistentStoreController == nil) 
    { 
     sharedMMPersistentStoreController = [[self alloc] init]; 
    } 

    return sharedMMPersistentStoreController; 
} 

これはかなり標準的なアプローチだと思う。確かにどこでもオブジェクトを渡すよりも優れています。

代替案としては、synthesizeとすると、アプリケーション代理人のpropertyとしてUIApplicationにアクセスすることができます。

前者のアプローチでは、MMPersistentStoreControllerクラスオブジェクトによって作成された静的インスタンスです。後者の場合、インスタンスはアプリケーションの中に一度し​​か存在しないオブジェクトのivarです。

+0

私はリンゴがコアデータシングルトンから人々を納得させると思った...特に何らかの理由がありますか? – Jeef

+0

具体的な理由は何ですか?ありがとう –

関連する問題