Получение файлов (и их атрибутов) в каталоге

Я хочу получить список файлов в каталоге, но мне нужно знать, является ли файл каталогом, когда он был в последний раз изменен, а также указать его имя: ). Итак, я попробовал следующее:

NSFileManager *fm = [NSFileManager defaultManager];
NSURL *directoryURL = [NSURL fileURLWithPath:@"/Users/nacho4d/Desktop/"];
NSArray *urls = [fm contentsOfDirectoryAtURL:directoryURL 
                      includingPropertiesForKeys:[NSArray arrayWithObjects:NSURLNameKey, NSURLIsDirectoryKey, NSURLContentModificationDateKey, nil] 
                                         options:NSDirectoryEnumerationSkipsHiddenFiles 
                                           error:nil];
NSError *error = nil;
NSString *name;
NSDate *modificationDate;
NSNumber *isDirectory;
for (NSURL *url in urls) {
    if (![url getResourceValue:&name forKey:NSURLNameKey error:&error]) {
        NSLog(@"name: %@", [error localizedDescription]);error = nil;
    }
    if (![url getResourceValue:&modificationDate forKey:NSURLContentModificationDateKey error:&error]) {
        NSLog(@"modificationDate: %@", [error localizedDescription]); error = nil;
    }
    if (![url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:&error]) {
        NSLog(@"isDirectory: %@", [error localizedDescription]); error = nil;
    }
    NSLog(@"%@ %@ %@", name, modificationDate, isDirectory);
}

Однако я всегда получаю (null) (null) (null) , без ошибок, но без данных; (

Интересно, что здесь не так?

PS: Мне известно о contentsOfDirectoryAtPath: error: и attributesOfItemAtPath: error: , но я думаю, что это не лучший способ сделать это, не так ли? Я планирую использовать это в папках, которые могут содержать большое количество файлов, поэтому я хотел бы сделать это наиболее эффективным способом.

Редактировать для iOS5 и более поздних версий

Как указал @jeremyP, Согласно docs метод не реализован в iOS4, но, начиная с iOS5 и более поздних версий, кажется, что он работает правильно:

Доступность
Доступно в iOS 5.0 и более поздних версиях. (Символ присутствует в iOS 4, но не выполняет никаких действий.)

Этот вопрос был задан, когда, как мне кажется, iOS4 была последней. Теперь в iOS 5 и 6 Все работает, как ожидалось :)

6
задан nacho4d 26 October 2012 в 03:21
поделиться