我已经实例化了一个查询,请求我的iPod Touch上的所有播放列表的集合。从MPMediaQuery集合属性返回的结果包含43个项目。其中包括本机音乐应用显示的所有17个播放列表。但是,该系列还包含26个“播放列表”,实际上是我的iPod库中的专辑。这代表iPod上的一些(但不是全部)专辑。
我试图查看是否存在可能将专辑与实际播放列表区分开的MPMediaPlaylist属性,但无济于事。我查看了该集合的各个部分,看看真实的播放列表是否保存在与相册不同的部分中,但只有一个部分。最后,我查看了相册是否具有PersistantID,文档指出这是播放列表所独有的。数组中的所有项都有PersistantID。
音乐应用程序可以毫不费力地只显示17个实际的播放列表,因此必须有一些我缺少的东西。以下是用于构建查询的代码:
MPMediaQuery * myPlaylistsQuery = [ MPMediaQuery playlistsQuery ];
NSArray * playlists = [ myPlaylistsQuery collections ];
以下是查询“播放列表”数组内容时记录的数据示例:
=============================================== ======
播放列表清单
....播放列表中有01个部分
....播放列表集合中有43个MPMediaPlaylist对象
巴赫
....持久编号:17002820337772537981
西蒙和加芬克尔的最佳作品
.... Persistant ID:2965021518813542622
蓝
....持久编号:11514004552991695558
蓝调
.... Persistant ID:14243796139384893728
....(等)
在上面的列表中,条目“Bach”,“Best of Simon and Garfunkel”和“Blue”代表专辑。条目“Blues”代表我在iTunes上定义的第一个真正的播放列表。
我想我可以将播放列表查询返回的项目与相册查询中的项目进行比较,并消除任何匹配项。有更直接的解决方案吗?
答案 0 :(得分:0)
我经常使用[[MPMediaQuery playlistsQuery] collections]
并且从未获得过返回的相册。我想你的代码中的其他地方存在问题。例如,您可以在创建播放列表后手动添加/删除参数来自定义播放列表查询,如果更改太多,您甚至可以让查询返回专辑而不是播放列表。
特别检查查询的groupingType
属性。对于playlistQuery,默认情况下应将其设置为MPMediaGroupingPlaylist
,但您可能已为您的查询手动覆盖或删除了此属性。
否则,您的设备系统API或iTunes资料库中仍然可能存在错误。但这非常非常非常不可能!