我有三个独立的实体,(r是关系):
1) CURRENCY
名称
_
国家/地区(r 1到很多)
2) COUNTRY
名称
_
货币(r)
交换(r 1到很多)
3) EXCHANGE
名称
_
国家(r)
从CURRENCY到COUNTRY的关系是一对多。
从COUNTRY到EXCHANGE的关系是一对一的。
我需要加载我的NSFetchedResultsController
所有CURRENCY(没有重复),其中COUNTRY至少有一个EXCHANGE。
示例:的
货币:欧元,美元,英镑,泰伯利亚(不存在!)
国家:法国,德国,意大利,美国,英国
交易所:泛欧交易所(法国,欧元),Xetra(德国,欧元),米兰证券交易所(意大利,欧元),伦敦证券交易所(英国,英镑)
预期结果是:英镑, 欧元, 美元
我尝试了类似的东西,但它不起作用:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Currency"];
request.predicate = [NSPredicate predicateWithFormat: @"countries.exchanges.@count > 0"];
由于未捕获的异常导致代码崩溃:'NSInvalidArgumentException',原因:'不支持的函数表达式计数:(countries.exchanges)'
我应该使用的NSPredicate
是什么?
答案 0 :(得分:1)
问题是嵌套的to-many关系,这需要使用SUBQUERY:
[NSPredicate predicateWithFormat:@"SUBQUERY(countries, $c, ANY $c.exchanges != NULL).@count > 0"]