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()
}
})
}
我正在使用 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()
}
})
}