NSPredicate与关系

时间:2015-02-01 20:40:54

标签: core-data nspredicate

我在使用给定谓词获取所有核心数据实体时遇到问题。我的模型看起来像这样。 PlayerWeapon有一对多的关系,PlayerMetadata有一对一的关系

我想列出属于Weapons Player属性selected设置为true的所有Metadata

我使用这个谓词

[NSPredicate predicateWithFormat:@"ALL player.metadata.selected == %@", @YES];

但是我收到了错误

The left hand side for an ALL or ANY operator must be either an NSArray or an NSSet.'

我做错了什么?

欢呼声, 扬

1 个答案:

答案 0 :(得分:0)

你应该改革你的查询。 “ ALL ”和“ ANY ”关键字应与多个关系一起使用。你有从玩家到武器的一对多关系。但是,如果你颠倒关系,你会发现这种关系是多对一的。所以,每个武器只有一个玩家。

Player <---->> Weapon

Weapon <<---> Player

所以,如果你改变你的谓词,那么它应该可以正常工作,

[NSPredicate predicateWithFormat:@"player.metadata.selected == %@", @YES];