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