致命错误:意外地发现零,而解包可选值(斯威夫特)

问题描述:

我总是得到致命的错误:意外地发现零,同时展开一个可选值。但如果我看看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) –

此代码是工作的罚款与您的网址:

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) –