具有多个 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 属性的元素过滤对象?