我试图通过将其 NSURLIsExcludedFromBackupKey
设置为 1
来阻止整个文件夹及其内容备份到 iCloud,如 guidelines 中所示。 .我可以将 key 设置为文件夹的 URL,但是我保存在其中的所有数据都有 0
的 NSURLIsExcludedFromBackupKey
...
这是我的代码:
//create the directory:
[[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil];
NSURL *folderURL = [NSURL fileURLWithPath:path isDirectory:YES];
//prevent backup:
NSError *preventBackupError = nil;
BOOL success = [folderURL setResourceValue: [NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey
error: &preventBackupError];
//this prints 1 and 1:
NSLog(@"resource values for directory: %@", [folderURL resourceValuesForKeys[NSURLIsExcludedFromBackupKey, NSURLIsDirectoryKey] error:nil]);
现在,如果我将文件(在本例中为 config.xml
)保存在 folderURL
的子目录中,然后执行以下操作:
NSURL *fileURL = [NSURL fileURLWithPath:[path stringByAppendingPathComponent"config.xml"]];
if ([[NSFileManager defaultManager] fileExistsAtPath:fileURL.path]) {
NSLog(@"resource values for config file: %@", [configURL resourceValuesForKeys[NSURLIsExcludedFromBackupKey] error:nil]);
}
这会打印出 NSURLIsExcludedFromBackupKey = 0;
我检查了其他 SO 答案,例如 this one , this one , 或 this one ,我看不出我的语法有什么不同...
所以我的问题是,我是否必须手动将该 key 设置为文件夹中的每个文件?还是我做错了什么?
干杯
Cocoa 没有内置的单一方法来递归地将属性应用于资源及其后代。我想其中一些原因是为了简化错误处理。但是,这样做也很少见。
幸运的是,构建自己的非常容易:
NSFileManager
询问目录枚举器NSDirectoryEnumerator
将为您下降到所有子目录),也将属性应用于每个项目您的情况似乎不需要这样做;将 NSURLIsExcludedFromBackupKey
应用到该目录,并完成它。
关于iphone - 如何为文件夹中的所有文件和文件夹设置 NSURL 资源值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15525260/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) | Powered by Discuz! X3.4 |