2010-12-10 151 views
3

我有一個帶有父實體和子實體的數據模型。子實體與父實體具有多對多的關係(一個孩子可以有多個父母)。目前我正在試圖讓家長人數的一個特定的孩子有:獲取核心數據中一對多關係的數量

Parent *doomedParent = [self.fetchedResultsController objectAtIndexPath:indexPath]; 

Child *child = [doomedParent valueForKey:@"child"]; 
int parentCount = [[child valueForKey:@"[email protected]"] intValue]; 

當試圖讓父母(父母關係)從一個孩子,我得到以下錯誤計數:

「終止應用程序由於未捕獲的異常'NSUnknownKeyException',原因:'[valueForUndefinedKey:]:實體Child不是密鑰的父鍵值編碼。「@ count」。「

任何想法我可能做錯了什麼?

+0

你確定「parents。@ count」是一個關鍵。什麼是變量intValue的值? – euphoria83 2010-12-10 03:44:38

+0

@ euphoria83,``parents。@ count「`在Cocoa中被稱爲關鍵路徑。 `intValue`是一個消息(不是變量)被髮送到發送給`child`的'valueForKey:'(原文)消息的結果。 – 2010-12-10 03:46:43

回答

11

您應該使用的是-valueForKeyPath:而不是-valueForKey:,它不遵循關鍵路徑(-valueForKey:因此對單鍵查找速度更快)。這應該工作:

int parentCount = [[child valueForKeyPath:@"[email protected]"] intValue]; 
10

雖然巴里沃克的回答是使用KVC正確的,是沒有任何理由,你不只是得到.parentsNSSet的計數,像這樣:

NSUInteger parentCount = [child.parents count]; 

KVC是偉大的和所有的,但除非我錯過了什麼,這是不是過度的這種情況?