gpt4 book ai didi

iphone - NSKeyedArchiver 仅对数组的一部分进行编码

转载 作者:行者123 更新时间:2023-12-03 16:15:56 24 4
gpt4 key购买 nike

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

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

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

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

最佳答案

像 Adam Ko 一样,我建议使用核心数据:
毕竟这种问题才是它真正擅长的!

如果您的缓存项彼此独立,则可以通过简单地用一层薄薄的 NSManagedObject 包裹您的缓存项来实现这一点(即您可以受益于核心数据,只需对您的应用程序进行少量更改)。

此包装器实体可以将缓存项的存档版本存储在 NSBinaryDataAttributeType 类型的属性中,并通过 transient 属性提供对未存档对象的访问。请参阅Non-Standard Persistent Attributes举个例子。

关于iphone - NSKeyedArchiver 仅对数组的一部分进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4483023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com