我可以使用`predicateWithSubstitutionVariables`或类似的键而不是值吗?

时间:2017-08-29 16:42:25

标签: objective-c nspredicate

一旦我询问如何将1个关键字传递给多个密钥并获得此答案:Use 1 search value for multiple keywords。然后,我询问如何将密钥作为参数传递:Pass the key as param in NSPredicate

所以现在,我很好奇我是否可以反之亦然:我可以通过1个(或许多个)搜索词传递多个密钥作为参数吗?如果是,那么它会是什么样子?

有些代码供你们编辑。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(($key = 'value1') 
                           @" OR ($key = 'value2')) "
                           @" AND ($key != '0') "]; 

predicate = [predicate predicateWithSubstitutionVariables:@{@"key": @"myProperty"}];

请注意,在谓词中,有一个(AND!=)所以我无法使用IN predicate

[NSPredicate predicateWithFormat:@"myProperty IN %@", @[@"value1", @"value2", @"value3"]];

这些只是一些示例代码,所以请不要尝试修复谓词,但要注意问题:substituteVariables带变量是过滤的关键。

1 个答案:

答案 0 :(得分:1)

密钥必须是密钥路径表达式:

Error: near ",": syntax error

将导致谓词

[predicate predicateWithSubstitutionVariables:@{@"key": [NSExpression expressionForKeyPath:@"myProperty"]}]