例如,我有@{@"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:@" "];
然后使用
BEGINSWITH
和ENDSWITH
:[NSPredicate predicateWithFormat:@"(firstName ENDSWITH[c] %@) AND (lastName BEGINSWITH[c] %@", parts[0], parts[1]];
或者,您可以将计算属性添加到实体中,使名字和姓氏相同,然后在该属性中搜索。
关于ios - 如何使用NSPredicate连接两个字段以进行搜索?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40886102/