NSPersistentStoreCoordinator没有持久存储 - 偶尔会发生

时间:2013-10-22 08:32:19

标签: sqlite core-data ios7

我一直在我的项目中使用核心数据,在我的文档目录中使用database.sqlite数据存储文件。我的应用程序允许将此sqlite文件导出为备份以便以后还原。备份工作正常。

我有一个从iOS6设备导出的备份文件。我想将此备份文件导入我的应用程序。我把文件作为邮件附件,我用open-in用app打开它。在ios6或更早版本中正常工作。我曾尝试多次导入同一个文件,但效果很好。

我最近将我的数据库架构更改为新版本,其中自动迁移能够切换到新数据库。如果我的设备在iOS6中,我可以导入旧的数据库文件或现在导出的任何文件。我可以做任何次数。

现在,如果我将设备更改为iOS7,我可以多次导入最近导出的文件。但是如果我尝试导入先前导出的旧文件,我可以导入一次。该应用程序工作正常。然后我尝试再次导入它,现在它从第二次尝试失败了。给出标题中提到的错误。仅在iOS7中,并且仅在连续第二次尝试中使用。

我正在使用scarybug docs解压缩到导入的文件。然后我用导入的sqlite数据库文件替换现有的sqlite数据库文件。每次都在iOS6中工作,在iOS7中第一次工作,但在第二次尝试时在iOS7中失败。

在执行导入之前,所有更改已提交/保存的托管对象上下文重置和持久存储协调器重置。新文件取代旧文件,它已经工作了很长时间。问题只出现在iOS7中,从第二次尝试使用从iOS6导出的相同文件

任何帮助&查询将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

添加了这本词典 -

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。这解决了我的问题。