0

是否可以在核心数据持久存储中添加一些“幻数”数据?

我有一个使用自定义二进制文件格式的旧应用程序。每个文件都以一个 5 字节的幻数(比如说0A 0B 0C 0D 0E)和一个 1 字节的格式版本标识符开始;之后是实际数据。当用户尝试打开文件时,应用程序的现有版本会执行以下检查:

  • 如果文件的前 5 个字节与幻数不匹配,用户会收到一条消息,如“文件不是此应用程序可以读取的格式。它可能有错误的文件扩展名。”</li>
  • 如果幻数匹配,但版本标识符高于应用程序可以读取的版本,用户会收到一条消息,如“该文件是使用此应用程序的较新版本创建的。您需要升级到新版本。”</li>

我想利用核心数据存储在新版本的应用程序中,同时仍然使用相同的文件扩展名并保持与旧版本应用程序的适当兼容性:尝试使用旧版本打开使用新版本应该得到他们应该升级的消息,而不是其他消息。这可能吗?如何?

4

1 回答 1

0

NSManagedObjectModel有一个versionIdentifiers返回一组开发人员定义的字符串,这些字符串标识“包含的”模型版本。(请记住,当迁移到新模型版本时,旧模型包含在模型文件/目录中。)

实际上,文档指出

此值旨在用作调试提示,以帮助您确定组合以创建合并模型的模型。

但您仍然可以完全出于您的目的使用此属性的内容。

至于“幻数”,在我看来,您试图在未经用户同意的情况下使数据存储格式无效。馊主意。在我看来,你应该选择另一种设计模式。

于 2012-12-30T20:09:17.033 回答