[英]Bundle subdirectory access
我正在尝试在程序中实现更改界面的功能,例如主题。 我决定使用捆绑软件,因此在我的情况下,它们看起来像这样:
每个捆绑包都有以下文件夹:
因此,我可以使用以下代码从捆绑包中获取任何所需图片的路径:
path = [NSString stringWithFormat:@"%@.bundle/graphic/%@", selectedBundle, imageName];
当我从包中获取图片时,没有问题,路径如下所示(我使用断点对其进行了检查): Theme1.bundle / graphic / pic1.png并创建UIImage
image = [UIImage imageNamed:path];
图片加载没有任何问题。
但是,当我尝试使用AVAudioPlayer
播放声音时,我以相同的方式获取声音的路径,并且路径如下所示: Theme1.bundle / sound / sound1.wav ,但是当我尝试创建NSData时
sound = [NSData dataWithContentsOfFile:path];
它没有初始化。
当我尝试将声音保留在主捆绑中并与
path = [[NSBundle mainBundle] pathForResource:@"sound1" ofType:@"wav"];
一切都很好,路径看起来像这样
/var/mobile/Applications/E8313E88-CE05-44B2-A80C-B05331D8596F/Myapp.app/sound1.wav
我不明白为什么这适用于图片而不适用于声音?
为什么我无法从捆绑中获得声音? 我只能建议的一件事imageNamed:
做一些工作以找到文件和dataWithContentsOfFile:
正确路径。
用你的代码代替
sound = [NSData dataWithContentsOfFile:path];
采用
NSString * path = [NSString stringWithFormat:@"%@.bundle/sounds/%@", selectedBundle, soundName];
NSString *fullPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:path];
sound = [NSData dataWithContentsOfFile:path];
说明: ImageNamed
将应用程序的路径附加到您指定的图像名称
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.