NSPredicate解释keyPath而不是属性

时间:2015-05-06 11:39:44

标签: objective-c core-data nspredicate

我有一个Core Data Recipes数据库。每个Recipe都有一个ingredients关系(多对多),因此我的XYZRecipe对象的ingredients属性指向NSSet XYZIngredients }。

我希望NSPredicate选择超过5 Recipes的所有ingredients并尝试此操作:

NSPredicate *p = [NSPredicate predicateWithFormat:@"ingredients.count > 5"];

此操作失败,并抱怨课程XYZIngredient不符合count的键值。

显然,"ingredients.count"被解释为keyPath,而不是返回每个食谱的ingredients属性。

有解决方法吗?

1 个答案:

答案 0 :(得分:2)

应该可以在KVC方面和核心数据方面解决这个问题:

KVC:

@"ingredients.@count > 5"

应该提供关键路径的成分数量。

核心数据:

@"ingredients[SIZE] > 5"