2013-02-04 25 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,但我不知道如何使用這種方法訪問和存儲歌曲 –