2014-06-05 5 views
0

내가 필드 이름을 대체하는 경우자 NSPredicate 대체 키가 출력됩니다

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

OUPUT이

"name" = nil 

예상

코드를 다음과 같이 내가 문제를 얻을 수

name = nil 

문제

이름은 따옴표


어떻게 키에 대한 따옴표없이 술어를 얻을 수있다?

답변

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 
+0

감사합니다, 그것은 작동합니다. –

+0

[NSPredicate predicateWithFormat : @ "% K = nil", fieldName]도 작동 할 수 있습니다. –