2015-06-20 69 views
1

我總是得到致命的錯誤:意外地發現零,同時展開一個可選值。但如果我看看fileURL變量,它有一些值。請讓我知道我錯過了這裏:致命錯誤:意外地發現零,而解包可選值(斯威夫特)

錯誤:

Optional(http:/files.parsetfss.com/461a4eda-d153-4d46-bd85-28ddd355a94c/tfss-03d4eb57-51cb-424d-8c90-2d8a89429203-00255--How_To_Build_A_Loving_Family.mp3 -- file:///) 
fatal error: unexpectedly found nil while unwrapping an Optional value 

代碼:

 if let audioFile = object["audioFile"] as? PFFile { 

      var audioPath: String = audioFile.url! 

      var fileURL = NSURL(fileURLWithPath: audioPath as String) 
      println(fileURL) 
      audioPlayer = AVAudioPlayer(contentsOfURL: fileURL, error: nil) 

      audioPlayer.volume = volumeSlider.value 

      audioPlayer.play() 

     } 
+0

調試代碼,並試圖找出哪些線是否給你致命錯誤 –

+0

HTTP:/文件是不是有效的URL,也許這就是問題所在,否則顯示它崩潰的位置 – Volker

+0

它在這裏給出一個錯誤:audioPlayer = AVAudioPlayer(contentsOfURL:fileURL,error:nil) –

回答

0

此代碼是工作的罰款與您的網址:

let url = "http://files.parsetfss.com/461a4eda-d153-4d46-bd85-28ddd355a94c/tfss-03d4eb57-51cb-424d-8c90-2d8a89429203-00255--How_To_Build_A_Loving_Family.mp3" 

    let soundData = NSData(contentsOfURL: NSURL(string: url)!) 

    var error: NSError? 
    self.audioPlayer = AVAudioPlayer(data: soundData, error: &error) 
    if audioPlayer == nil 
    { 
     if let e = error 
     { 
      println(e.localizedDescription) 
     } 
    } 

    audioPlayer!.volume = 1.0 
    audioPlayer!.prepareToPlay() 

    audioPlayer!.play() 

這樣你可以轉換將您的音頻轉換爲需要一段時間才能播放音頻的數據。

這裏是另一種方式來播放歌曲現場:

let url = audioFile.url! 
let playerItem = AVPlayerItem(URL:NSURL(string:url)) 
player = AVPlayer(playerItem:playerItem) 
player.rate = 1.0; 
player.play() 
+0

謝謝。我最初使用AVplayer方法來播放歌曲,但我在將UIslider與當前音頻時間連接時遇到了問題。你能提出一些建議,說明我該如何做到這一點? audioSlider.value = Float(audioPlayer.currentTime) –

+0

你可以這樣做:'audioSlider.value = Float(CMTimeGetSeconds(player.currentTime()))' –

+0

哇,真的有幫助。如何將當前時間設置爲uislider值。 musicPlayer.currentTime = NSTimeInterval(musicSlider.value) –