在iOS应用中,我们通过NSKeyedArchiver / NSKeyedUnarchiver使用复杂对象的序列化来存储信息和数据。
因此应用程序将在应用程序包中包含这样的序列化对象,并且此文件将在一个特定的iOS版本下创建(比如说iOS 5.0)
由于该应用程序将在不同的iOS版本(> 5.0)上运行,甚至在未来的版本中运行,我们希望确保应用程序包中包含的原始序列化对象在其他所有iOS上都可以完全读取( 6.1,7.0,...)
假设要序列化的复杂对象由其类包含在所有这些iOS版本的SDK中的对象组成(为简单起见,我们假设将来不会对这些类进行弃用), 我们可以完全确定它将始终与所有iOS兼容吗?
答案 0 :(得分:2)
一般来说,是的。
绝对100%确定您需要使用所有自定义对象,然后您可以完全控制归档/取消归档过程。但是,只要所有类都适当地使用键控归档器的编码和解码方法,那么一切都将来会兼容。
如果Apple出于某种原因决定打破此问题,那么最好的选择是捕获产生的异常,并通知用户他们需要获得升级到应用程序。
您的替代方法是以不同的格式存储数据的初始部署(如JSON,可能是压缩的),然后在应用启动时存储(如果您有现有版本),如果没有,则使用它,读取初始部署数据。 / p>