NSURLIsExcludedFromBackupKey无法正确设置
我试图阻止从iTunes备份的整个文件夹。 我遵循技术报告http://developer.apple.com/library/ios/#qa/qa1719/_index.html但似乎falg每次都是零。 我在模拟器和设备上使用IOS 5.1尝试。 但没有任何帮助。 方法每次都返回“成功”,但是标志仍然是零。
+ (BOOL) hasSkipBackupAttributeToItemAtURL:(NSURL *)URL { NSError *error = nil; id flag = nil; BOOL success = [URL getResourceValue: &flag forKey: NSURLIsExcludedFromBackupKey error: &error]; if(!success){ NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); return false; } if (!flag) return false; return [flag boolValue]; } + (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { NSError *error = nil; BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES] forKey: NSURLIsExcludedFromBackupKey error: &error]; if(!success){ NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); } return success; } + (BOOL)removeSkipBackupAttributeToItemAtURL:(NSURL *)URL { NSError *error = nil; BOOL success = [URL setResourceValue: [NSNumber numberWithBool: NO] forKey: NSURLIsExcludedFromBackupKey error: &error]; if(!success){ NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error); } return success; }
我刚刚在我的应用程序中解决了这个问题,虽然这有点令人沮丧,但最终都工作得很好。 所以,这里是addSkipBackupAttributeToItemAtURL的代码。 你可能想检查一下。 它也处理5.0.1和5.0。 你只是在你的代码中处理5.1和更高。
但:
比方说,你有一个NSString *path – 文件/文件夹的path, 不要调用方法 :
[NSURL urlWithString:path];
它将在5.0.1上工作,但不在5.1和更高版本上。
而是use [NSURL fileURLWithPath:path];
所以: [MyClass addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:path]];
事实上,我认为这是你的代码唯一的问题。 采取我联系的方法,只会提供向后兼容性,这是一个很大的补充。
希望这可以帮助。
问候,乔治
同样的问题对我来说。 我也解决了它改变了我调用addSkipBackupAttributeToItemAtURL的方式这是正确的方法:
[MyClass addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:path]];