2

を使用して提示したいCore DataUITableViewモデルがあります。問題は、すべてUITableViewCellに独自のカスタムの高さがあり、計算に時間がかかることです。したがって、それらを事前に計算してキャッシュしたいと思います。

これが私の考えです:

すべてのモデルには、 と呼ばれる一時的なプロパティが 1 つありますcacheNSObjectこのプロパティには、データを遅延計算できる独自のキャッシュ オブジェクト ( のカスタム サブクラス) が含まれます。

そして、ここに私の質問があります:

  • cacheオブジェクトを格納するために一時的なプロパティを使用することは良い考えですか? それとも、それらをに保存する方が良いでしょうNSDictionaryか? もしそうならObjectID、鍵として使用しても安全でしょうか?
  • cacheアプリの起動時に、すべてのオブジェクトに対してバックグラウンドで事前計算を実行する必要があります。を使用してすべてのオブジェクト (おそらく数千) にアクセスし、それらのオブジェクトに事前計算NSFetchRequestを依頼することは良い考えでしょうか?cache
4

2 に答える 2

1

ルドルフ、

この問題@property CGSizeは、テーブル ビューで使用されているエンティティの単純なものを使用して解決します。行の高さが要求されたときにサイズがゼロかどうかを確認し ( -tableView:heightForRowAtIndexPath:)、ゼロの場合は計算して ivar に保存し、返します。これは非常に簡単で、モデル内のプロパティである必要はありません。この高さが変わる可能性がある場合は、それらの条件を追跡し、テーブル ビューに通知する必要があります。したがって、キャッシュされた値を吹き飛ばすことができます。

アンドリュー

于 2013-01-27T12:50:40.553 に答える
0

アプリケーションの起動時に計算しているため、キャッシュしようとしているプロパティはあまり動的ではないようです。それを永続的なプロパティにして、データベースに保存するときに値を計算することをお勧めします。何らかの理由で値が変更された場合、値を再計算できます。バックグラウンド スレッドでエンティティのすべての新しいレコードを保存している場合、これはさらに効果的です。

于 2013-01-25T18:55:40.363 に答える