我正在编写一个播客应用,我希望用户播放他们已经下载的本地文件(如果它存在的话)(而不是流式传输)。流式传输工作正常,但是如果找到了本地文件,它就不能被AVPlayer播放了(由于我之外的原因,大约5个文件中的一个实际上不是这样 - 点击一个播客将在本地播放(I& #39; m在飞机模式下验证)。
我相信这是Swift相当于this question,但我还没有能够在Swift中实现该解决方案。
以下是代码:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var theURL = posts.objectAtIndex(indexPath.row).valueForKey("enclosure") as? String
var theMp3Filename = theURL!.lastPathComponent
for i in downloadedList {
if i as! String == theMp3Filename {
// If we've d/l'ed the mp3, insert the local path
theURL = documentsDirectory().stringByAppendingPathComponent(theMp3Filename)
var path: NSURL = NSURL.fileURLWithPath(theURL!)!
player = AVPlayer(URL: path)
player.play()
} else {
let podcastEpisode = AVPlayerItem(URL: NSURL(string: theURL!))
player = AVPlayer(playerItem: podcastEpisode)
player.play()
}
}
}
downloadedList
只是我使用下载的文件名生成的数组。我正在进入当地条件,路径看起来正确,但AVPlayer通常不起作用。
任何指导都将不胜感激。
答案 0 :(得分:1)
在设置路径变量以播放下载的音频后立即添加:
let asset = AVURLAsset(URL: path)
let playerItem = AVPlayerItem(asset: asset)
player = AVPlayer(playerItem: playerItem)
player.play()