通过以编程方式设置密钥来动态创建NSPredicate

tGi*_*ani 8 iphone core-data objective-c nspredicate ios

为什么以下代码片段的前者不起作用?

片段1

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(coin_unique == %@)", [NSNumber numberWithInt:species]];
Run Code Online (Sandbox Code Playgroud)

片段2

// Does NOT Work
NSString *predicateText = @"coin_unique";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(%@ == %@)", predicateText, [NSNumber numberWithInt:species]];
Run Code Online (Sandbox Code Playgroud)

我必须根据我的方法中收到的参数动态创建谓词.

Mon*_*olo 18

coin_unique是一个关键,所以它需要%K格式说明符:

NSString *predicateText = @"coin_unique";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(%K == %@)", predicateText, [NSNumber numberWithInt:species]];
Run Code Online (Sandbox Code Playgroud)

格式语法在这里描述得很好.