我的NSPredicate
是
[NSPredicate predicateWithFormat:@"$1.employees.@count == 50"] ;
如何通过将NSPredicate
替换为$1
(或什么都不是),从这个self
获取新的[NSPredicate predicateWithFormat:@"self.employees.@count == 50"] ;
?我怎样才能获得谓词
{{1}}
我不想评估我的谓词,我想要一个新的谓词。
答案 0 :(得分:1)
您可以从“谓词模板”创建谓词。但是,$1
无效
谓词模板中的变量和
[NSPredicate predicateWithFormat:@"$1.employees.@count == 50"]
实际上会导致运行时异常。但是以下工作并且应该证明这个想法:
NSPredicate *p1 = [NSPredicate predicateWithFormat:@"$foo.employees.@count == 50"] ;
NSLog(@"%@", p1);
// $foo.employees.@count == 50
// Substitute $foo by self:
NSPredicate *p2 = [p1 predicateWithSubstitutionVariables:@{@"foo": [NSExpression expressionForEvaluatedObject]}];
NSLog(@"%@", p2);
// employees.@count == 50
// Substitute $foo by "bar":
NSPredicate *p3 = [p1 predicateWithSubstitutionVariables:@{@"foo": [NSExpression expressionForKeyPath:@"bar"]}];
NSLog(@"%@", p3);
// bar.employees.@count == 50
有关详细信息,请参阅"Creating Predicates Using Predicate Templates" 在“谓词编程指南”中。