Массив NSStrings из имен файлов в папке? - PullRequest
1 голос
/ 03 августа 2010

Я пытаюсь создать массив из NSStrings содержимого папки, которую я перетащил в свой проект ... но когда я впоследствии подсчитываю элементы в массиве, он всегда возвращается с 0;

Итак, моя папка в моем проекте выглядит так

-Cards
  -Colors
     Blue.png
     Green.png
     Orange.png
     Yellow.png
     Purple.png
     Black.png

И мой код, который пытается получить этот список файлов (цвет pngs):

NSError *error = nil;
NSString *pathString = [[NSString alloc] init];
pathString = [[NSString alloc] initWithString:@"/Cards/Colors/"];
NSArray *fileList = [[NSArray alloc] init];
fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pathString error: &error];
[pathString release];
NSLog(@"%@", error);
// this is always 0
NSLog(@"file list has %i items", [fileList count]);

Я получаю NSError

Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn’t be completed. (Cocoa error 260.)" UserInfo=0x596db00 {NSUserStringVariant=(
    Folder
), NSFilePath=/Cards/Color/, NSUnderlyingError=0x5925ef0 "The operation couldn’t be completed. No such file or directory"}

Есть идеи, где я ошибаюсь?

1 Ответ

6 голосов
/ 03 августа 2010

Вы инициализируете pathString по абсолютному пути /Cards/Colors/. Этот путь является общесистемным путем, поэтому на iPhone он находится далеко от песочницы вашего приложения.

Попробуйте вместо этого:

NSString *pathString = [[NSBundle mainBundle] pathForResource:@"Cards/Colors" ofType:nil];
NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pathString error: &error];

(Обратите внимание, что, используя свой код в вопросе, вы выделяете / init fileList, а затем сразу же пропускаете объект, присваивая ему результаты contentsOfDirectoryAtPath:error:. Это ошибка.)

...