有没有办法“逆转”NSPredicate

时间:2014-06-11 07:56:22

标签: ios nspredicate

让我们说我有这个谓词:

NSPredicate *filter = [NSPredicate predicateWithFormat:@"%K == NO", @"someAttribute"];

我希望将该谓词改为:

NSPredicate *filter = [NSPredicate predicateWithFormat:@"%K == YES", @"someAttribute"];

有没有办法在不创建新谓词的情况下执行此操作。

1 个答案:

答案 0 :(得分:9)

您无法修改现有的NSPredicate。但是你可以很容易地创建一个新的谓词,它是filter的“反向”(或更准确地说是否定):

NSPredicate *notFilter = [NSCompoundPredicate notPredicateWithSubpredicate:filter];

请参阅+[NSCompoundPredicate notPredicateWithSubpredicate:] documentation