0

我已经实例化了一个查询来请求我 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 上定义的第一个真正的播放列表。

我想我可以将播放列表查询返回的项目与专辑查询中的项目进行比较,并消除任何匹配项。有没有更直接的解决方案?

4

1 回答 1

0

[[MPMediaQuery playlistsQuery] collections]经常使用并且从来没有得到一张专辑作为结果返回。我想您的代码中的其他地方存在问题。例如,您仍然可以在手动添加/删除参数创建 playlistsQuery 后自定义它,如果您更改太多,您甚至可以让查询返回专辑而不是播放列表。

特别是检查查询的groupingType属性。对于 playlistQuery 它应该设置为MPMediaGroupingPlaylist默认值,但也许您已经为您的查询手动覆盖或删除了此属性。

否则,您的设备系统 API 或 iTunes 库中只会存在错误的可能性。但这非常、非常、非常不可能!

于 2013-03-15T15:56:10.813 回答