文件夹中文件名的NSStrings数组?

时间:2010-08-03 19:45:10

标签: iphone objective-c nsfilemanager

我正在尝试创建一个文件夹内容的NSStrings数组,我已将其拖入项目...但是当我计算数组中的项目之后,它总是返回0;

所以,我项目中的文件夹看起来像这样

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

我试图获取此文件列表(颜色png)的代码是

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 个答案:

答案 0 :(得分:6)

您正在将pathString初始化为绝对路径/Cards/Colors/。此路径是系统范围的路径,因此在iPhone上,远离应用程序的沙箱。

请改为尝试:

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

(请注意,您在问题中使用代码的方式是alloc / init fileList,然后通过为其分配contentsOfDirectoryAtPath:error:的结果来立即泄漏对象。这是一个错误。)