2014-05-08 24 views
1

獲取實體我有三個獨立的實體,(R是關係):NSPredicate用兩個一個一對多的關係

1)貨幣

_

countries(r 1 to many)

2)COUNTRY

名稱

_

貨幣(R)

交流(R 1對多)

3)EXCHANGE

名稱

_

國家(R)

從貨幣國家的關係是一對多的。

從COUNTRY到EXCHANGE的關係是一一對應的。

我需要加載我的NSFetchedResultsController所有CURRENCY(無重複),其中COUNTRY至少有一個EXCHANGE。

例子:

貨幣:歐元,美元的匯率,英鎊,泰伯利亞(不存在!)

國家:法國,​​德國,意大利,美國,英國

交流:泛歐交易所集團(法國,歐洲)的Xetra(德國,歐元),米蘭證券交易所(意大利,歐元),倫敦證券交易所(英國,英鎊)

預期的結果是:英鎊,歐元 , 美國美元

我想是這樣的,但它沒有工作:

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Currency"]; 
request.predicate = [NSPredicate predicateWithFormat: @"[email protected] > 0"]; 

代碼崩潰因未捕獲的異常:「NSInvalidArgumentException」的,理由是:「不支持的函數表達式計數:(countries.exchanges)'

什麼是正確的NSPredicate我應該使用什麼?

+0

*你和你的謂詞得到什麼結果*? –

+0

由於未捕獲的異常導致代碼崩潰:'NSInvalidArgumentException',原因:'不支持的函數表達式計數:((countries.exchanges)' –

回答

1

的問題是嵌套一對多的關係,這就需要使用子查詢:

[NSPredicate predicateWithFormat:@"SUBQUERY(countries, $c, ANY $c.exchanges != NULL)[email protected] > 0"] 
+0

完美的解決方案,謝謝。 –

相關問題