NSPredicate在db中找到一个数组

时间:2014-02-13 09:50:46

标签: ios nspredicate

我有一个包含的数据库 NSString *编号 NSSet *值

我可以根据字符串Number轻松获得所有结果,包括以下内容:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Number LIKE[c] %@", numberValue];
 NSArray *result = [DB MR_findAllWithPredicate:predicate inContext:_context];

如果不是Number我要传递一个值数组,我如何在db中找到包含给定数组(NSSet)的所有结果?

NSPredicate *predicate = [NSPredicate predicateWithFormat: ????
 NSArray *result = [DB MR_findAllWithPredicate:predicate inContext:_context];

更新

基于Igoris回答:

[NSPredicate predicateWithFormat:@“(Values.@count == %d) AND (SUBQUERY(Values, $x, $x IN %@).@count == %d)", allValues.count, allValues, allValues.count];

这似乎有效,但它不会返回结果中的所有值。

2 个答案:

答案 0 :(得分:0)

只需使用IN

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Number IN[c] %@", numberValues];

numberValues是包含您正在寻找的数字的NSArray

<强>更新

在数据结构澄清后,我想出了以下谓词来获取对象:

[NSPredicate predicateWithFormat:@“(Values.@count == %d) AND (SUBQUERY(Values, $x, $x IN %@).@count == %d)", allValues.count, allValues, allValues.count];

答案 1 :(得分:0)

ANY和NONE怎么样?

[NSPredicate predicateWithFormat:@"ANY number == %@", numberValues];