获取核心数据中一对多关系的数量
问题描述:
我有一个带有父实体和子实体的数据模型。子实体与父实体具有多对多的关系(一个孩子可以有多个父母)。目前我正在试图让家长人数的一个特定的孩子有:获取核心数据中一对多关系的数量
Parent *doomedParent = [self.fetchedResultsController objectAtIndexPath:indexPath];
Child *child = [doomedParent valueForKey:@"child"];
int parentCount = [[child valueForKey:@"[email protected]"] intValue];
当试图让父母(父母关系)从一个孩子,我得到以下错误计数:
“终止应用程序由于未捕获的异常'NSUnknownKeyException',原因:'[valueForUndefinedKey:]:实体Child不是密钥的父键值编码。“@ count”。“
任何想法我可能做错了什么?
答
您应该使用的是-valueForKeyPath:
而不是-valueForKey:
,它不遵循关键路径(-valueForKey:
因此对单键查找速度更快)。这应该工作:
int parentCount = [[child valueForKeyPath:@"[email protected]"] intValue];
答
虽然巴里沃克的回答是使用KVC正确的,是没有任何理由,你不只是得到.parents
NSSet
的计数,像这样:
NSUInteger parentCount = [child.parents count];
KVC是伟大的和所有的,但除非我错过了什么,这是不是过度的这种情况?
你确定“parents。@ count”是一个关键。什么是变量intValue的值? – euphoria83 2010-12-10 03:44:38
@ euphoria83,``parents。@ count“`在Cocoa中被称为关键路径。 `intValue`是一个消息(不是变量)被发送到发送给`child`的'valueForKey:'(原文)消息的结果。 – 2010-12-10 03:46:43