2016-07-01 15 views
1

私はアプリケーションのドキュメントフォルダにファイルがあり、再生したいと思います。AVAudioPlayer内のドキュメントからファイルを再生できません

if NSFileManager.defaultManager().fileExistsAtPath(pathString) { 
    let url = NSURL(fileURLWithPath:pathString, isDirectory: false) 
    do { 
     let player = try AVAudioPlayer(contentsOfURL:url) 
     player.prepareToPlay() 
     player.play() 
    } 
    catch let error as NSException { 
     print(error) 
    } 
    catch {} 
} 

ファイルシステム上にファイルがあり、その存在を確認しました。また、doブロック内のすべての行が実行されます。例外もエラーもなく、サウンドは再生されません。起こりうる問題は何か、どのように解決できますか?

+0

コードで唯一の問題は、グローバルに設定する必要があるaudioPlayerです。 – aakpro

答えて

7

audioPlayerをインスタンス変数globalにする必要があります。このコードでは、.play()を呼び出した直後に割り当て解除されます。

class ViewController: UIViewController { 

    var audioPlayer = AVAudioPlayer() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     if NSFileManager.defaultManager().fileExistsAtPath(pathString){ 
     let url = NSURL(fileURLWithPath:pathString, isDirectory: false) 
     AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) 
     AVAudioSession.sharedInstance().setActive(true, error: nil) 

     var error:NSError? 
     audioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error) 
     audioPlayer.prepareToPlay() 
     audioPlayer.play() 
    } 
} 
} 
+0

まだ動作していません!何が問題なのかを理解する方法はありますか?またはそれをデバッグする方法? – aakpro

+0

audioPlayerをグローバルに変更したことは確かですか?それはこのように動作するはずです... – FredericP

+0

ありがとう、それは働いた! – aakpro

関連する問題