2013-08-22 44 views
0

当我试图获取具有某个属性的NSManagedObject时,我有一个非常奇怪的错误。下面是我所做的:iOS核心数据 - NSFetchRequest和NSPredicate不允许双格式?

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ == %@", LEVEL_NAME_KEY, _levelName]; 

在这个例子中,LEVEL_NAME_KEY = @"levelName"_levelName是一个函数的参数。 我想这样做,所以如果我更改我的密钥名称,我可以通过更改LEVEL_NAME_KEY来改变它的标题。但它不起作用(当我执行抓取时,它什么也不返回)。

然而,当我写这样的说法:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"levelName == %@", _levelName]; 

一切正常,我也得到了正确的NSManagedObject。

任何人对此有意见?这是一个已知的错误,有没有解决方案?

在此先感谢!

回答

2

的格式应指定为:

@"%K == %@" 

因为你需要关键的名称和参数值(在创建谓词时得到的引用)之间进行区分。

Associated docs

+0

哦,天哪,我怎么错过了?哈哈真的非常感谢你的链接;) – RaphBlanchet