【问题标题】:NSKeyedArchiver/NSKeyedUnarchiver compatibility on different iOS versionsNSKeyedArchiver/NSKeyedUnarchiver 在不同 iOS 版本上的兼容性
【发布时间】:2013-05-08 11:06:11
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ios serialization compatibility nskeyedarchiver


    【解决方案1】:

    一般来说是的。

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

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

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

    【讨论】:

    • 非常感谢,我会按照你的异常捕获建议,这样更安全
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2019-08-27
    相关资源
    最近更新 更多