搜索以字母开头的iPod艺术家

时间:2013-04-28 22:11:42

标签: iphone ios mpmediaquery

有没有办法使用像通配符这样的东西来搜索以给定字母开头的所有iPod艺术家名字,如下所示:

MPMediaPropertyPredicate *artistNamePredicate = [MPMediaPropertyPredicate predicateWithValue:@"A*" forProperty:MPMediaItemPropertyArtist];

MPMediaQuery *allArtistsQuery = [MPMediaQuery artistsQuery];

[allArtistsQuery addFilterPredicate: artistNamePredicate];

2 个答案:

答案 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];