获取核心数据中多对多关系的计数

时间:2010-12-10 03:39:09

标签: iphone ios core-data

我有一个包含Parent实体和子实体的数据模型。子实体与父实体具有多对多关系(子可以有多个父对象)。我目前正在努力获得特定孩子的父母数量:

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

Child *child = [doomedParent valueForKey:@"child"];
int parentCount = [[child valueForKey:@"parents.@count"] intValue];

当试图从孩子那里得到父母(父母关系)的数量时,我得到以下错误:

'由于未捕获的异常'NSUnknownKeyException'终止应用程序,原因:'[valueForUndefinedKey:]:实体Child不是密钥值编码兼容的密钥“parent。@ count”。'

任何想法我可能做错了什么?

2 个答案:

答案 0 :(得分:11)

您应该使用-valueForKeyPath:,而不是-valueForKey:,它不遵循关键路径(因此-valueForKey:对单键查找更快)。这应该有效:

int parentCount = [[child valueForKeyPath:@"parents.@count"] intValue];

答案 1 :(得分:10)

虽然Barry Wark的答案对于使用KVC是正确的,但是你有没有理由得到.parents NSSet的计数,如下所示:

NSUInteger parentCount = [child.parents count];

KVC很棒,但是除非我遗漏了什么,否则这种情况不是太过分了吗?