包和 NSFileManager enumeratorAtURL:包括PropertiesForKeys:options:errorHandler:
Posted
技术标签:
【中文标题】包和 NSFileManager enumeratorAtURL:包括PropertiesForKeys:options:errorHandler:【英文标题】:Packages and NSFileManager enumeratorAtURL:includingPropertiesForKeys:options:errorHandler: 【发布时间】:2015-05-23 23:23:11 【问题描述】:我正要将此作为问题发布,但我在表述问题时解决了它。假设您正在使用如下 sn-p 中的代码...
NSFileManager *fm = [NSFileManager defaultManager];
NSDirectoryEnumerator *enm;
enm = [fm enumeratorAtURL:path
includingPropertiesForKeys:[NSArray arrayWithObjects:NSURLNameKey, NSURLIsDirectoryKey, NSURLIsPackageKey, nil]
options:(NSDirectoryEnumerationSkipsSubdirectoryDescendants|NSDirectoryEnumerationSkipsPackageDescendants|NSDirectoryEnumerationSkipsHiddenFiles)
errorHandler:^BOOL(NSURL *url, NSError *error)
// TODO: Error needed here?
return YES;
];
你如何进入文件夹而不是包?
【问题讨论】:
【参考方案1】:你需要像这样跟进它:
for (NSURL *url in enm)
NSNumber *number;
NSString *name;
// Retrieve the directory property
[url getResourceValue:&number forKey:NSURLIsDirectoryKey error:nil];
// Retrieve the name
[url getResourceValue:&name forKey:NSURLNameKey error:nil];
if ([number boolValue] == NO)
// It's a file!
else
// It's a folder!
// Retrieve the package property.
[url getResourceValue:&number forKey:NSURLIsPackageKey error:nil];
if (![number boolValue])
// But not a package!
要使上述代码正常工作,您必须确保将 NSURLNameKey、NSURLIsDirectoryKey 和 NSURLIsPackageKey 传递给 includePropertiesForKeys 参数。
【讨论】:
以上是关于包和 NSFileManager enumeratorAtURL:包括PropertiesForKeys:options:errorHandler:的主要内容,如果未能解决你的问题,请参考以下文章
NSFileManager.contentsOfDirectoryAtURL 返回的文件根据 NSFileManager.fileExistsAtPath 不存在?