我正在实现一个搜索字段,用户可以在其中键入一个字符串来过滤视图中显示的项目.显示的每个对象都有keywords对多的关系,我希望能够根据它们的关键字过滤对象.每个关键字对象都有一个name属性,所以我设置了一个NSPredicate来进行如下过滤:

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS %@", self.searchString];

这是可行的,但问题是搜索是区分大小写的,因此如果关键字有大写字母,但用户键入的都是小写字母,则找不到匹配项.我try 了以下修改:

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS[c] %@", self.searchString];

但这对匹配的大小写敏感度没有任何影响.有没有一种方法可以只用一个简单的谓词进行这种不区分大小写的匹配?或者我需要在关键字类上实现某种自定义访问器,例如,编写一个lowercaseName方法,并与搜索字符串的小写版本进行匹配?

增编:

推荐答案

如果我理解正确,那么只要有任何关键字名称与搜索字符串匹配,您就希望谓词为true.为此,您需要使用以下任何关键字进行测试:

[NSPredicate predicateWithFormat:@"ANY keywords.name CONTAINS[c] %@", ...];

这将搜索关键字,如果其中任何关键字名称包含搜索字符串,则返回true.

Objective-c相关问答推荐

当我们只能使用 NSObject 时,为什么还要使用 id?

Objective-C 和 Cocoa 有什么区别?

在 UITableViewCells 上显示复制弹出窗口的简单方法,如地址簿应用程序

具有匿名函数/块的 NSTimer?

Iphone,获取 NSArray 中的国家/地区列表

如何从 Xcode4 生成 UML 图

如何以编程方式退出 mac 应用程序?

在 Xcode 5 中运行代码覆盖时出现数十个profiling:invalid arc tag

我们可以在 UIPageViewController 中自定义页面指示器吗?

在 Cocoa 中你更喜欢 NSInteger 还是 int,为什么?

何时应该使用 initWithNibName 初始化视图控制器?

NSCharacterSet:如何将_添加到 alphanumericCharacterSet 文本限制?

Objective-C 中的属性和实例变量

协议和代表之间的区别?

UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效?

AVAudioPlayer 不播放任何声音

如何检测父视图控制器中模态视图控制器的解除?

如何在 Objective-c 中将数组声明为常量?

未调用 cellForItemAtIndexPath 但 numberOfItemsInSection 调用

Facebook SDK 登录永远不会在 iOS 9 上回调我的应用程序