0

我正在使用 Back4app 作为 Parse 服务器我正在尝试从 Prase 流式传输音频一切正常,但是如果我单击 tableview 上的任何索引(索引 0 除外),我会收到错误“致命错误:在展开可选值时意外发现 nil "

我不知道为什么当我单击索引 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)
4

1 回答 1

0

我发现了我收到错误的原因。这是因为某些歌曲名称中有空格,但第一首歌曲的名称中没有空格。所以我尝试在浏览器中复制链接,看看浏览器是如何处理空格的。我发现它用 %20 替换了空格。

所以我用“%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()
        }
    })
}
于 2017-01-04T17:39:13.480 回答