Swift 3 中解析的流式音频

Streaming audio from parse in Swift 3

我正在使用 Back4app 作为解析服务器 我正在尝试从 Prase 流式传输音频 一切正常,但如果我在 tableview 上单击任何索引(索引 0 除外),我会收到错误 "fatal error: unexpectedly found nil while unwrapping an Optional value"

我不知道为什么当我点击索引 0 时它工作正常但任何其他索引我都出错了!

func grabSong() {        
    let SongQuery = PFQuery(className: "Songs")

    SongQuery.getObjectInBackground(withId:iDArray[SelectedSongNumber!] ,block: { (object : PFObject?, error : Error?) ->  Void in           
        if let AudioFileURLTemp : PFFile = object?.value(forKey: "SongFile") as? PFFile {            
            print(AudioFileURLTemp)

            audioP = AVPlayer(url: NSURL(string: AudioFileURLTemp.url!) as! URL)            
            audioP.play()        
        }       
    })
}

我在这一行收到错误:

audioP = AVPlayer(url: NSURL(string: AudioFileURLTemp.url!) as! URL)

我找到了错误的原因。这是因为有些歌名中有space,但第一首歌的名字中没有space。所以我尝试在浏览器中复制link,看看浏览器如何处理space。我发现它将 spaces 替换为 %20.

所以我将每个 space 替换为“%20”,现在可以使用了。

正确的代码

func grabSong() {        
    let SongQuery = PFQuery(className: "Songs")
    SongQuery.getObjectInBackground(withId:iDArray[SelectedSongNumber] ,block: { (object : PFObject?, error : Error?) ->  Void in                    
        if let AudioFileURLTemp : PFFile = object?.value(forKey: "SongFile") as? PFFile {                       
            var songID = AudioFileURLTemp.url!.replacingOccurrences(of: " ", with: "%20")

            audioP = AVPlayer(url: URL(string:songID)!)
            audioP.play()
        }
    })
}