我一直在我的项目中使用核心数据,我的documents目录中有一个database.sqlite数据存储文件。我的应用程序允许将此sqlite文件导出为备份,以便稍后恢复。备份工作正常。
我有一个从iOS6设备导出的备份文件。我要将此备份文件导入我的应用程序。我有一个文件作为邮件附件,我使用open-in在应用程序中打开它。在ios6或更早版本中工作正常。我已经多次尝试导入相同的文件,而且效果很好。
我最近将我的数据库模式更改为新版本,其中自动迁移能够很好地切换到新数据库。如果我的设备在iOS6中,我可以导入旧的数据库文件或任何现在导出的文件。我可以做很多次。
现在,如果您将我的设备更改为iOS7,我可以导入最近导出的文件任意次数。但是如果我尝试导入之前导出的旧文件,我可以导入一次。这个应用程序运行良好。然后我再次尝试导入它,现在它从第二次尝试失败。提供标题中提到的错误。仅在iOS7中,并且仅来自连续第二次尝试。
我正在使用scarybug文档解压到导入的文件。然后,我用导入的数据库文件替换现有的sqlite数据库文件。每次都在iOS6中工作,第一次在iOS7中工作,但第二次尝试时在iOS7中失败。
在执行导入之前,对所有更改进行提交/保存、管理对象上下文重置和持久存储协调器重置。新文件取代了旧文件,并且它已经工作了很长时间。该问题仅在使用从iOS6导出的相同文件的第二次尝试中的iOS7中发现
任何帮助和查询将不胜感激。谢谢。
发布于 2013-10-22 18:23:45
添加了这本字典-
NSMutableDictionary *pragmaOptions = [NSMutableDictionary dictionary];
[pragmaOptions setObject:@"NORMAL" forKey:@"locking_mode"];
[pragmaOptions setObject:@"DELETE" forKey:@"journal_mode"];添加到选项字典-
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
pragmaOptions, NSSQLitePragmasOption, nil];用于创建我的persistentStoreCoordinator。这解决了我的问题。
https://stackoverflow.com/questions/19512825
复制相似问题