设备锁定时的文件安全性以及iOS7中的后台提取

时间:2013-09-23 13:07:43

标签: ios core-data ios7 nsfilemanager

我使用NSFileProtectionKey属性使用文件安全性,如下所示:

[[NSFileManager defaultManager] setAttributes:@{NSFileProtectionKey : NSFileProtectionComplete} ofItemAtPath:coreDataFilePath error:NULL];

因此,当设备锁定密码时,不能打开该路径中的文件。问题是,即使设备被锁定,iOS7应用程序也可以在后台运行。当像Coredata [NSManagedObjectContext save:]一样运行时将失败并显示错误:

  

NSCocoaErrorDomain,134030,操作无法完成。   (可可错误134030.){NSSQLiteErrorDomain =   23; NSUnderlyingException =“更新max pk失败:授权   否认“;}

如何处理此类案件?

1 个答案:

答案 0 :(得分:7)

首先,请参阅WWDC 2013视频中的会话204“多任务处理的新功能”。它涵盖了这种情况。

根据安全首选项,您可以采取以下几种方法:

  • 将数据写入其他位置(使用NSFileProtectionCompleteUnlessOpen),直到设备解锁,然后合并。这通常是首选方法。
  • 将您的主数据库设置为NSFileProtectionCompleteUnlessOpen并保持打开状态。
  • 将数据库设置为NSFileProtectionCompleteUntilFirstUserAuthentication。这通常是最糟糕的方法。