包和 NSFileManager enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:
Packages and NSFileManager enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:
我正要 post 这作为一个问题,但我在措辞问题时解决了它。假设您正在使用如下代码片段中的代码...
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;
}
];
如何进入文件夹而不是包?
你需要用这样的东西跟进它:
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 传递给 includingPropertiesForKeys 参数。
我正要 post 这作为一个问题,但我在措辞问题时解决了它。假设您正在使用如下代码片段中的代码...
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;
}
];
如何进入文件夹而不是包?
你需要用这样的东西跟进它:
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 传递给 includingPropertiesForKeys 参数。