NSPredicate替换键将输出引号

时间:2014-06-05 15:19:01

标签: objective-c nspredicate quotes

当我替换字段名称时,我遇到如下问题

代码

NSString *fieldName = @"name";
NSPredicate *template = [NSPredicate predicateWithFormat:@"$key = nil"];
NSPredicate *pred = [template predicateWithSubstitutionVariables:@{@"key": fieldName}];
NSLog(@"%@", pred);

输出继电器

"name" = nil

预期

name = nil

问题

名称有引号


如何获取没有键引号的谓词?

1 个答案:

答案 0 :(得分:1)

您必须使用键路径表达式而不是字符串替换:

NSString *fieldName = @"name";
NSPredicate *template = [NSPredicate predicateWithFormat:@"$key = nil"];
NSExpression *keyPathExpr = [NSExpression expressionForKeyPath:fieldName];
NSPredicate *pred = [template predicateWithSubstitutionVariables:@{@"key": keyPathExpr}];
NSLog(@"%@", pred);
// name == nil