没有模型版本化的CoreData迁移或读取sqlite wal文件

时间:2014-11-27 13:50:44

标签: ios sqlite core-data magicalrecord core-data-migration

我有一个奇怪的问题,因为我忘记更改Core Data模型版本以更新我的应用程序。现在我在AppStore上有一个应用程序让我们说版本1.0。对于1.1版本,我已经改变了核心数据模型而没有创建第二版本。我正在使用魔法记录,以便在发生冲突时删除以前的Sqlite文件。 我的应用程序在iOS 7上,它使用日志模式(提前写日志,wal文件),我不能使用我的旧sqlite文件来获取数据。 出于某种原因,我无法推送更新1.x,其中我将所有数据保存在其他地方,并在发生冲突时备份到2.0。

问题是我不想放弃以前的数据。怎么办?

1 个答案:

答案 0 :(得分:1)

有两种方法可以解决这个问题:

  1. 从AppStore中删除1.1以避免对现有用户进行必要的更新。添加缺少的模型版本(我希望您使用SVN,GIT或任何其他源版本控制工具?),理论上您可以手动还原所有更改以使模型看起来与1.0相同,然后创建1.1版本。提交支持从1.0迁移的新应用版本。
  2. 如上所述从AppStore中删除1.1。使用FMDB或任何其他框架从旧SQLite存储中手动迁移数据以进行直接sqlite访问。通过SQL读取所有数据,并使用CoreData方法将它们插入CoreData存储中。