NSPredicate 解释 keyPath 而不是 属性

NSPredicate interpreting a keyPath instead of a property

我有 RecipesCore Data 数据库。每个 Recipe 都有一个 ingredients 关系(多对多),所以我的 XYZRecipe 对象有一个 ingredients 属性 指向 NSSet XYZIngredients.

我想要一个 NSPredicate 到 select 所有 Recipes 超过 5 个 ingredients 并试过这个:

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

失败,并抱怨 class XYZIngredient 不符合 count 的键值。

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

有办法解决这个问题吗?

应该可以在 KVC 端和 Core Data 端解决该问题:

KVC:

@"ingredients.@count > 5"

应将成分计数作为关键路径的结果。

核心数据:

@"ingredients[SIZE] > 5"