2016-05-15 5 views
0

デバイス上のすべての曲を取得し、その情報の一部をUITableViewに入れ、AVAudioPlayerを使用して選択したセルの曲を再生するアプリケーションを作成しました。しかし何らかの理由で、私のデバイスの3曲にURLがないように見えます。これらの曲は最近2ヵ月後に購入されました。以下のコードを参照してください。iTunesで購入したメディアのURL

//get all the songs 
var songsList: [MPMediaItem] = MPMediaQuery.songsQuery().items! 

if let url = song.valueForProperty(MPMediaItemPropertyAssetURL) as! NSURL? { 
      self.player = try! AVAudioPlayer(contentsOfURL: url) 
      let playing: Bool = player.play() 
      print("The audio play status: " + String(playing)) 
     } 
     else { 
      print("Failed to cast to URL") 
     } 

何らかの理由で、これらの3曲がAnyObjectからキャストされたタイプに失敗しますか? NSURLに?デバイス上にURLが存在してはならないことを意味しますか?分かりません。私の唯一の推測は、別のMacintoshデバイス上でiTunesから購入したもので、iTunesアカウントを介してクラウド転送を介してそこに保存されていたということです。どんな説明も大きな助けになるでしょう。

+1

アップルの音楽トラックかもしれない? – Moritz

+0

@EricDそれは私の最初の考えでもあった... –

答えて

1

トラックが

A)はなく、あなたのデバイス上にある場合は、資産のURLを取得することはできません - 少なくともない完全に - しかし、オンデマンド/ストリームをダウンロードして利用できます。これは、完全に演奏されないことによって生じ得る。家族の共有を介して他のデバイスで購入される。アップルマッチトラック。 yadayadayada。

B)DRMで保護されています。最近思っていたのはかなり珍しいことですが、それは数年前の大きなことでした。ファイルの拡張子が.m4pの場合は、間違いなく問題です。それは.m4aファイルでも発生するという報告があり、iTunesで「購入済みAACオーディオファイル」と表示されているということは、あなたがそのオーディオに乗ることを許されていないと判断したことを示しています。

+0

URLは一部の曲ではnilです。私はmp4aとmp3を持っています。もし彼らがmp4sだったら、彼らはまだ出現するだろうと思う –

関連する問題