Ios NSPredicate predicateWithFormat传入属性名称
关于NSPredicate的简单问题。我试图用“传入”值构造谓词,如下所示:Ios NSPredicate predicateWithFormat传入属性名称,ios,core-data,nspredicate,Ios,Core Data,Nspredicate,关于NSPredicate的简单问题。我试图用“传入”值构造谓词,如下所示: NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"%@ == %@",key,[changesDict valueForKey:@"Id"] ]; 然而,我一直无法让它正常工作。如果我插入我传递的实际值,它确实起作用。所以这是可行的: NSPredicate* currentPredicate = [NSPredicate predi
NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"%@ == %@",key,[changesDict valueForKey:@"Id"] ];
然而,我一直无法让它正常工作。如果我插入我传递的实际值,它确实起作用。所以这是可行的:
NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"contactId == %@",[changesDict valueForKey:@"Id"] ];
(请注意,我插入了contactId,与上一个示例相反,在该示例中,我传递了一个同名字符串)
为了排除故障,我记录了两个谓词的描述,它们是不同的。我将在下面展示它们
这是正在工作的
2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] contactId == "5878"
2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] "contactId" == "5878"
这是不工作的一个
2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] contactId == "5878"
2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] "contactId" == "5878"
所以我可以看到它插入了一个字符串,我只需要属性的名称,稍后我将在fetch请求中使用它。但是有没有办法通过传递值来实现这一点呢?对于键或键路径,您必须使用%K
格式:
[NSPredicate predicateWithFormat:@"%K == %@", key, [changesDict valueForKey:@"Id"]];
(请参阅“谓词编程指南”中的内容)完美!链接也很有用。谢谢