2016-05-15 83 views
1

我試圖讓有人在這個UITableView中觸摸一個單元格時,就會開始播放一首歌曲。每個單元格都有一個與其關聯的MPMediaItem。我想用AVAudioPlayer播放歌曲。我正在嘗試獲取MPMediaItem的URL並使用它獲取AVAudioPlayer的歌曲。從MPMediaItem投射URL

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,我找不到原因。 感謝您的任何幫助

回答

0

經過多次測試後,我發現問題是您不能將非可選值轉換爲可選值。因此,在原始代碼中刪除?NSURL。可以幫助。

+0

我得到一個錯誤參數標籤'(_ :)'不匹配任何可用的重載 –

+0

@JackFrye我錯過了參數名...更新了我的答案。 – Lumialxk

+0

無法轉換類型'AnyObject?'的值到預期的參數類型'字符串' –