0

我有以下使用多个选项保存文件数据的方法。我想将 NSDataWritingAtomic 与 NSDataWritingFileProtectionComplete 结合起来。 我应该使用 | 编写NSData时组合两个选项的符号?

我问的原因是,如果设备没有设置密码,NSDataWritingFileProtectionComplete 不应该真正工作,但我没有看到任何区别,所以我需要确保我正确设置了选项。

-(void)saveFileData:(NSData*)data
{
    NSError* error = nil;

   BOOL success = [data writeToFile:[self filepath] options:NSDataWritingAtomic|NSDataWritingFileProtectionComplete error:&error];

    if(success == NO || error != nil)
    {
        DLog(@"Error encrypting data file");
    }
}
4

1 回答 1

0

是的,你做对了。

NSDataWritingFileProtectionComplete让 iOS 知道它应该使用最严格的保护等级来加密您的文件。如果设备设置了密码,这意味着只有在设备解锁时才能访问该文件。如果设备上没有密码,则不会应用此类限制,因为没有密码可用于加密。

在测试与 FileProtection 相关的代码时,请记住,当设备被锁定时,有一个短暂的(10 秒)宽限期,在此期间受保护的文件仍然可以访问。这样做是为了确保使用此类文件的应用程序有机会优雅地转换到后台状态并完成任何挂起的 I/O。

于 2014-08-22T14:08:36.680 回答