我有以下代码:
NSString *folderPath = [NSString stringWithFormat:@"%@/Objects/", [[NSBundle mainBundle] bundlePath]];
NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:folderPath error: nil];
for (NSString *s in fileList) {
NSLog(s);
}
Objects文件夹中有100个png文件。
但是文件列表似乎是空的。我可以查看有关项目设置的内容是什么?我做的代码错了吗? fileList应该是Objects中所有图片的数组吗?
我试图获取一个数组,其中包含我拥有的所有图像的名称,以便稍后我可以为UIImage分配和成像
答案 0 :(得分:11)
“对象”文件夹的黄色文件夹图标表示您将图像文件夹拖到Xcode项目上时创建了文件夹组而不是文件夹参考(具有蓝色文件夹图标)。 在“复制捆绑资源”构建阶段,Xcode将文件夹组中的文件复制到应用程序包的根目录中 如果您想在应用程序包中使用名为“Objects”的子目录,则必须在将“Objects”拖动到Xcode窗口后选择“为任何添加的文件夹创建文件夹引用”。
您的项目侧栏应显示“Objects”文件夹,如下所示:
要从该复制的文件夹中获取所有.png的列表,您可以使用以下代码:
NSURL* resourceURL = [[NSBundle mainBundle] resourceURL];
resourceURL = [resourceURL URLByAppendingPathComponent:@"Objects"];
NSError* error = nil;
NSArray* resourceURLContents = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:resourceURL includingPropertiesForKeys:nil options:0 error:&error];
resourceURLContents = [resourceURLContents filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(NSURL* evaluatedObject, NSDictionary *bindings) {
return [[evaluatedObject pathExtension] isEqualToString:@"png"];
}]];
NSLog(@"Contents:%@", resourceURLContents);