如何将 NSUserDefaults 转换为 CoreData

How to convert NSUserDefaults to CoreData

我有一个 3 多年前开发的应用程序,使用 Obj C 和 NSUserDefaults (NSCoding / NSKeyed Archiver) 作为我保存数据的方式。几个月前,我重新设计了该应用程序,并认为现在是重新开发该应用程序的好时机,但这次使用 Swift 3 和 Core Data。该应用程序已完成,但这个难题的最后一部分是如何将我保存的旧数据 (NSUserDefaults) 转换为新的 CoreData 实体。

所有迁移示例似乎都来自旧版本的数据库 (CoreData) 并向其中添加了一些新内容。我很难找到我正在尝试做的事情的教程或起点。我敢肯定它之前已经完成并且可能已经完成了数千次,但我似乎找不到任何关于它的示例或文档。

我希望有人能够通过教程或类似项目为我指明正确的方向。

对于您没有找到指南,我并不感到惊讶,因为这种情况并不常见。用户默认值和核心数据有两个不同的用途,因此想要从一个迁移到另一个是不常见的。

假设您的数据对 Core Data 有意义,

  1. 创建一个新的 Core Data 模型并添加一个或多个实体来表示您的数据。
  2. 在应用启动时迁移,然后再尝试使用数据。

迁移过程类似于:

  1. 检查数据是否存在于用户默认值中。
  2. 如果是,请阅读它并创建适当的托管对象来表示它。根据在用户默认值中找到的值设置这些新对象的属性。
  3. 从用户默认值中删除数据,以便下次第 1 步不会触发新的迁移。

执行此操作的代码都是自定义的,但应该不难。