NSPredicate predicateWithFormat传入属性名称

简单的问题关于NSPredicate的。 我试图构build我的谓词与“传入”的值如下所示:

NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"%@ == %@",key,[changesDict valueForKey:@"Id"] ]; 

但是,我一直无法得到这个正常工作。 如果我插入实际值,我通过它虽然工作。 所以这个工作:

 NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"contactId == %@",[changesDict valueForKey:@"Id"] ]; 

(注意我插入了contactId而不是前面的例子,我传递了一个string的同名)

为了排除故障NSLogged两个谓词看着他们的描述,他们是不同的。 我会在下面给他们看。

这是工作的一个

 2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] contactId == "5878" 

这是不工作的

 2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] "contactId" == "5878" 

所以我可以看到,它插入一个string,我真的只想要的属性的名称,我稍后将在取回请求中使用。 但有没有办法通过传递值来完成这个任务?

对于键path ,您必须使用%K格式:

 [NSPredicate predicateWithFormat:@"%K == %@", key, [changesDict valueForKey:@"Id"]]; 

(请参阅“谓词编程指南”中的parsing器基础 。)