iPhone: NSFilemanager fileExistsAtPath:isDirectory: не работа правильно?

Для предотвращения любого потенциального беспорядка я хотел бы контрастировать статические переменные и неизменные объекты.

Некоторые типы элементарного объекта как целые числа, плавания, строки и touples неизменны в Python. Это означает, что объект, который упомянут именем, не может измениться, если это имеет одни из вышеупомянутых типов объектов. Имя может быть повторно присвоено различному объекту, но сам объект не может быть изменен.

Создание переменных помех взятия это шаг вперед, не разрешая имени переменной указать на любой объект, но что, на который это в настоящее время указывает. (Отметьте: это - общее понятие программного обеспечения и не характерное для Python; см. сообщения других для получения информации о реализации помех в Python).

7
задан Yllier 28 July 2009 в 21:35
поделиться

1 ответ

Это действительно простая ошибка, но ее также очень легко исправить. Перечисление содержимого каталога дает вам только имя элемента, а не полный путь к нему. Вы должны сами построить полный путь. Итак, где у вас есть:

for (NSString *aPath in contentOfFolder) {
  NSLog(@"apath: %@", aPath);

  BOOL isDir;
  if ([[NSFileManager defaultManager] fileExistsAtPath:aPath isDirectory:&isDir] &&isDir) {
    [directoriesOfFolder addObject:aPath];
    NSLog(@"directoriesOfFolder %@", directoriesOfFolder);
  }
}

На самом деле у вас должно быть это:

for (NSString *aPath in contentOfFolder) {
  NSString * fullPath = [path stringByAppendingPathComponent:aPath];

  BOOL isDir;
  if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir] &&isDir) {
    [directoriesOfFolder addObject: fullPath];
  }
}
23
ответ дан 6 December 2019 в 07:52
поделиться