2010-12-10 152 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是伟大的和所有的,但除非我错过了什么,这是不是过度的这种情况?