gpt4 book ai didi

ios - 捆绑子目录访问

转载 作者:行者123 更新时间:2023-11-29 04:35:35 26 4
gpt4 key购买 nike

我尝试在我的程序中实现更改界面的功能,例如主题。我决定使用 bundle ,所以在我的例子中它们看起来像这样:

  • 主题1.bundle
  • 主题2.bundle

每个包都有文件夹:

  • 主题1.bundle
    • 图形
      • pic1.png
      • pic2.png
    • 声音
      • 声音1.wav
      • 声音2.wav

因此我可以使用以下代码从 bundle 中获取任何所需图片的路径:

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

我不明白为什么这适用于图片但不适用于声音?
为什么我无法从 bundle 中获取声音?我只能建议一件事 - 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 将应用程序的路径附加到您指定的图像名称

关于ios - 捆绑子目录访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11100388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com