我正在实现一个搜索字段,用户可以在其中键入一个字符串来过滤视图中显示的项目.显示的每个对象都有keywords
对多的关系,我希望能够根据它们的关键字过滤对象.每个关键字对象都有一个name
属性,所以我设置了一个NSPredicate来进行如下过滤:
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS %@", self.searchString];
这是可行的,但问题是搜索是区分大小写的,因此如果关键字有大写字母,但用户键入的都是小写字母,则找不到匹配项.我try 了以下修改:
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS[c] %@", self.searchString];
但这对匹配的大小写敏感度没有任何影响.有没有一种方法可以只用一个简单的谓词进行这种不区分大小写的匹配?或者我需要在关键字类上实现某种自定义访问器,例如,编写一个lowercaseName
方法,并与搜索字符串的小写版本进行匹配?
增编: