【问题标题】:Versioning a persistent keyed archive?对持久键控存档进行版本控制?
【发布时间】:2009-08-18 23:33:06
【问题描述】:
对于我当前的应用程序,我使用 NSKeyedArchiver 方法在启动之间将我的对象持久保存到 iPhone。我想知道在使用版本号创建此文件时标记此文件是否有意义,以便将来当应用程序更新时,我们将知道如果需要迁移,我们正在处理什么样的数据。这是否推荐用于像使用 NSKeyedArchiver 序列化的自定义对象的 NSArray 这样简单的事情?如果是这样,如何/在哪里存储版本号?
谢谢!
【问题讨论】:
标签:
iphone
cocoa-touch
nskeyedarchiver
【解决方案1】:
如果您觉得格式会改变,那么是的,您需要某种方法来检测您正在使用的文件的版本。一种简单的方法(因为您使用的是 NSArray)是简单地将版本号作为 NSNumber 添加到数组的开头或结尾。或者,对于实际上不更改文件的更复杂的方法,您可以将信息存储在单独的文件中(例如,使用链接文件名和版本号的 NSDictionary)。或者,您可以使用用户默认系统来存储它,如果它来自旧版本,请更新文件和用户默认密钥。
我不会使用第二种方法,除非您要处理多个键控数据文件。在这三个中,我可能会选择最后一个,但可能还有其他更有意义的方法。