MPMediaQuery 从persistentID 返回曲目而不是播放列表

Posted

技术标签:

【中文标题】MPMediaQuery 从persistentID 返回曲目而不是播放列表【英文标题】:MPMediaQuery returning tracks instead of playlist from persistentID 【发布时间】:2014-01-06 19:38:25 【问题描述】:

我的代码的目的是从先前获得的 persistentID 返回 MPMediaPlaylist 对象。

MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:persistentID
                                                                       forProperty:MPMediaPlaylistPropertyPersistentID];
MPMediaQuery *query = [MPMediaQuery playlistsQuery];
[query addFilterPredicate:predicate];

query.items 是播放列表中包含的曲目。我想要返回的是播放列表本身。我怎么得到它?

【问题讨论】:

【参考方案1】:

https://developer.apple.com/library/ios/documentation/mediaplayer/reference/MPMediaPlaylist_ClassReference/Reference/Reference.html#//apple_ref/occ/cl/MPMediaPlaylist

查看如何获取播放列表的代码:

MPMediaQuery *myPlaylistsQuery = [MPMediaQuery playlistsQuery];
NSArray *playlists = [myPlaylistsQuery collections];

for (MPMediaPlaylist *playlist in playlists) 
    NSLog (@"%@", [playlist valueForProperty: MPMediaPlaylistPropertyName]);
    // ...

您实际上得到的是歌曲列表(items),但它们按播放列表分组。这就是为什么要求查询的 collections 可以让您引用您所追求的 MPMediaPlaylist 对象。

【讨论】:

对我来说最重要的一点是通过 [MPMediaQuery playlistsQuery] 获取查询对象,然后添加谓词。谢谢!

以上是关于MPMediaQuery 从persistentID 返回曲目而不是播放列表的主要内容,如果未能解决你的问题,请参考以下文章

播放列表的 MPMediaQuery(在 iPod 上)包括一些专辑

MPMediaQuery 无效值

MPMediaQuery:搜索时查找元音变音和特殊字符

快速使用 MPMediaQuery 获取索引 uitableview 的专辑标题?

获取当前的 MPMediaQuery 或 MPMediaItemCollection

无法理解 MPMediaQuery 的行为