Ios 使用不带标点符号的MPMediaPropertyPredicate的MPMediaQuery

Ios 使用不带标点符号的MPMediaPropertyPredicate的MPMediaQuery,ios,nspredicate,mpmediaquery,Ios,Nspredicate,Mpmediaquery,Im使用上述代码从iTunes库返回歌曲标题匹配的searchText中的MPMediaItems数组。但是,我希望它不使用标点符号进行匹配,例如,标题中带有“不”的歌曲匹配“不” 谢谢。没有内置方式。您必须自己将搜索文本中的“don”改为“don”。或者,以牺牲一些速度为代价,您可以获取所有媒体项目的所有标题,并亲自列举它们;例如,一旦它们都在一个NSArray中,您就可以调用indexesOfObjectsPassingTest:,此时您的块可以执行您喜欢的任何测试。出于性能原因,我不再枚举

Im使用上述代码从iTunes库返回歌曲标题匹配的
searchText
中的
MPMediaItems
数组。但是,我希望它不使用标点符号进行匹配,例如,标题中带有“
”的歌曲匹配“


谢谢。

没有内置方式。您必须自己将
搜索文本中的“don”改为“don”。或者,以牺牲一些速度为代价,您可以获取所有媒体项目的所有标题,并亲自列举它们;例如,一旦它们都在一个NSArray中,您就可以调用
indexesOfObjectsPassingTest:
,此时您的块可以执行您喜欢的任何测试。

出于性能原因,我不再枚举数组。虽然我希望情况并非如此,但我刚刚注意到苹果音乐应用程序中的搜索是这样工作的,所以这应该不是一个大问题。谢谢你的回复。我有一个应用程序,在应用程序启动时,我会将所有歌曲的大量信息收集到数组中,而且不会花太长时间(我会在后台线程中完成一些)。在此之后,枚举/搜索数组的速度非常快。
MPMediaPropertyPredicate *titlePredicate = [MPMediaPropertyPredicate predicateWithValue:searchText 
                                                                            forProperty:MPMediaItemPropertyTitle
                                                                         comparisonType:MPMediaPredicateComparisonContains];
NSSet *predicateSet = [NSSet setWithObject:titlePredicate];
MPMediaQuery *searchQuery = [[MPMediaQuery alloc] initWithFilterPredicates:predicateSet];
NSArray *queryResults = [searchQuery items];