相关疑难解决方法(0)

核心数据多对多关系 - 谓词问题

在我的核心数据模型中,我有两个实体:列表和患者.List有一个名为'name'的属性.

列表可以包含任意数量的患者,每个患者可以属于任意数量的不同列表.因此,我在名单上设置了一个名为"患者"的关系,该关系与患者具有反向关系,患者之间的关系称为"列表",与列表具有多对多的关系.

我正在努力弄清楚的是如何创建一个谓词,它将选择属于特定列表名称的所有患者.

我该怎么做?我之前从未在Core Data中使用过关系.

谢谢,

iphone cocoa cocoa-touch entity-relationship core-data

21
推荐指数
4
解决办法
1万
查看次数

核心数据不支持使用ALL和IN的谓词

我有这样的请求:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY attributes.attribute.attributeId IN %@", attributeIds];
Run Code Online (Sandbox Code Playgroud)

这将返回一个对象列表,其中包含我设置的一个或多个属性.我想得到一个包含我通过的所有属性的对象列表,所以我尝试了:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ALL attributes.attribute.attributeId IN %@", attributeIds];
Run Code Online (Sandbox Code Playgroud)

但我有一个例外:

'NSInvalidArgumentException', reason: 'Unsupported predicate (null)'
Run Code Online (Sandbox Code Playgroud)

无论如何,我甚至不确定这是正确的要求.假设我有属性列表:[red, green, blue],如何获得至少具有这些属性的所有对象?

* Object_1 (red, green, blue)
* Object_2 (red, green, blue, yellow, brown)
* Object_3 (red, green blue, black, brown)
Run Code Online (Sandbox Code Playgroud)

但不是Object_4 (red, green, yellow)因为它没有blue属性(请注意我ANY按照预期获取了我的获取请求的所有4个对象)

编辑,相关问题:如果我想完全匹配怎么办?所以[red, green, blue]我只能得到Object_1


编辑2:我设法回答了这两个问题,但我有一个新问题

core-data objective-c nspredicate ios

4
推荐指数
1
解决办法
2147
查看次数