0

問題:ユーザーが xml で多数のオブジェクトをダウンロードするアプリケーションを実装しています。ピーク メモリ フットプリントを削減するために、データをコア データに解析し、バッチ処理を使用してそれらをテーブル ビューに表示したいと考えています。オブジェクトは毎日変化するため、とにかく保存したくありませんが、ユーザーがお気に入りのオブジェクトを選択して保存できるようにしたいと考えています。お気に入りは別のテーブル ビューに表示されます。

私が考えている解決策:

  1. 2 つの NSManagedObjectContext (1 つのメインと 1 つの tmp) を作成します。お気に入りのコピーオブジェクトとしてマークされている場合は、オブジェクトを解析して tmp に保存し、そこから保存します。
  2. メモリのことは忘れて、データを何らかの配列に保持し、選択したものだけを保存します。
  3. 1 つの NSManagedObjectContext を使用してすべてを保存し、アプリケーションが終了する前に、アンマーケットをお気に入りとして削除します。

ここでのヒントはいいでしょう。また、私は Core Data を初めて使用し、問題が発生する可能性があるため、解決策 1 を含むコード サンプル コードも示します。私は2日間、適切な解決策を探していました。

4

1 に答える 1

0

これが実際に必要であることを示す確固たる証拠がない限り、またはそれまでは、メモリフットプリントの最適化を忘れることをお勧めします。しかしもちろん、「xml 内の多数のオブジェクト」が正確に何を意味するかによって異なります。

何百万もの XML ドキュメントをダウンロードして、アプリケーションの終了時にそれらを再び破棄することはないと思います (ネットワーク リソースの深刻な浪費になるため)。対照的に、数百または数千の小さな XML のようなデータ構造を持つ配列は、メモリに関する限り、ほとんど心配する必要はありません。

そうは言っても、結局のところ、一時データと永続データの両方を Core Data で保存する必要がある場合は、2 つの個別のコンテキストではなく、2 つのエンティティを持つ単一の NSManagedObjectContext を使用します。または、単一のエンティティを持ち、特定のインスタンスを一時データとしてマークすることもできます。2 つの異なるコンテキストを管理することは、追加のオーバーヘッドを意味しますが、そのアプローチには利点がありません。

于 2013-09-01T17:21:10.273 に答える