0

iOSアプリのデータモデルの設計に少し行き詰まっています。2つのデータクラスを持つバックエンドサービスとしてParseを使用しています:SongsRatings(ユーザー評価)。アプリが起動すると、現在、UITableViewの5つの可能なデータソースを構成するParseに対して5つの個別のクエリを実行しています。

  1. mainQuery-毎日アップロードされる曲
  2. topTracksOfTheWeek-今週のトップ評価の曲
  3. topTracksOfTheMonth
  4. topTracksAllTime
  5. userRatedTracks-ユーザーが評価した曲

解析を使用すると、クエリに制約を簡単に追加して、目的のデータを返すことができます。ただし、他の各クエリと比較し、トラックごとに存在する場合は、を各データソースにuserRatedTracks埋め込む必要もあります。userRating(ここで効果的に行う方法を学びました:Objective-cでの効率的なループ

パフォーマンスを向上させるためにこの設計を最適化または変更する方法を理解するのに問題があります。上記のクエリはすべて、呼び出されたメソッドgetDataSourceで呼び出され、viewDidLoadメソッドは、ユーザーが選択したデータソース(デフォルト)にassignDataSource応じてテーブルのデータソース配列を設定します。mainQuery理想的には、アプリの起動時mainQueryにメインスレッドでフェッチされ、テーブルにデータが入力され、他のクエリはバックグラウンドスレッドでフェッチされます。ただし、ユーザーがを表示することを選択した場合、これは非効率的ですtopTracksOfTheWeekgetDataSourceが呼び出され、topTracksOfTheWeekクエリに優先順位がない場合。

簡単な方法は、必要に応じて各クエリを遅延ロードすることですが、これにより、最初にすべてのデータをロードする場合と比較して、アプリの応答性が妨げられるのではないかと心配しています。

お分かりのように、私は初心者です。初心者としては、デザインパターンは非常に苛立たしいものだと思います。なぜなら、コードを構造化する方法は、自分がやっている方法よりも優れていると常に思っているからです。複数のデータソースを使用した設計についてアドバイスはありますか?

4

1 に答える 1

0

結果を Core Data にロードしていますか? バックグラウンド MOC でデータをロード/同期し、コア データに保存できます。ユーザーが起動すると、新しい解析結果が更新されるまでローカルの結果が取得され、インジケーターが表示されるため、ユーザーはデータが更新されていることがわかります。Ray Wenderlichs のチュートリアルをチェックしてください。これは、これを実行するために必要なものとほぼ同じです。Parse も使用

http://www.raywenderlich.com/15916/how-to-synchronize-core-data-with-a-web-service-part-1

于 2012-09-13T17:28:21.127 に答える