0

お湯のタンクを管理するアプリを設計しています。アプリはサービスに対して RESTful API 呼び出しを行います。

  1. タンク内のさまざまな層の温度プロファイルを取得します。
  2. ユーザーがタイマー (浸漬タイマーなど) のカスタム コントロールを使用して、発熱体をオン/オフする時間を設定できるようにします。

最初のカットとして、ナビゲーション コントローラーに 2 つのタブがあります。1. 温度を示す目盛り付きのタンクの写真を示すグラフィック。2. 市販の家庭用タイマーのような 2 つの同心リングを備えたカスタム コントロール。ユーザーは 30 分スロットをポイントしてドラッグし、発熱体の時間を設定できます。

私は両方のカスタムビューをうまく機能させています。Apple の ios ドキュメントをすべて読んだ後でも、私は非常に単純な点で立ち往生していると言うのが怖いので、助けていただければ幸いです。

データ サーバー (組み込み Linux を実行する BeagleBone) は、2 セットの RESTful API を実装します。1 つはタンクの温度を処理し、もう 1 つはタイマーを読み取って更新するためのセットです。

  1. モデルをインスタンス化し、API を発行し、「読み込み中...」を表示するビュー コントローラーを使用してアプリを起動し、単一のアプリケーション全体のデータ モデルを設定するのが最善ですか。

  2. それぞれのビュー コントローラー (タンクのイメージとタイマー コントローラー) に独自の (個別の) モデルを設定しますか?

  3. そして、私にとっての大きな疑問 (Smalltalk、C++、Java で何年も働いてきたにもかかわらず...) の推奨される方法は何ですか?

    • ビュー コントローラをインスタンス化する
    • モデルがロードされていない場合、「ビジー」スピナーでビューをロード/表示します

私のアプリは、GCD、または実際には KVO には十分に複雑ではありません。これは基本的に、「ビューを表示し、Web サービスを呼び出してデータを読み取る」、「データを変更する」、「Web サービスを呼び出してデータを置き換える」です。

基本的に、私の質問は、ビューが画面に表示されたときに、コントローラーにモデルがあるか、まだデータをロードしているモデルがあるかを判断するためのベストプラクティスは何ですか?

長文の質問で申し訳ありません。

4

1 に答える 1

1

モバイル アプリで非常に一般的なタスクについて、非常に良い質問をしました。私の提案は

  1. 2 つのタブには実際には共通のデータがないため、問題は「リモート データを使用してビュー コントローラーを初期化する方法」に要約されます。

  2. ユーザーがリモート データなしでアプリを使用できない場合、

    • [vc viewDidLoad] で読み込み中のビューを表示し、サーバーからデータを非同期に取得し始めます。VC は NSURLConnectionDelegate を実装して、コールバックをリッスンする必要があります
    • データがサーバーから正常に取得されたら、読み込み中のビューを閉じて、データをユーザーにレンダリングします
    • データ フェッチが失敗した場合 (ネットワークまたはサーバーのダウンタイムが原因で)、アラート ビューをユーザーに表示し、データ フェッチを再試行します。フェッチが数回失敗した場合は、後で再試行するようユーザーに伝えます
    • ローディング ビューをより美しくして、ユーザー エクスペリエンスを向上させることができます。ローディングビューはすべてのボタン/コントロールをカバーする必要があることに注意してください。そのため、ユーザーはデータの取得中にアプリの状態を台無しにすることはできません
  3. ユーザーがリモート データなしでアプリを使用できる場合、それは別の話です。その場合、ローディング ビューを使用しないでください。また、バックグラウンドで静かにデータをフェッチする必要があります。これはあなたの場合ではないように思われるので、この場合の回答を複雑にするつもりはありません。

于 2013-01-21T07:50:52.630 に答える