繁体   English   中英

iPhone SDK:主包内的子文件夹

[英]iPhone SDK: subFolders inside the main bundle

在当前项目中,我有许多文件夹,包含子文件夹,其中包含图像:01.png,02.png。

Folder1 / FolderA / f1.png Folder1 / FolderB / F1.png

当我编译应用程序时,我查看了.app并注意到所有图像都放在顶层,没有子文件夹。

因此在尝试加载图像时这显然不起作用:

NSString * filePath = [[NSBundle mainBundle] pathForResource:@“f1”ofType:@“png”inDirectory:@“Folder1 / FolderA”];

但更奇怪的是,当加载图像“f1”时,图像实际加载“F1”

UIImageView * imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@“f1.png”]];

任何人都有关于如何解决这个问题的想法?

是否有编译选项在应用程序包中创建文件夹?

TIA。

要在.app包中创建子文件夹,您应该选中“为任何添加的文件夹创建文件夹引用”选项,而不是默认的“为任何添加的文件夹递归创建组”选项。现在在XCode中,导入的文件夹显示为蓝色而不是黄色。 构建并继续,您应该在.app文件中看到文件夹。

只是想添加到Mugunth的答案,跟进试图使用的原始问题的一部分:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"f1" ofType:@"png" inDirectory:@"Folder1/FolderA"];

...访问使用文件夹引用添加的文件。 上面的'pathForResouce'调用将在模拟器上运行,但不适用于实际的iPhone(将返回nil),因为它们似乎不能识别方法的'inDirectory'部分中的子文件夹。 但是,他们确实在'pathForResource'部分识别它们。 因此,重新描述上述内容使其适用于iPhone的方式是:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"FolderA/f1" ofType:@"png" inDirectory:@"Folder1"];

我已经按照你的回答但接缝所有文件都平放在根目录上。 如果我使用下面的代码来获取完整路径

CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef url = CFBundleCopyResourceURL(mainBundle, CFSTR("About"), CFSTR("png"), NULL);
UInt8 filePath[PATH_MAX];
CFURLGetFileSystemRepresentation(url, true, filePath, sizeof(filePath));

我得到的结果是:/ Users / iosif / Library / Application Support / iPhone Simulator / 6.1 / Applications / 33FB4F79-999C-4455-A092-906A75226CDB / Arithmetics.app / About.png

首先,您在Xcode中创建的文件夹只是组织结构,在文件系统级别上没有任何对应物。 换句话说,除了“Classes”文件夹之外的所有文件夹在文件系统级别都变得扁平化。 因此,即使您将图像文件放在xcode中的以下位置,它仍将存在于文件系统的顶层:f1 / f2 / f3 / f4 / f5 / image.png。 因此,在pathForResource方法中,不应包含inDirectory参数。

至于第二个问题,mac osx不识别区分大小写的文件名。 因此,f1和F1等同于mac osx并将引用相同的文件。 您可以通过在终端会话中执行以下2个命令来轻松查看:

touch f
touch F

你会注意到在此之后只存在一个文件:即f。 如果你反转2个命令,你仍然会得到一个文件,但它被命名为F.

ennuikiller是对的。 我认为您可以通过Finder在子文件夹中整理图像,然后通过右键单击图像并选择“获取信息”选项刷新XCode中的图像位置。 然后设置新目录。

干杯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM