有没有办法使用像通配符这样的东西来搜索以给定字母开头的所有iPod艺术家名字,如下所示:
MPMediaPropertyPredicate *artistNamePredicate = [MPMediaPropertyPredicate predicateWithValue:@"A*" forProperty:MPMediaItemPropertyArtist];
MPMediaQuery *allArtistsQuery = [MPMediaQuery artistsQuery];
[allArtistsQuery addFilterPredicate: artistNamePredicate];
答案 0 :(得分:0)
MPMediaPropertyPredicate仅支持属性值等于谓词值(默认值)或包含谓词值,如docs中所述。
话虽如此,另一种方法是使用 contains 比较,然后使用返回的值过滤结果。
[MPMediaPropertyPredicate predicateWithValue:@"A*" forProperty:MPMediaItemPropertyArtist comparisonType:MPMediaPredicateComparisonContains]
答案 1 :(得分:0)
您可以使用collectionSections
上的MPMediaQuery
属性来获取数据的相关部分。对于artistsQuery
,每个title
的{{1}}代表艺术家姓名的第一个字母。每个部分还有一个MPMediaQuerySection
,您可以将其应用于从range
数组中获取艺术家名称的子数组。
这将为您提供{{1>}字母 A :
collections
然后使用该部分的MPMediaQuerySection
属性获取以字母 A 开头的所有艺术家收藏的子数组:
MPMediaQuery *allArtistsQuery = [MPMediaQuery artistsQuery];
NSArray *collectionSections = allArtistsQuery.collectionSections;
NSPredicate *artistPredicate = [NSPredicate predicateWithFormat:@"title == %@", @"A"];
MPMediaQuerySection *artistSection = [[collectionSections filteredArrayUsingPredicate:artistPredicate] lastObject];