ios - 从 MPMediaItem 转换 URL

标签 ios swift uitableview casting avaudioplayer

我正在努力做到当有人触摸此 UITableView 中的单元格时,歌曲将开始播放。每个单元格都有一个与之关联的 MPMediaItem。我想使用 AVAudioPlayer 播放歌曲。我正在尝试获取 MPMediaItem 的 url 并使用它来获取 AVAudioPlayer 的歌曲。

var songsList: [MPMediaItem] = MPMediaQuery.songsQuery().items!
var player = AVPlayer()

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        let song = songsList[indexPath.section]
        if let url = song.valueForProperty(MPMediaItemPropertyAssetURL) as! NSURL? {
            let newPlayerItem = AVPlayerItem(URL: url)
            player.replaceCurrentItemWithPlayerItem(newPlayerItem)
            player.play()
        }
        else {
            print("Failed to cast to URL")
        }


    }

变量 url 无法转换为 NSURL,我不明白为什么。 感谢您的帮助

最佳答案

经过多次测试,我发现问题是您不能将非可选值强制转换为可选值。所以删除源代码中 NSURL 之后的 ? 。可能会有所帮助。

关于ios - 从 MPMediaItem 转换 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37233733/

相关文章:

ios - 如何检索 cellForRow(位于 :) when tableview isn't visible

ios - 将焦点从一个 View Controller 转移到另一个 View Controller (以模态方式呈现),反之亦然

ios - 我怎样才能插入一个字符串的二维数组

ios - 此类对于键 mapview 不符合键值编码

swift - 在 iOS 13 上,生物识别身份验证警报不会显示在旧手机上

ios - 如何透明化表格 View 的边框颜色?

ios - fatal error : Index out of range, 由于反复按赞和心形按钮

ios - ios白色屏幕上的Cordova混合应用程序

ios - 图表 : Get selected bar data only when tapped inside the bar

ios - 使用 Xcode 和 UICollectionView 中的 Assets 目录管理 800 个图像