我有三个独立的实体,(r 是关系):
1) 货币
名字
_
国家(r 1 到许多)
2) 国家
名字
_
货币(r)
交流(r 1 到很多)
3) 交换
名字
_
国家(右)
从 CURRENCY 到 COUNTRY 的关系是一对多的。
从 COUNTRY 到 EXCHANGE 的关系是一对多的。
我需要在我的 NSFetchedResultsController
中加载所有 CURRENCY(不重复),其中 COUNTRY 至少有一个 EXCHANGE。
示例:
货币:欧元、美元、英镑、泰伯利亚(不存在!)
国家:法国、德国、意大利、美国、英国
交易所:Euronext(法国,欧元)、Xetra(德国,欧元)、米兰证券交易所(意大利,欧元)、伦敦证券交易所(英国,英镑)
预期结果是:英镑, 欧元, 美元
我试过类似的方法,但没有用:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Currency"];
request.predicate = [NSPredicate predicateWithFormat: @"countries.exchanges.@count > 0"];
代码因未捕获的异常而崩溃:'NSInvalidArgumentException',原因:'不支持的函数表达式计数:(countries.exchanges)'
我应该使用什么是正确的NSPredicate
?
最佳答案
问题是嵌套的一对多关系,这需要使用 SUBQUERY:
[NSPredicate predicateWithFormat:@"SUBQUERY(countries, $c, ANY $c.exchanges != NULL).@count > 0"]
关于ios - NSPredicate 获取具有两个一对多关系的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23540867/