4

我有一个有时会更改的对象列表,并且我想在应用程序关闭或移至后台时在设备上保留一个持久缓存。列表中的大多数对象都不会改变,所以我想知道保存列表的最佳方法是什么。我有两个主要的选择:

  1. 使用 NSKeyedArchiver / unArchiver - 这是最方便的方法,因为我正在序列化的对象包含其他自定义对象,因此我可以为每个对象编写自定义编码方法。主要问题是我在谷歌上没有找到如何仅序列化更改的对象,并且每次序列化整个列表似乎非常浪费。

  2. 使用 SQLite - 这是我目前正在使用的,这里最糟糕的问题是添加 \ 更改对象的属性非常复杂,而且不太优雅。

有什么方法可以让我享受 NSKeyedArchiver 的便利,但只序列化更改的对象?

4

1 回答 1

0

像 Adam Ko 一样,我建议使用 Core Data:
毕竟,这类问题才是它真正擅长的!

如果你的缓存项是相互独立的,这可以通过简单地用一个薄层包裹NSManagedObject你的缓存项来实现(即你可以从核心数据中受益,只需对你的应用程序进行微小的更改)。

此包装实体可以将缓存项的存档版本存储在类型属性中,NSBinaryDataAttributeType并通过瞬态属性提供对未存档对象的访问。有关示例,请参阅非标准持久属性。

于 2011-01-08T15:21:36.667 回答