核心数据和iOS 7:持久性存储的不同行为

时间:2013-09-18 10:57:32

标签: ios sqlite core-data ios7 uimanageddocument

我正准备更新基于Core Data的应用程序以修复iOS 7.我使用Xcode 5和iOS 7 SDK GM。但是我意识到持久性存储的不同行为(它是UIManagedDocument):在iOS 7构建之前,文档文件夹中只有一个文件persistentStore(有时会有第二个{{1} }})。

在iOS 7版本(干净安装)中,持久存储现在有三个文件:

  • persistentStore-journal
  • persistentStore
  • persistentStore-wal

Apple现在默认将日记模式更改为WAL吗?我想知道我的应用程序是否有影响(想想用户如何从上一版本更新)?是否最好禁用WAL - 如果是这样,我如何使用iOS 7 / persistentStore-shm执行此操作?

1 个答案:

答案 0 :(得分:95)

是的,Apple已将默认日志模式更改为iOS7的WAL。 您可以通过在调用addPersistentStoreWithType:configuration:url:options:error时将NSSQLitePragmasOption添加到选项来指定日志模式。例如。设置以前的默认DELETE模式:

NSDictionary *options = @{ NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"} };

根据我的经验,WAL提供了更好的性能,但也看到了这篇文章:

iOS CoreData - are there any disadvantages to enabling sqlite WAL / Write-Ahead Logging