当我替换字段名称时,我遇到如下问题
代码
NSString *fieldName = @"name";
NSPredicate *template = [NSPredicate predicateWithFormat:@"$key = nil"];
NSPredicate *pred = [template predicateWithSubstitutionVariables:@{@"key": fieldName}];
NSLog(@"%@", pred);
输出继电器
"name" = nil
预期
name = nil
问题
名称有引号
如何获取没有键引号的谓词?
答案 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