首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSPersistentStoreCoordinator没有持久存储-偶尔会发生

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

Stack Overflow用户
提问于 2013-10-22 16:32:19
回答 1查看 174关注 0票数 0

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

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

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

现在,如果您将我的设备更改为iOS7,我可以导入最近导出的文件任意次数。但是如果我尝试导入之前导出的旧文件,我可以导入一次。这个应用程序运行良好。然后我再次尝试导入它,现在它从第二次尝试失败。提供标题中提到的错误。仅在iOS7中,并且仅来自连续第二次尝试。

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

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

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

EN

回答 1

Stack Overflow用户

发布于 2013-10-22 18:23:45

添加了这本字典-

代码语言:javascript
复制
NSMutableDictionary *pragmaOptions = [NSMutableDictionary dictionary];
[pragmaOptions setObject:@"NORMAL" forKey:@"locking_mode"];
[pragmaOptions setObject:@"DELETE" forKey:@"journal_mode"];

添加到选项字典-

代码语言:javascript
复制
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
                         pragmaOptions, NSSQLitePragmasOption, nil];

用于创建我的persistentStoreCoordinator。这解决了我的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19512825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档