我已经实例化了一个查询来请求我 iPod Touch 上所有播放列表的集合。从 MPMediaQuery 集合属性返回的结果包含 43 个项目。其中包括原生音乐应用程序显示的所有 17 个播放列表。但是,该集合还包含 26 个“播放列表”,它们实际上是我的 iPod 库中的专辑。这代表了 iPod 上的一些(但不是全部)专辑。
我试图查看是否有 MPMediaPlaylist 属性可以将专辑与实际播放列表区分开来,但无济于事。我查看了收藏的各个部分,看看真正的播放列表是否保存在与专辑不同的部分中,但只有一个部分。最后,我查看了专辑是否有 PersistantID,文档表明它是播放列表独有的。数组中的所有项目都有一个 PersistantID。
音乐应用程序只显示 17 个实际播放列表没有问题,所以一定有我遗漏的东西。这是用于构建查询的代码:
MPMediaQuery * myPlaylistsQuery = [ MPMediaQuery playlistsQuery ];
NSArray * playlists = [ myPlaylistsQuery collections ];
以下是询问“播放列表”数组的内容时记录的数据示例:
==================================================== ===
播放列表列表
.... 播放列表集合中有 01 个部分.... 播放列表集合
Bach
中有 43 个 MPMediaPlaylist 对象
.... Persistant ID: 17002820337772537981
Best of Simon and Garfunkel
.... Persistant ID: 2965021518813542622
Blue
.... 持久 ID: 11514004552991695558
Blues
.... 持久 ID: 14243796139384893728
.... (etc)
在上面的列表中,条目“Bach”、“Best of Simon and Garfunkel”和“Blue”代表专辑。条目“Blues”代表了我在 iTunes 上定义的第一个真正的播放列表。
我想我可以将播放列表查询返回的项目与专辑查询中的项目进行比较,并消除任何匹配项。有没有更直接的解决方案?