1

在 iOS 应用程序中,我们通过 NSKeyedArchiver/NSKeyedUnarchiver 使用复杂对象的序列化来存储信息和数据。

所以应用程序将在应用程序包中包含这样一个序列化对象,并且该文件将在一个特定的 iOS 版本下创建(比如说 iOS 5.0)

由于应用程序将在不同的 iOS 版本(> 5.0)上运行,甚至在未来的版本中,我们希望确保应用程序包中包含的原始序列化对象在所有其他 iOS(6.1、7.0、 ...)

假设要序列化的复杂对象由其类包含在所有这些 iOS 版本的 SDK 中的对象组成(为简单起见,我们假设这些类将来不会弃用),我们可以完全确定它会始终与所有 iOS 兼容?

4

1 回答 1

2

一般来说,是的。

要绝对 100% 确定您需要使用所有自定义对象,然后您可以完全控制存档/取消存档过程。但是,只要所有类都适当地使用密钥归档器的编码和解码方法,那么一切都将是未来兼容的。

如果 Apple 出于某种原因确实决定打破这一点,您最好的选择是捕获由此产生的异常并通知用户他们需要升级到应用程序。

您的替代方法是以不同格式存储数据的初始部署(如 JSON,可能已压缩),然后在应用程序启动时,如果您有现有版本,请使用它,如果没有,则读取初始部署数据。

于 2013-05-14T08:48:18.057 回答