iOSアプリのデータモデルの設計に少し行き詰まっています。2つのデータクラスを持つバックエンドサービスとしてParseを使用しています:Songs
とRatings
(ユーザー評価)。アプリが起動すると、現在、UITableViewの5つの可能なデータソースを構成するParseに対して5つの個別のクエリを実行しています。
- mainQuery-毎日アップロードされる曲
- topTracksOfTheWeek-今週のトップ評価の曲
- topTracksOfTheMonth
- topTracksAllTime
- userRatedTracks-ユーザーが評価した曲
解析を使用すると、クエリに制約を簡単に追加して、目的のデータを返すことができます。ただし、他の各クエリと比較し、トラックごとに存在する場合は、を各データソースにuserRatedTracks
埋め込む必要もあります。userRating
(ここで効果的に行う方法を学びました:Objective-cでの効率的なループ
パフォーマンスを向上させるためにこの設計を最適化または変更する方法を理解するのに問題があります。上記のクエリはすべて、呼び出されたメソッドgetDataSource
で呼び出され、viewDidLoad
メソッドは、ユーザーが選択したデータソース(デフォルト)にassignDataSource
応じてテーブルのデータソース配列を設定します。mainQuery
理想的には、アプリの起動時mainQuery
にメインスレッドでフェッチされ、テーブルにデータが入力され、他のクエリはバックグラウンドスレッドでフェッチされます。ただし、ユーザーがを表示することを選択した場合、これは非効率的ですtopTracksOfTheWeek
。getDataSource
が呼び出され、topTracksOfTheWeek
クエリに優先順位がない場合。
簡単な方法は、必要に応じて各クエリを遅延ロードすることですが、これにより、最初にすべてのデータをロードする場合と比較して、アプリの応答性が妨げられるのではないかと心配しています。
お分かりのように、私は初心者です。初心者としては、デザインパターンは非常に苛立たしいものだと思います。なぜなら、コードを構造化する方法は、自分がやっている方法よりも優れていると常に思っているからです。複数のデータソースを使用した設計についてアドバイスはありますか?