2011-08-09 9 views
2

私は(25以上の)View Controllerを持つアプリを持っています。これらのVCは多くのデータを使用していますが、そのほとんどはローカルにアプリケーションに保存することも、サーバーに保存することもできます。私はむしろアプリケーションのサイズを最小限に抑えるためにこのデータをサーバーに保存したいので、そうするためのベストプラクティスは、すべてのデータを取得する特別なクラスであるデータクラスを持つことですviewDidLoadなどのように、必要に応じて個々のデータを取得するのではなく、一度に1つの場所でインターネットを使用できます。だから私の質問は、それは本当に私のアプリ内のすべてのクラスの描画から中央データソースを作ることが良いですか?もしそうなら、私はそのクラスをどのように設定すべきかの例を提供することができますか?たとえば、バックグラウンドで実行する方法(別のスレッドと思います)と、NSDictionaryとNSArraysなどをデータソースから必要に応じて個々のクラスに渡す方法について説明します。前もって感謝します。私は必要に応じて明確にすることができます。すべての私のView Controllerのセントラルデータソース

+0

これは、あなたのアプリが何をしているのかを知らなくてもちょっと答えにくいです。 – Altealice

+0

本当に重要ですか?それは多くの情報を持っています。その大部分は、plistsの配列と辞書の形式で格納されています。配列の内容が栄養アドバイスや数式である場合、なぜ重要なのですか? – Andrew

+0

質問の目的は、その情報にアクセスしてそれを処理するためのより良い方法を見つけることです。 – Andrew

答えて

1

次の2つの異なったトピックについて話している:

  1. は、すべてのビューコントローラからの主な情報源からのデータにアクセスします。
  2. サーバーからのデータへのアクセス。

最適なソリューションは、いくつかの異なるクラスで使用される変数を保持する新しいクラスを作成することです。 This tutorialは、これを行う方法を説明しています - 私はこれがあなたがインターネット上で見つける最高のソリューションの1つになると思います。

2番目の質問を解決するには、SQLite文を実行し、データベースから情報を取得するクラスも作成する必要があります。あなたはそれを行うためにSQLiteを使うべきです。もしあなたがそれを気に入らなければ、Core Dataを使ってみることができます。私の意見ではSQLiteははるかに単純です。 This tutorialにその方法を説明しています。

両方を実行したら、ビュー・コントローラー間で情報を共有し、異なるビュー・コントローラーからそのインスタンスにアクセスするクラスのデータベース・サービスを処理するクラスのインスタンスを作成できます。

最後に、別のスレッドでそのようなタスクを実行しようとする可能性があります。あなたはNSOperationQueueオブジェクトを使ってやってみるべきです - 彼らはあなたの仕事の大部分を行います。 Appleが提供しているdeveloper documentationの記事を読んで、その仕組みを理解することをお勧めします。

+0

この回答に感謝します。徹底的に書かれているようです。私はあなたが提案した材料とアイデアを見て、私が仕事の解決策を得ることができるかどうかを見極めるつもりです。 – Andrew

1

コメント欄にご回答をもとに、私は、このソリューションをお勧めします:デバイスにサーバーからデータを転送する

  1. を - あなたのサーバーから あなたのデータをダウンロードした後、中のSQLiteデータベースに保管してくださいデバイス
  2. 多くのビューコントローラからデータにアクセス - コアデータ を使用して、ビュー コントローラのいずれかからデータベース内のダウンロードデータにアクセスします。

データベースプログラミングについてよくわからない場合は、コアデータを簡単に開始することができます。テーブルを簡単なobjective-cクラスのようにアクセスできるクラスにカプセル化するので、SQLを習得する必要はありません。また、必要に応じて、いつでも任意のView Controllerから呼び出すことができるため、データを処理するための特別なクラスを作成する必要はありません。また、ビューコントローラー階層を介してデータを渡すよりも、パフォーマンスに優れ、より洗練された設計に優れています。ガイドhereを参照してください。

関連する問題