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 orCompoundPredicateWithSubpredicatesandCompoundPredicateWithSubpredicates 分别构成 ORAND 谓词。你可以按照你想要的方式组合它们

以上是关于NSPredicate 同时使用 IN 和 LIKE的主要内容,如果未能解决你的问题,请参考以下文章

使用 Coredata 和 NSFetchRequest 进行“IN”搜索时如何格式化 NSPredicate

Swift NSPredicate SUBQUERY with NOT IN?

IOS / Objective-C:核心数据NSPredicate使用IN不返回所有匹配

NSPredicate:将 CONTAINS 与 IN 结合

NSPredicate 和 NSArray

Core Data NSPredicate for (select ... where not in (select))