您可以使用该collectionSections
属性MPMediaQuery
来获取数据的相关部分。对于artistsQuery
,title
每个的MPMediaQuerySection
代表艺术家姓名的第一个字母。每个部分还有一个range
,然后您可以应用它从数组中获取艺术家姓名的子collections
数组。
这将为您MPMediaQuerySection
提供字母A:
MPMediaQuery *allArtistsQuery = [MPMediaQuery artistsQuery];
NSArray *collectionSections = allArtistsQuery.collectionSections;
NSPredicate *artistPredicate = [NSPredicate predicateWithFormat:@"title == %@", @"A"];
MPMediaQuerySection *artistSection = [[collectionSections filteredArrayUsingPredicate:artistPredicate] lastObject];
然后获取该部分的属性以获取以字母Arange
开头的所有艺术家收藏的子数组:
NSArray *collections = allArtistsQuery.collections;
NSRange arraySlice = artistSection.range;
NSArray *filteredCollections = [collections subarrayWithRange:arraySlice];
for (MPMediaItemCollection *artistCollection in filteredCollections) {
NSLog(@"%@", [[artistCollection representativeItem] valueForProperty:MPMediaItemPropertyArtist]);
}