我有一个包含Parent实体和子实体的数据模型。子实体与父实体具有多对多关系(子可以有多个父对象)。我目前正在努力获得特定孩子的父母数量:
Parent *doomedParent = [self.fetchedResultsController objectAtIndexPath:indexPath];
Child *child = [doomedParent valueForKey:@"child"];
int parentCount = [[child valueForKey:@"parents.@count"] intValue];
当试图从孩子那里得到父母(父母关系)的数量时,我得到以下错误:
'由于未捕获的异常'NSUnknownKeyException'终止应用程序,原因:'[valueForUndefinedKey:]:实体Child不是密钥值编码兼容的密钥“parent。@ count”。'
任何想法我可能做错了什么?
答案 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很棒,但是除非我遗漏了什么,否则这种情况不是太过分了吗?