NSPredicate 同时使用 IN 和 LIKE
Posted
技术标签:
【中文标题】NSPredicate 同时使用 IN 和 LIKE【英文标题】:NSPredicate to use IN and LIKE at the same time 【发布时间】:2012-05-01 12:55:35 【问题描述】:我有一个搜索值数组,我想在 NSPredicate 中与 LIKE 查询结合使用:
NSPredicate *p = [NSPredicate predicateWithFormat:@"textField IN LIKE[c] %@", array];
这不起作用,但是这是否可以查看 textfield 对数组中的每个值是否有任何 LIKE 比较?
【问题讨论】:
【参考方案1】:您应该使用NSCompoundPredicate
。它让您可以将一系列 LIKE 谓词与 OR 结合起来。
NSMutableArray *subpredicates = [NSMutableArray array];
for(NSString *text in array)
[subpredicates addObject:[NSPredicate predicateWithFormat:@"textfield LIKE %@",text]];
NSPredicate *finished = [NSCompoundPredicate orPredicateWithSubpredicates:subpreds];//Your final predicate
【讨论】:
是否可以这样做:WHERE x = 0 AND y = 0 AND (field IN array OR anotherField LIKE[c] array 有 orCompoundPredicateWithSubpredicates 和 andCompoundPredicateWithSubpredicates 分别构成 OR 或 AND 谓词。你可以按照你想要的方式组合它们以上是关于NSPredicate 同时使用 IN 和 LIKE的主要内容,如果未能解决你的问题,请参考以下文章
使用 Coredata 和 NSFetchRequest 进行“IN”搜索时如何格式化 NSPredicate
Swift NSPredicate SUBQUERY with NOT IN?
IOS / Objective-C:核心数据NSPredicate使用IN不返回所有匹配
NSPredicate:将 CONTAINS 与 IN 结合
Core Data NSPredicate for (select ... where not in (select))