核心数据和iOS 7:持久存储的不同行为
我正在准备iOS 7的基于核心数据的应用程序的更新修复。我使用Xcode 5和iOS 7 SDK GM。 然而,我意识到持久性存储(这是一个UIManagedDocument
)的不同行为:在iOS 7构build之前,文档文件夹中只有一个文件persistentStore
(有时还有第二个persistentStore-journal
)。
在iOS 7构build(干净安装)中,现在有三个文件用于持久性存储:
-
persistentStore
-
persistentStore-wal
和 -
persistentStore-shm
苹果是否现在默认更改日记模式为WAL? 我想知道是否对我的应用程序有影响(想想用户如何从最新版本更新)? 最好是禁用WAL – 如果是的话,我怎样才能做到这一点与iOS 7 / UIManagedDocument
?
是的,苹果公司已经将默认日记模式更改为适用于iOS7的WAL。 在调用addPersistentStoreWithType时,您可以通过将NSSQLitePragmasOption添加到选项来指定日记模式:configuration:url:options:error。 例如,设置DELETE之前的默认模式:
NSDictionary *options = @{ NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"} };
根据我的经验,WAL提供了更好的性能,但也看到这个post:
iOS CoreData – 启用sqlite WAL / Write-Ahead Logging有什么缺点