Почему создание массива имен файлов приводит к сбою моего приложения, когда каталог документов пуст? - PullRequest
0 голосов
/ 16 января 2012

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

fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error];

что я могу сделать непосредственно перед этим, чтобы проверить, есть ли в каталогесодержимое?

я пробовал

if ([[[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error] objectAtIndex:0]){
fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error];
}

но это также приводит к сбою приложения

///////////////////// NOOB ОШИБКА ПРЕДУПРЕЖДЕНИЯ ////////////////////

хорошо, моя проблема была моей следующей строкой кода

NSLog(@"fileList: %@",[fileList objectAtIndex:fileList.count-1]);

этоВ чем было мое приложение, я признаю свою вину, лол.[fileList objectAtIndex: fileList.count-1] выходит за границы, я не понимаю, почему отладчик не сказал мне так много.

Спасибо за вашу помощь, ребята

Ответы [ 2 ]

1 голос
/ 16 января 2012

Используемый метод возвращает пустой массив, если в каталоге нет содержимого.

Прежде чем пытаться получить доступ к чему-либо из массива, проверьте его count, чтобы убедиться, что что-то присутствует:

if ([fileList count] == 0)
    // You have an empty directory
1 голос
/ 16 января 2012

Метод не должен завершаться сбоем, даже если нет файлов. Согласно документ ,

... Returns an empty array if the directory exists but has no contents.

Я бы проверил

  • Если переменная documentsDirectory правильно установлена ​​как экземпляр NSString
  • Если переменная documentsDirectory еще не освобождена

NSLogging documentsDirectory непосредственно перед вызовом будет правильным первым шагом.

...