首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPMediaQuery:搜索时查找Umlauts和特殊字符

MPMediaQuery:搜索时查找Umlauts和特殊字符
EN

Stack Overflow用户
提问于 2012-11-09 04:01:25
回答 1查看 321关注 0票数 1

我正在使用MPMediaQuery在用户的库中搜索歌曲标题:

代码语言:javascript
复制
MPMediaPropertyPredicate *titlePredicate = [MPMediaPropertyPredicate predicateWithValue:titleString
                                                                            forProperty:MPMediaItemPropertyTitle
                                                                         comparisonType:MPMediaPredicateComparisonContains];

MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query addFilterPredicate: titlePredicate];


NSArray* result = query.items;

titleString是由用户输入并取自UISearchFieldNSString。这在大多数情况下工作得很好,但在某些情况下会失败:当你在桌面上使用iTunes时,你可以搜索'holle‘,它会找到'Der Hölle Rache’。这不适用于我的方法。同样的,搜索'que‘也找不到’quépasa?‘。有没有办法解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2012-11-16 10:43:27

MPMediaPropertyPredicate当前不允许您指定任何NSStringCompareOptions。这种情况需要不敏感的变音符号搜索,它将忽略任何重音符号或其他变音符号。

一种解决方法(尽管速度比理想的要慢,取决于库的大小)是使用NSString rangeOfString:options:方法使用变音符号和不区分大小写的搜索遍历整个媒体库:

代码语言:javascript
复制
MPMediaQuery *query = [[MPMediaQuery alloc] init];
NSArray *result = query.items;
NSString *searchString = @"que";

NSIndexSet *filteredSet = [result indexesOfObjectsWithOptions:NSEnumerationConcurrent
                                                  passingTest:^BOOL(MPMediaItem *song, NSUInteger idx, BOOL *stop) {
    NSString *songTitle = [song valueForProperty:MPMediaItemPropertyTitle];
    NSRange foundRange = [songTitle rangeOfString:searchString
                                          options:NSDiacriticInsensitiveSearch | NSCaseInsensitiveSearch];

    // rangeOfString:options: returns {NSNotFound, 0} if "que" is not found during search.
    if (foundRange.location != NSNotFound) { 
        return YES;
    } else
        return NO; 
}];

NSArray *filteredResult = [result objectsAtIndexes:filteredSet];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13296803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档