iPod Touch 上のすべてのプレイリストのコレクションを要求するクエリをインスタンス化しました。MPMediaQuery コレクション プロパティから返される結果には、43 項目が含まれます。これらには、ネイティブのミュージック アプリが表示する 17 のプレイリストがすべて含まれます。ただし、コレクションには 26 個の「プレイリスト」も含まれており、実際には私の iPod ライブラリのアルバムです。これは、iPod のアルバムの一部 (すべてではない) を表しています。
アルバムと実際のプレイリストを区別する MPMediaPlaylist 属性があるかどうかを確認しようとしましたが、役に立ちませんでした。コレクションのセクションを調べて、実際のプレイリストがアルバムとは別のセクションに保存されているかどうかを確認しましたが、セクションは 1 つしかありませんでした。最後に、アルバムに PersistantID があるかどうかを調べました。これは、ドキュメントがプレイリストに固有であることを示しています。配列内のすべての項目には PersistantID があります。
Music アプリは 17 の実際のプレイリストだけを問題なく表示するので、何か足りないものがあるに違いない。クエリの作成に使用されるコードは次のとおりです。
MPMediaQuery * myPlaylistsQuery = [ MPMediaQuery playlistsQuery ];
NSArray * playlists = [ myPlaylistsQuery collections ];
以下は、「プレイリスト」配列の内容が調べられたときにログに記録されるデータのサンプルです。
================================================== ===
プレイリストのリスト
.... プレイリスト コレクションには 01 のセクションがあります
.... プレイリスト コレクションには 43 個の MPMediaPlaylist オブジェクトがあります
バッハ
.... 持続 ID: 17002820337772537981
Best of Simon and Garfunkel
....持続ID: 2965021518813542622
Blue
.... 永続 ID: 11514004552991695558
Blues
.... 永続 ID: 14243796139384893728
.... (etc)
上記のリストでは、エントリ「Bach」、「Best of Simon and Garfunkel」、および「Blue」がアルバムを表しています。エントリ「ブルース」は、私が iTunes で定義した真のプレイリストの最初のものを表しています。
プレイリスト クエリから返されたアイテムをアルバム クエリのアイテムと比較し、一致するものを除外できると思います。もっと簡単な解決策はありますか?