【发布时间】:2015-02-03 18:39:25
【问题描述】:
更新:我正在尝试备份和恢复我的核心数据文件(使用基于issue #444 的日志和 MagicalRecord)。在 iOS 模拟器下运行时,我知道每次从应用程序的最后一次执行开始都会移动文件。 Here 是完整的代码(我把它放在这里是因为它很长,现在它的格式和语法被突出显示,使它更容易阅读)。
我可以在应用程序启动时找到新位置,检索我存储的文件并从 Documents 目录中的文件进行恢复,将它们放置在由 NSLog 语句的控制台输出确定的正确新位置(它不会显示正在恢复的 -shm 文件,但它位于同一位置)。
AppDelegate-sqliteFilePath:/Users/rolfmarsh/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/B424CA1A-D41C-488D-A7E9-0F13CB2244B3/Library/应用支持/SalonBook
SVC-sqliteFilePath:/Users/rolfmarsh/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/B424CA1A-D41C-488D-A7E9-0F13CB2244B3/Library/应用支持/SalonBook
documentsBasePath:/Users/rolfmarsh/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/B424CA1A-D41C-488D-A7E9-0F13CB2244B3/Documents
开始 - storePath:/Users/rolfmarsh/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/B424CA1A-D41C-488D-A7E9-0F13CB2244B3/Library/应用支持/SalonBook/saori.sqlite
完成! storePath:/Users/rolfmarsh/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/B424CA1A-D41C-488D-A7E9-0F13CB2244B3/Library/Application Support/SalonBook/ saori.sqlite-wal
当我开始恢复时,我发出:
[MagicalRecord cleanUp]; // disable Core Data
完成还原后,我发出以下命令:
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"saori.sqlite"]; // enable Core Data migration
defaultContext = [NSManagedObjectContext MR_defaultContext]; // set default NSManagedObjectContext for MagicalRecord
当我查看应该在核心数据存储区(使用 SQLite 浏览器)中的记录时,它们在在 sqlite 文件 (saori.sqlite) 中,但它们不要出现在应用程序中!就像没有正确设置 MR 堆栈,或者默认上下文以某种方式被删除了。知道如何解决这个问题吗?
【问题讨论】:
-
当您清理并随后恢复 Core Data 堆栈时,您如何让您的 UI 知道它?
-
我刚刚进行了另一个测试; sqlite 文件中有数据,它们只是没有正确恢复(我检查了 Finder 中的文件,使用 SQLite 浏览器查看内容,并在运行应用程序时根据控制台日志验证了文件名,它们是相同的!。 )..无论我重启应用多少次,应用中都没有显示数据...很奇怪!
标签: objective-c core-data ios8.1 magicalrecord-2.2