我一直在网上,包括苹果的开发网站,但我找不到任何指令如何设置一个应用程序的/文档目录属性NSFileProtectionKey = NSFileProtectionComplete。我已经在应用程序第一次运行时设置了值,但有办法设置它吗?比如通过X-Code复选框,列表或其他。
还有一个相关的注意事项:在数据保护类为NSFileProtectionComplete的目录下存储的任何文件是否自动被视为与其目录相同的保护类?
Thanks a bunch,
Fissh
要保护应用程序文档目录中的文件,无需任何代码,您必须添加权限。链接到您的应用程序
在你的权利。添加"DataProtectionClass"键,值为"NSFileProtectionComplete"。只要设备处于锁定状态,您的文件就会自动受到保护。
下面是一个例子
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>DataProtectionClass</key>
<string>NSFileProtectionComplete</string>
</dict>
</plist>
WWDC session 208轻松地解决了这个问题,我认为您可以使用该密钥创建一个权利文件,并且不需要编写代码。
我还没有这样做,所以我不完全确定它是否有效
这是我想出的破解方法,直到我弄清楚如何正确设置/Documents目录保护。
NSError *error;
NSDictionary *attrs = [self attributesOfItemAtPath:DOCUMENTS_FOLDER error:&error];
if(![[attrs objectForKey:NSFileProtectionKey] isEqual:NSFileProtectionComplete])
{
attrs = [NSDictionary dictionaryWithObject:NSFileProtectionComplete forKey:NSFileProtectionKey];
BOOL success = [self setAttributes:attrs ofItemAtPath:DOCUMENTS_FOLDER error:&error];
if (!success)
NSLog(@"Set ~/Documents attr NOT successfull");
}
我只是在加载应用程序时调用上面的代码来设置文档目录保护,如果它还没有设置的话。
Fissh
http://devforums.apple.com/message/627887开发者论坛:Apply DataProtectionClass Entitlement
我发现了这个链接,这个entitlement方法目前不工作,并提交了bug问题,所以我们必须一个文件一个文件地做。