从特定播放列表中获取特定歌曲

时间:2010-01-07 14:34:43

标签: iphone cocoa-touch

假设我想按名称命名所有来自特定歌曲的歌曲,例如“我的播放列表”,播放列表和该播放列表中的播放歌曲。

有可能吗?

1 个答案:

答案 0 :(得分:3)

我没有对此进行过测试,但下面的代码是检索播放列表并播放其第100个项目的开始。但是,它不会通过tite对播放列表进行排序。为此,您可以迭代播放列表项,检索所有名称,并将名称放入一个字典中,MPMediaItem个对象作为键(不知道是否有效)。然后,您可以通过在字典上调用-keysSortedByValueUsingSelector:来按歌曲标题进行排序,该字典将返回一系列媒体项目。从该数组中取出第100个元素并将其提供给音乐播放器。

NSString *playlistToPlay = @"My playlist";
MPMediaQuery *playlistsQuery = [MPMediaQuery playlistsQuery];
NSArray *playlists = [playlistsQuery collections];
for (MPMediaPlaylist *playlist in playlists) {
    NSString *playlistName = [playlist valueForProperty:MPMediaPlaylistPropertyName];
    if ([playlistName isEqualToString:playlistToPlay]) {
        // This is the playlist we are looking for
        MPMusicPlayerController *player = [MPMusicPlayerController iPodMusicPlayer];
        [player stop];
        [player setQueueWithItemCollection:playlist];

        // Play the 100th song in the playlist
        MPMediaItem *songToPlay = [[playlist items] objectAtIndex:99];
        player.nowPlayingItem = songToPlay;
        [player play];

        // Exit the loop
        break;
    }
}