假设我在feedDays
数组中有这个谓词数组:
<__NSArrayM 0x7ff7f3cd1040>(
feedDay == 1,
feedDay == 2,
feedDay == 4
)
我需要与此statusPredicates
数组进行AND运算:
<__NSArrayM 0x7ff7f3cd1070>(
is_neutered == 0 AND other_status == 0,
is_neutered == 0 AND other_status == 1,
is_neutered == 0 AND other_status == 2,
is_neutered == 0 AND other_status == 3,
)
如何将这些组合成一个查询?我假设我必须使用NSCompoundPredicate,但我无法弄清楚如何将它与两个谓词数组一起使用。
答案 0 :(得分:1)
在我看来,像
这样的组合谓词feedDay == 1 && feedDay == 2 ...
将始终为假。
因此,您可能意味着将每个谓词与neutered
条件相结合,以便两个条件都为真(and
),并将这些单独的组合起来,以便< strong> 这些都是真的(or
)。
如果将数组与一个大的化合物and
组合在一起,它必然总是错误的。假设neutered
条件始终相同,
NSPredicate *finalPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:
@[[NSPredicate predicateWithFormat:@"is_neutered = 0"],
[NSCompoundPredicate orPredicateWithSubPredicates:feedDays]]];
那是非常难看的,对吗?因此,我建议您使用feedDay
的可能值创建一个数组,并使用简单的
[NSPredicate predicateWithFormat:
@"is_neutered = 0 && feedDay in %@", allowedFeedDays]
答案 1 :(得分:-1)
使用此代码 -
NSMutableArray *allPredicates = [[NSMutableArray alloc] initWithArray:feedDays];
[allPredicates addObjectsFromArray:statusPredicates];
NSCompoundPredicate *finalPred = [NSCompoundPredicate andPredicateWithSubpredicates:allPredicates];