0

假设我在数组中有这个谓词feedDays数组:

<__NSArrayM 0x7ff7f3cd1040>(
    feedDay == 1,
    feedDay == 2,
    feedDay == 4
)

我需要用这个statusPredicates数组与它:

<__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 但我不知道如何将它与两个谓词数组结合在一起。

4

2 回答 2

1

在我看来,一个组合谓词如

feedDay == 1 && feedDay == 2 ...

总是的。

因此,您可能的意思是将每个谓词与neutered条件结合起来,使两个条件都为真(and),并结合这些单独的组,使其中任何一个都为真(or)。

如果将数组与组合成一个大化合物,and它必然总是错误的。假设neutered条件始终相同,

NSPredicate *finalPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:
  @[[NSPredicate predicateWithFormat:@"is_neutered = 0"],
    [NSCompoundPredicate orPredicateWithSubPredicates:feedDays]]];

这很丑,对吧?所以我建议您创建一个包含可能值的数组feedDay并使用简单的

[NSPredicate predicateWithFormat:
     @"is_neutered = 0 && feedDay in %@", allowedFeedDays]
于 2015-09-21T18:52:30.213 回答
-1

使用此代码 -

NSMutableArray *allPredicates = [[NSMutableArray alloc] initWithArray:feedDays];
[allPredicates addObjectsFromArray:statusPredicates];

NSCompoundPredicate *finalPred = [NSCompoundPredicate andPredicateWithSubpredicates:allPredicates];
于 2015-09-21T18:05:24.753 回答