iOS:备份核心数据并使用较新的模型版本进行恢复
Posted
技术标签:
【中文标题】iOS:备份核心数据并使用较新的模型版本进行恢复【英文标题】:iOS: backup core data and restore with newer model version 【发布时间】:2013-03-27 08:52:55 【问题描述】:如何备份我在版本 1 中创建的核心数据对象并在版本 2 中恢复它们?如果模型更改,只需复制 .sqlite 文件将不起作用...有没有办法备份文件恢复它然后开始迁移?
【问题讨论】:
为什么?您的模型更改是否过于复杂而无法自动进行轻量级迁移? 不,他们不是(还没有?)。但我不能用旧的sqlite替换,可以吗?我的意思是在应用程序运行时,例如用户点击“恢复备份”,然后恢复应该发生。 为什么不呢?我的意思是,您必须先删除所有“打开的”托管对象上下文,然后再打开它,但当您打开它时,它会自动再次执行迁移。 魔法唱片如何做到这一点?复制 sqlite-file 前后的步骤是什么?我必须复制所有三个文件吗? (.sqlite, .sqlite-shm, .sqlite-wal?) 【参考方案1】:非常感谢您的建议!
通过以下方式用 MagicalRecord 解决它:
[MagicalRecord cleanUp];
将 .sqlite、.sqlite-shm、.sqlite-wal 复制到新位置
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:sqliteFileName];
完成 - 完美运行!
【讨论】:
【参考方案2】:您需要使用自动轻量级迁移来迁移数据库。
见:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweightMigration.html
iPhone Core Data "Automatic Lightweight Migration"
【讨论】:
以上是关于iOS:备份核心数据并使用较新的模型版本进行恢复的主要内容,如果未能解决你的问题,请参考以下文章
「oracle备份恢复」oracle数据库备份恢复之逻辑备份与恢复
DiskGenius(磁盘分区/数据恢复) 32位 V4.9.1 免费绿色版