替换 NSPredicate 中的变量
Posted
技术标签:
【中文标题】替换 NSPredicate 中的变量【英文标题】:Replacing a variable in an NSPredicate 【发布时间】:2014-02-15 19:47:39 【问题描述】:我的NSPredicate
是
[NSPredicate predicateWithFormat:@"$1.employees.@count == 50"] ;
如何通过将$1
替换为self
(或什么都不用)从这个中获得一个新的NSPredicate
?我怎样才能得到谓词
[NSPredicate predicateWithFormat:@"self.employees.@count == 50"] ;
我不想评估我的谓词,我想要一个新的谓词。
【问题讨论】:
【参考方案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" 在“谓词编程指南”中。
【讨论】:
我爱你@Martin =8-° 是的,你是对的,我在等着看看是否有人会提供更好的东西......但这怎么可能呢? 也许你会对这个话题有所了解:***.com/q/21823339/1670830。谢谢。以上是关于替换 NSPredicate 中的变量的主要内容,如果未能解决你的问题,请参考以下文章
+[NSPredicate predicateWithFormat] 替换保留字
xctest 使用 NSPredicate 最终替换 Quick/Nimble