0
我最近從直接SQLite(使用FMDB)切換到核心數據,因此我將一堆查詢重寫爲NSPredicate
s。我無法弄清楚如何用謂詞做一個JOIN
。使用JOIN訪問NSPredicate中的核心數據實體關係
我有一個進入實體,它有與飛機實體一對一關係。
進入有一個名爲duration
和飛機屬性有一個叫categoryClass
。
我可以總結一下所有的duration
值這樣的(假設我建立context
和request
以前):
//SQLite equivalent: SELECT TOTAL(duration) FROM entry
NSArray *entries = [context executeFetchRequest:request error:&error];
NSNumber *totalDuration = [entries valueForKeyPath:@"@sum.duration"];
但現在我要總結的所有duration
值某些種類飛機:
//SQLite equivalent: SELECT TOTAL(duration) FROM entry LEFT JOIN aircraft ON entry.aircraftRegistration = aircraft.aircraftRegistration WHERE aircraft.categoryClass != 'Simulator' AND aircraft.categoryClass != 'Flight Training Device'"
NSArray *entries = [context executeFetchRequest:request error:&error];
NSNumber *totalDuration = [entries valueForKeyPath:@"@sum.duration ?????"];
我猜這是不可能的速記符號@sum
,我可能要使用NSPredicate
在我的讀取請求,但我無法弄清楚如何做一個謂詞LEFT JOIN
之一:
//This results in a crash
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"entry.aircraft.categoryClass != 'Simulator'"];
誰能幫助?