具有多个 NSSet 的 CoreData NSPredicate

Posted

技术标签:

【中文标题】具有多个 NSSet 的 CoreData NSPredicate【英文标题】:CoreData NSPredicate with more than one NSSet 【发布时间】:2015-04-15 17:25:01 【问题描述】:

目前我尝试将以下 SQL 查询转换为 NSPredicate:

SELECT name FROM person WHERE tournament='x' AND rankingID = (SELECT id FROM ranking WHERE place=1 AND round='final');

Ranking 是 Person 中的 NSSet。 我曾这样尝试过:

NSPredicate(format: "tournament = %@ AND ANY rankings.place = 1 AND ANY rankings.round = 'final'", selectedTournament!)

但这不符合我的要求。 :(

【问题讨论】:

排名是一对多的关系吗?并且该关系中匹配的任何事物的逻辑都是有效的(它是什么都没关系)? 人与排名是一对多的关系,人与锦标赛是一对一的关系 【参考方案1】:

好的,我想我做到了,这是我的解决方案:

NSPredicate(format: "tournament = %@ AND SUBQUERY(rankings, $ranking, $ranking.place = 1 AND $ranking.round = 'final').@count > 0", selectedTournament!)

【讨论】:

以上是关于具有多个 NSSet 的 CoreData NSPredicate的主要内容,如果未能解决你的问题,请参考以下文章

具有相同值的 NSManagedObjects 的 CoreData NSSet-Like 行为

如何使用 NSPredicate 通过 CoreData 中的 NSSet 属性的元素过滤对象?

对象作为故障 - CoreData 关系

用 CoreData 对象填充 NSSet

coredata 如何将默认 NSSet 更改为 NSMutableArray

coreData:从 NSSet 实体移动记录