2013-02-04 37 views
1

我有一个“歌”的NSMutableArray充满设备上的所有歌曲:排序MPMediaItem按专辑

MPMediaQuery *everything = [MPMediaQuery songsQuery]; 
    NSArray *songCollections = [everything collections]; 

    songs = [NSMutableArray array]; 
    for (MPMediaItemCollection *song in songCollections) { 
     MPMediaItem *representativeItem = [song representativeItem]; 
     [songs addObject:representativeItem]; 
    } 

有没有办法按专辑排序呢?我注意到,加入

[everything setGroupingType:MPMediaGroupingAlbum]; 

产生一个奇怪的查询结果(这只是阵列中的推动每张专辑的第一首歌)提前

感谢

回答

1

您可以获取相册,然后通过迭代他们来填充一首歌阵列,从而相对于分类到专辑中的歌曲:

NSMutableArray *sortedSongs = [[NSMutableArray alloc] init]; 
MPMediaQuery *albums = [MPMediaQuery albumsQuery]; 
NSArray* albumObjects = [albums collections]; 
for(MPMediaItemCollection *album in albumObjects) { 
    for(MPMediaItem *song in album.items) { 
     [sortedSongs addObject:song]; 
    } 
} 

NSLog(@"sorted songs : %@", sortedSongs); 

希望这有助于

+0

这不是按专辑排序歌曲,这是检索专辑.... –

+0

上述查询检索专辑,每个专辑将包含歌曲,对不对?所以现在如果你将这些专辑中的歌曲添加到你的可变数组中,你不会得到按专辑排序的歌曲吗? –

+0

可能是因为我是一个Objective-C n00b,但我不知道如何使用这种方法访问和存储歌曲 –