【发布时间】:2014-05-30 05:10:57
【问题描述】:
我有一个基于核心数据的应用程序,它使用 Dropbox 来备份和恢复数据。我备份的方式非常简单。我将 .sqlite 文件复制到用户的保管箱中。
现在我的备份和恢复功能运行良好。问题在于 .sqlite 文件本身。 .sqlite 文件似乎不完整。
我在我的应用程序中输入了大约 125 个条目并进行了备份。备份出现在我的保管箱中,但是当我使用 .sqlite 资源管理器工具查看内容时,我只能看到第 117 个条目的记录。
我尝试更新第一个条目,然后再次观察 .sqlite 文件但没有再次更改。
更奇怪的是,该应用似乎记录了所有更改。当我添加新条目或更新现有条目并重新启动应用程序时,新添加的数据似乎仍然存在。 但是这个新添加的数据并没有出现在我的 .sqlite 文件中。
我正在使用此代码进行备份:
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSString *filePath = [[[appDelegate applicationDocumentsDirectory] path] stringByAppendingPathComponent:@"MyApp.sqlite"];
if (account) {
if ([filesystem isShutDown]) {
filesystem = [[DBFilesystem alloc] initWithAccount:account];
[DBFilesystem setSharedFilesystem:filesystem];
}
DBPath *newPath = [[DBPath root] childPath:[NSString stringWithFormat:@"Backup - %@.sqlite", [NSDate date]]];
DBFile *file = [[DBFilesystem sharedFilesystem] createFile:newPath error:nil];
[file writeContentsOfFile:filePath shouldSteal:NO error:nil];
[filesystem shutDown];
}
我还从模拟器的文件夹中复制了 .sqlite 文件,并尝试在 .sqlite 浏览器中查看它。它仍然表现出相同的行为。为什么一定会发生这种情况?
【问题讨论】:
标签: ios objective-c database sqlite core-data