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

发布于 2024-12-19 08:35:49 字数 739 浏览 2 评论 0原文

MPMediaPropertyPredicate *titlePredicate = [MPMediaPropertyPredicate predicateWithValue:searchText 
                                                                            forProperty:MPMediaItemPropertyTitle
                                                                         comparisonType:MPMediaPredicateComparisonContains];
NSSet *predicateSet = [NSSet setWithObject:titlePredicate];
MPMediaQuery *searchQuery = [[MPMediaQuery alloc] initWithFilterPredicates:predicateSet];
NSArray *queryResults = [searchQuery items];

我使用上面的代码从 iTunes 库返回一个 MPMediaItems 数组,其中歌曲标题与 searchText 匹配。不过,我希望它在没有标点符号的情况下匹配,例如,标题中带有“Don't”的歌曲匹配“dont”。

谢谢。

MPMediaPropertyPredicate *titlePredicate = [MPMediaPropertyPredicate predicateWithValue:searchText 
                                                                            forProperty:MPMediaItemPropertyTitle
                                                                         comparisonType:MPMediaPredicateComparisonContains];
NSSet *predicateSet = [NSSet setWithObject:titlePredicate];
MPMediaQuery *searchQuery = [[MPMediaQuery alloc] initWithFilterPredicates:predicateSet];
NSArray *queryResults = [searchQuery items];

Im using the above code to return an array of MPMediaItems from the iTunes library where the song title matches searchText. However I would like it to match without punctuation, so that for example, songs with "Don't" in the title match "dont".

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如果没有你 2024-12-26 08:35:49

没有内置的方法。您必须自己将 searchText 中的“dont”更改为“don't”。或者,以牺牲一定速度为代价,您可以获取所有媒体项的所有标题并自己枚举它们;例如,一旦它们全部位于 NSArray 中,您就可以调用 indexesOfObjectsPassingTest: ,此时您的块可以执行您喜欢的任何测试。

There's no built-in way. You'd have to change "dont" in the searchText to "don't" yourself. Or, at the expense of some speed, you could fetch all the titles of all the media items and enumerate them yourself; for example, once they were all in an NSArray you could call indexesOfObjectsPassingTest: and at that point your block can perform any test you like.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文