将 iOS 应用从 NSCoding 转换为 Core Data

Posted

技术标签:

【中文标题】将 iOS 应用从 NSCoding 转换为 Core Data【英文标题】:Convert iOS app from NSCoding to Core Data 【发布时间】:2012-04-17 00:19:48 【问题描述】:

我的应用目前使用 NSCoding 来存储持久数据,但我想切换到 Core Data 以利用它与 iCloud 的集成。问题是该应用目前在 App Store 上运行,我担心一旦我做出更改,我当前用户本地商店的数据就会丢失。

理论上,我应该能够做到以下几点:

    测试是否存在 NSCoding 数据 将数据转换为核心数据格式 为所有未来的“保存”使用 Core Data

...但我没有找到任何有关进行转换的文档。

有什么想法吗?还是我完全不在某个地方?

谢谢

【问题讨论】:

你能做到吗?我发现自己处于类似的情况。 【参考方案1】:

CoreData 做了一些不错的自动迁移,但那是来自不同的 CoreData 存储。在您的情况下,您必须编写自己的转换代码。

保留“旧”类,如果存在“旧”存储,则将其解压缩。然后,只需遍历存储中的对象,并创建它们的 CoreData 等价物。保存 CoreData,关闭它,然后重新加载它以检查以确保一切都相同。然后,删除旧的存储文件。

唯一的缺点是您必须保留旧代码(至少足以取消归档旧的对象格式)。

【讨论】:

以上是关于将 iOS 应用从 NSCoding 转换为 Core Data的主要内容,如果未能解决你的问题,请参考以下文章

NSCoding 到 CKRecord

Swift 中 SKProduct 的 NSCoding 错误

iOS-NSCoder 和 NSCoding

如何将 NSUserDefaults 转换为 CoreData

使用 NSCoding 创建用户可编辑的 Plist

将应用程序从 iOS 6 转换为 iOS 7 [关闭]