你可以使用上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]);
}