核心数据组由和搜索一对多关系的属性

时间:2014-03-03 15:04:58

标签: ios core-data

我有一个包含两个核心数据实体的应用程序:

产品和属性。

每个产品都有一组属性,这是模型中的一对多关系。

我想做一些事情:

  • 产品有brand_id和品牌名称。我想获得所有品牌名单,可能是通过brand_id对所有产品进行分组。

  • 然后,我希望从与该品牌相关联的所有产品中获取所有唯一键。因此,选择具有某个brand_id的所有产品,然后选择与任何产品相关联的所有属性,然后按密钥对它们进行分组。

  • 之后,我想选择一个特定的键值对进行搜索,并获取与匹配该键值对的属性相关联的所有产品。

核心数据是否有可能实现这一目标?我一直在寻找高低,但似乎这个问题比大多数人要做的要复杂得多。

1 个答案:

答案 0 :(得分:0)

对于前两个问题,我建议创建另一个品牌实体并在您的模型中建立适当的关系。这肯定会让事情变得更容易。

确保您拥有从品牌到产品的反转关系 - 这将自动为您提供前2个问题的答案。

您可以使用以下方法搜索核心数据中的不同(唯一)值:

[request setPropertiesToFetch:[NSArray arrayWithObject:@"distinctProperty"]];

要查找具有与键,值对匹配的属性的产品,您应在获取产品实体时使用此NSPredicate:

[NSPredicate predicateWithFormat:@"(SUBQUERY(properties, $property, $property.key == %@ AND $property.value == %@).@count > 0)", @"keySearch", @"valueSearch"];