Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSDirectoryEnumerator fileAttributes is nil

I am trying to grab the top level directories only

NSDirectoryEnumerator *directoryEnumerator = [fileManager enumeratorAtURL:[NSURL URLWithString:directory]
                                         includingPropertiesForKeys:[NSArray arrayWithObjects:NSURLIsDirectoryKey, nil]
                                                            options: NSDirectoryEnumerationSkipsHiddenFiles | NSDirectoryEnumerationSkipsSubdirectoryDescendants
                                                       errorHandler:nil];

for (NSURL *file in directoryEnumerator) {
    NSDictionary *attributes = [directoryEnumerator fileAttributes];
    if ([attributes objectForKey:NSFileType] == NSFileTypeDirectory) {
        NSLog(@"Yes its a directory");
    }
}

But every time I get nil for fileAttributes. Shouldn't I be able to get fileAttributes when using an nsdirectoryenumerator?

like image 224
lostintranslation Avatar asked Feb 06 '26 23:02

lostintranslation


1 Answers

You don't want to call fileAttributes on the enumerator. Instead, you want to get the desired property from the URL.

NSDirectoryEnumerator *directoryEnumerator = [fileManager enumeratorAtURL:[NSURL URLWithString:directory]
                                         includingPropertiesForKeys:@[NSURLIsDirectoryKey]
                                                            options: NSDirectoryEnumerationSkipsHiddenFiles | NSDirectoryEnumerationSkipsSubdirectoryDescendants
                                                       errorHandler:nil];

for (NSURL *file in directoryEnumerator) {
    NSNumber *isDirectory;
    [url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:NULL];
    if ([isDirectory boolValue]) {
        NSLog(@"Yes its a directory");
    }
}
like image 133
rmaddy Avatar answered Feb 09 '26 02:02

rmaddy



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!