簡體   English   中英

捆綁子目錄訪問

[英]Bundle subdirectory access

我正在嘗試在程序中實現更改界面的功能,例如主題。 我決定使用捆綁軟件,因此在我的情況下,它們看起來像這樣:

  • Theme1.bundle
  • Theme2.bundle

每個捆綁包都有以下文件夾:

  • Theme1.bundle
    • 圖形
      • pic1.png
      • pic2.png
    • 聲音
      • sound1.wav
      • sound2.wav

因此,我可以使用以下代碼從捆綁包中獲取任何所需圖片的路徑:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM