【发布时间】:2012-12-21 05:42:24
【问题描述】:
我有一个 Person 对象,它有两个 NSString 属性; firstName and lastName。
我目前正在使用NSPredicate,如下所示:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(firstName contains[cd] %@) OR (lastName contains[cd] %@)", searchText, searchText];
例如,假设我正在搜索名称"John Smith"。如果我在搜索栏中输入"Joh",那么John Smith 将作为一个选项出现。这很好,但如果我输入"John Sm",它将变为空白。
我如何在predicate 中加入名字和姓氏,所以如果我正在搜索"John Sm",那么John Smith 仍然会作为一个选项出现。
我希望这是有道理的。谢谢。
编辑:
为了进一步说明,我使用了SearchDisplayController 委托方法:
-(void)filterContentForSearchText:(NSString *)searchText scope:(NSString *)scope;
我正在使用predicate,如下所示:
newArray = [personObjectArray filteredArrayUsingPredicate:predicate];
【问题讨论】:
-
我已经阅读了,但我仍然不明白该怎么做。
-
您可以更好地使用字典或数组,以便我们轻松实现它
-
NSArray* ar = [NSArray arrayWithObjects:@"on call", @"I'm on call", @"lala", @"On call", nil]; NSArray* filt = [ar filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self like[c] 'on call'"]]; NSLog([过滤描述]); //输出“on call”、“on call”
-
我明白这一点,但我有一个动态的对象数组,我想用我的两个 NSString 对象的属性与 searchText 进行比较。
标签: iphone objective-c ios nsstring nspredicate