4

時々変更される可能性のあるオブジェクトのリストがあり、アプリを閉じたりバックグラウンドに移動したりするたびに、デバイスに永続的なキャッシュを保持したいと考えています。リスト内のオブジェクトのほとんどは変更されないため、リストを保存する最善の方法は何かと考えていました。私が考えている2つの主要なオプションがあります。

  1. NSKeyedArchiver / unArchiver の使用 - これは最も便利な方法です。シリアライズしているオブジェクトは他のカスタム オブジェクトを保持しているため、この方法でそれぞれのカスタム エンコード メソッドを記述できます。主な問題は、変更されたオブジェクトのみをシリアル化する方法を Google で見つけられなかったことです。毎回リスト全体をシリアル化するのは非常に無駄に思えます。

  2. SQLite の使用 - これは私が現在使用しているものです。ここでの最悪の問題は、オブジェクトのプロパティの追加と変更が非常に複雑で、あまり洗練されていないことです。

NSKeyedArchiver の利便性を享受しながら、変更されたオブジェクトのみをシリアル化する方法はありますか?

4

1 に答える 1

0

Adam Koのように、Core Dataを使用することをお勧めします。
この種の問題は、結局のところ、本当に得意なことです。

キャッシュアイテムが互いに独立している場合、これは、キャッシュアイテムをの薄いレイヤーでラップNSManagedObjectするだけで実現できます(つまり、アプリにわずかな変更を加えるだけでCore Dataの恩恵を受けることができます)。

このラッパーエンティティは、アーカイブされたバージョンのキャッシュアイテムをタイプの属性に格納しNSBinaryDataAttributeType、一時的なプロパティを介してアーカイブされていないオブジェクトへのアクセスを提供できます。例については、非標準の永続属性を参照してください。

于 2011-01-08T15:21:36.667 に答える