シーケンス間に時間のギャップがある場合、コアデータエンティティのシーケンスを単一のグラフに表示する方法の問題が発生しています。
固定長の棒グラフ(UITableViewに基づく)を取得しました。各棒はコアデータエンティティで表され、すべてのエンティティにタイムスタンプが付けられ、相互にフォローしているため、このようなデータを並べ替えると、次のようなグラフになります。このようなグラフの良いところは、NSFetchedResultsController
追加された新しいイベントに応じてテーブルビューを動的に更新するために使用できることです。その結果、時間の経過とともに左側に新しいバーが追加されたように見えます。
私の問題は、このグラフを拡大して、24時間の長さで、左右にスクロールできるようにしたいということです。この場合、アプリにデータが存在しないエピソードがあります。最終的な結果は、データにギャップがあるときにNSFetchedResultsControllerに依存していて、欠落しているデータに対して空白のセルを表示したい場合です。
私はあなたがどのように問題に取り組むかについて興味があります。
私は2つの潜在的な解決策を見ています:
1)を使用するアプローチをやめ、NSFetchedResultsController
代わりに。のバーの数を手動で計算しUITableView
ます。各バーは、開始日と終了日によって定義されます。次にNSFetchRequest
、述語とともに使用して、各バーのデータをクエリできます。タイムスタンプがバーの日付範囲内にあるイベントがある場合はバーが表示され、そうでない場合は空白が表示されます。
アプローチ#1の問題は、速度が遅く、データセット全体をスクロールできる一方で、新しいバーごとに各フェッチ要求が実行されるため、低速で遅延が発生することです。さらに、新しいデータが追加されたことに応じてテーブルを手動で更新する必要がありますが、これは適切に実装するのが困難です。
2)データセットに空白のイベントを事前に入力し、データが利用可能になったら「それらを入力」することができます。これにより、フェッチされた結果コントローラーでテーブルビューを維持できるため、スクロールがスムーズになりますが、アプリで使用される永続ストレージが大幅に増加します(アプリの使用の間に空白のエンティティが作成されるため)。
私が考えていない追加のアプローチがあるかどうか私はさまよっています。アプリの永続データストレージの「ギャップ」を考慮した、横にスクロール可能な棒グラフをどのように作成しますか?
ご意見ありがとうございます!