你可以使用上MPMediaQuery
的collectionSections
屬性來獲取數據的相關部分。對於artistsQuery
,每個MPMediaQuerySection
的title
表示藝術家姓名的第一個字母。每個部分還有一個range
,然後您可以申請從collections
陣列獲取藝術家姓名的子陣列。
這會給你的MPMediaQuerySection
爲信一個:
MPMediaQuery *allArtistsQuery = [MPMediaQuery artistsQuery];
NSArray *collectionSections = allArtistsQuery.collectionSections;
NSPredicate *artistPredicate = [NSPredicate predicateWithFormat:@"title == %@", @"A"];
MPMediaQuerySection *artistSection = [[collectionSections filteredArrayUsingPredicate:artistPredicate] lastObject];
然後採取部分的range
屬性來獲取所有藝術家集合的一個子開始以字母一個:
NSArray *collections = allArtistsQuery.collections;
NSRange arraySlice = artistSection.range;
NSArray *filteredCollections = [collections subarrayWithRange:arraySlice];
for (MPMediaItemCollection *artistCollection in filteredCollections) {
NSLog(@"%@", [[artistCollection representativeItem] valueForProperty:MPMediaItemPropertyArtist]);
}