2014-10-05 24 views
-1

嗨,這是一個簡單的應用程序來播放按鈕時按下聲音。我用一大堆聲音導入了框架和文件夾,但是當我設置路徑時,它不會播放聲音,當我點擊按鈕播放聲音時,出現NSE異常錯誤。所以我把聲音文件從文件夾中取出,即使該文件夾在我的項目中,它會奇蹟般地播放?有任何想法嗎?或者我必須添加什麼額外的代碼才能從文件夾播放?Xcode不會在這個文件夾中播放聲音?

#import <AVFoundation/AVAudioPlayer.h> 

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

AVAudioPlayer *theAudio; 


- (IBAction)Yes:(id)sender { 

    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
             pathForResource:@"yes" ofType:@"mp3"]]; 



    theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:NULL]; 

    [theAudio play]; 



} 
@end 
+0

什麼是例外?你可以分享堆棧嗎?如果可能的話,還要顯示文件樹(也就是說,你確定yes.mp3是否在你的包的頂層?) – 2014-10-06 00:20:57

+0

我不明白你的意思是捆綁和該外觀是NSE eception意思它不能找到文件如果只有當它們被取出時纔將它們放入聲音文件夾中的時間是它發現它們時。該文件夾被導入到項目中,所以我不認爲這會是問題,但idk? – Deathkamp 2014-10-06 00:58:18

回答

0

這是您瞭解這兩種例外和包/文件的機會:

首先,例外: NSException是根類的所有異常,並且本身是不是一個有用的方法描述發生了什麼。查看鏈接的參考資料,您可以在其中查看哪些屬性可用於描述發生了什麼問題。這些屬性可用於Xcode中的檢查。最好的方法(IMO)與異常的自動斷點。只需從Breakpoint Navigator左下方的+按鈕(Xcode左側的垂直條)中選擇「添加異常斷點」即可。

二,捆綁: 捆綁(爲我們的目的)實際上只是一種特殊的目錄。當您使用[NSBundle mainBundle]時,您指的是您的應用程序的「頂級」目錄。 NSBundle有幾種有用的方法可以幫助您找到資源。其中一個甚至包括以一個子目錄作爲參數(提示!)

作爲一個獎勵,我覺得這也很好,還提到堆棧溢出,並希望鼓勵提高問題質量的習慣,這反過來又促進了答案的頻率和質量。如果您遇到異常並且是您的問題的根本,請提供完整的異常詳情。如果你使用的是文件,但是它們沒有正確加載,請包括如何在生成的設備上組織文件的解釋(也許是查找器的屏幕截圖)(提示:你可以找到模擬器的應用程序文件。斷點並檢查從NSBundle的一個方法返回的路徑的值)。