2015-12-23 78 views
1

我使用AVAudioPlayer,在我viewDidLoad中方法中,首先它的運行良好,但是當我再次來到同一個視圖控制器的那首歌開始運行與最初的歌曲打成一片。如何檢查AVAudioPlayer仍在運行?

,所以我試圖找出是宋在後臺運行?

這是我的職責,我調用這個函數在視圖中做負載

func prepareAudio() 
    { 
     if audioPlayer.playing 
     { 
      audioPlayer.stop() 
     } 
     do 
     { 

       audioPlayer=try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Kids", ofType: ".mp3")!), fileTypeHint: AVFileTypeMPEGLayer3) 
       audioPlayer.delegate=self; 
       self.audioPlayer.play() 

     } 
     catch 
     { 
      print(error) 
     } 

    } 

但是當我試圖運行及彼崩潰 if audioPlayer.playing

幫我找到解決方案這..

第二次嘗試

enter image description here

第三嘗試

enter image description here

第四嘗試

enter image description here

+0

您可以在此行設置斷點。我猜你audioPlayer =零 –

+0

是我audioplayer =零@CongTran –

+0

所以你必須檢查它是否=零&& .playing =真! - >調用stop()方法 –

回答

0

你必須檢查變量是否仍然有效(if not nil

試試這個

if ((!audioPlayer) && (audioPlayer.playing == YES)) 
{ 
    audioPlayer.stop() 
} 
+0

是的,你也可以檢查是否(!audioPlayer && audioPlayer.playing) –

1
if let audioPlayer = audioPlayer where audioPlayer.playing { 
    audioPlayer.stop() 
} 

// create your audio player and set the delegate etc. 

不過,我會鼓勵你,如果audioPlayer不是零,你不應該總是初始化再次在audioPlayer。

if let audioPlayer = audioPlayer { 
    if audioPlayer.playing { 
     audioPlayer.stop() 
    } 
} else { 
    // setup the audioPlayer and set the delegate 
} 

audioPlayer?.play() 
相關問題