例如,我有@{@"firstName":@"aaa", @"lastName":@"bbb"}之类的对象。
现在,我正在尝试搜索下一个谓词:

NSPredicate *predicateFirstName = [NSPredicate predicateWithFormat:@"firstName contains [c] %@", searchString];
NSPredicate *predicateLastName = [NSPredicate predicateWithFormat:@"lastName contains [c] %@", searchString];
NSPredicate *orPredicate = [NSCompoundPredicate  orPredicateWithSubpredicates:@[predicateFirstName, predicateLastName]];
searchUsersArray = [usersArray filteredArrayUsingPredicate:orPredicate];


我需要一个谓词,它将为搜索字符串@“ aa bb”用户返回,这些用户的名字以“ aa”结尾,姓氏BEGINS则是@“ bb”

NSPredicate *predicateLastName = [NSPredicate predicateWithFormat:@"(firstName AND lastName contains [c] %@)", searchString]


不要为我工作。

最佳答案

首先将搜索字符串分为末尾部分和开始部分:

NSArray *parts = [@"aa bb" componentsSeperatedByString:@" "];


然后使用BEGINSWITHENDSWITH

[NSPredicate predicateWithFormat:@"(firstName ENDSWITH[c] %@) AND (lastName BEGINSWITH[c] %@", parts[0], parts[1]];


或者,您可以将计算属性添加到实体中,使名字和姓氏相同,然后在该属性中搜索。

关于ios - 如何使用NSPredicate连接两个字段以进行搜索?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40886102/

10-14 21:27
查看更多