我有一个包含两个核心数据实体的应用程序:
产品和属性。
每个产品都有一组属性,这是模型中的一对多关系。
我想做一些事情:
产品有brand_id和品牌名称。我想获得所有品牌名单,可能是通过brand_id对所有产品进行分组。
然后,我希望从与该品牌相关联的所有产品中获取所有唯一键。因此,选择具有某个brand_id的所有产品,然后选择与任何产品相关联的所有属性,然后按密钥对它们进行分组。
之后,我想选择一个特定的键值对进行搜索,并获取与匹配该键值对的属性相关联的所有产品。
核心数据是否有可能实现这一目标?我一直在寻找高低,但似乎这个问题比大多数人要做的要复杂得多。
答案 0 :(得分:0)
对于前两个问题,我建议创建另一个品牌实体并在您的模型中建立适当的关系。这肯定会让事情变得更容易。
确保您拥有从品牌到产品的反转关系 - 这将自动为您提供前2个问题的答案。
您可以使用以下方法搜索核心数据中的不同(唯一)值:
[request setPropertiesToFetch:[NSArray arrayWithObject:@"distinctProperty"]];
要查找具有与键,值对匹配的属性的产品,您应在获取产品实体时使用此NSPredicate:
[NSPredicate predicateWithFormat:@"(SUBQUERY(properties, $property, $property.key == %@ AND $property.value == %@).@count > 0)", @"keySearch", @"valueSearch"];