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数据库备份恢复之逻辑备份与恢复

xtrabackup热备和恢复mysql

DiskGenius(磁盘分区/数据恢复) 32位 V4.9.1 免费绿色版

己亥清爽恢复系列之数据文件3篇:非核心数据文件物理损坏或丢失(无备份恢复)

iTunes 是不是备份核心数据?