[ios]从 mainBundle 在 xcode 获取一个子目录

发布时间: 2017/3/21 23:27:16
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有以下代码︰

NSString *folderPath = [NSString stringWithFormat:@"%@/Objects/", [[NSBundle mainBundle] bundlePath]];
NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:folderPath  error: nil];

for (NSString *s in fileList) {
    NSLog(s);
}

enter image description here

有 100 个对象文件夹中的 png 文件。

无论文件列表看上去是空的。我可以检查有关我设置的东西是项目的什么?我做错了的代码?文件列表应该是数组中的对象的所有图片?

我试图想稍后获得所有我有,我可以分配的图像和图像到 UIImage 的名称的数组

解决方法 1:

您的"对象"文件夹中的黄色文件夹图标指示您创建文件夹组而不是文件夹引用 (那些有蓝色文件夹图标) 当你拖动图像文件夹到 Xcode 项目。
Xcode 将文件复制文件夹组中到根目录下的你的应用程序捆绑在"副本束资源"生成阶段。
如果你想要命名"对象"在您的应用程序捆绑的子目录中,你必须选择"任何添加的文件夹中创建文件夹参考"后到你 Xcode 窗口拖动"对象"。

项目边栏应该显示"对象"文件夹如下所示︰
enter image description here

要从那复制的文件夹列表中的所有.pngs,可以使用下面的代码︰

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);
赞助商