NSPredicate 与关系
Posted
技术标签:
【中文标题】NSPredicate 与关系【英文标题】:NSPredicate with relation 【发布时间】:2015-02-01 20:40:54 【问题描述】:我在使用给定谓词获取所有核心数据实体时遇到问题。我的模型看起来像这样。 Player
与 Weapon
具有一对多关系,Player
与 Metadata
具有一对一关系
我想列出属于 Player
的所有 Weapons
,该 selected
属性的 Metadata
设置为 true。
我用这个谓词
[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】:您应该修改您的查询。 'ALL' 和 'ANY' 关键字应该与许多关系一起使用。从玩家到武器,你有一对多的关系。但是,如果你反转关系,你会看到关系是多对一的。所以,每把武器只有一个玩家。
Player <---->> Weapon
Weapon <<---> Player
所以,如果你像这样改变你的谓词,它应该可以正常工作,
[NSPredicate predicateWithFormat:@"player.metadata.selected == %@", @YES];
【讨论】:
这行得通,谢谢。现在的问题是-[NSFetchedResultsControllerDelegate controllerDidChangeContent:]
在选择的播放器改变时似乎没有被调用。以上是关于NSPredicate 与关系的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C:NSPredicate LIKE 不喜欢空格。是不是有用于替换空格的转义序列?
NSFetchResultsController w/ NSPredicate(关系)与基本 NSFetchRequest(包括图片)