我需要避免此枚举中的隐藏文件,但仍会添加.DS_Store文件。
我放入NSLog检查,我在那里得到输出。
可能有一些明显的东西,但我看不到它。
NSDirectoryEnumerator *dirEnumerator;
NSFileManager *fileManager = [[NSFileManager alloc] init];
dirEnumerator = [fileManager enumeratorAtURL:item
includingPropertiesForKeys:[NSArray array]
options:NSDirectoryEnumerationSkipsPackageDescendants || NSDirectoryEnumerationSkipsHiddenFiles
errorHandler:nil];
for (NSURL *urlItem in dirEnumerator) {
// is item hidden ?
NSNumber *isHidden = nil;
if ([urlItem getResourceValue:&isHidden forKey:NSURLIsHiddenKey error:nil]) {
if ([isHidden isEqual:[NSNumber numberWithInt:1]]) {
NSLog(@"isHidden is 1");
continue;
}
}
答案 0 :(得分:11)
实际上,真正的问题是你使用了错误的运算符来指定掩码:
NSDirectoryEnumerationSkipsPackageDescendants || NSDirectoryEnumerationSkipsHiddenFiles
执行布尔OR
,为您提供1
,这不是一个有用的选项掩码。您需要使用单个管道:
NSDirectoryEnumerationSkipsPackageDescendants | NSDirectoryEnumerationSkipsHiddenFiles
是按位OR
。
老答案:
您需要实际请求您要查看的属性:
dirEnumerator = [fileManager enumeratorAtURL:item
includingPropertiesForKeys:[NSArray arrayWithObject:NSURLIsHiddenKey]
options:NSDirectoryEnumerationSkipsPackageDescendants || NSDirectoryEnumerationSkipsHiddenFiles
errorHandler:nil];
来自-[NSURL getResourceValue:forKey:error:]
doc:
<强>讨论强>
如果未为URL定义请求的资源值,则将值设置为nil。在这种情况下,该方法仍然返回YES。