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

ave*_*ged 3 iphone core-data ios

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

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

Child *child = [doomedParent valueForKey:@"child"];
int parentCount = [[child valueForKey:@"parents.@count"] intValue];
Run Code Online (Sandbox Code Playgroud)

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

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

我有什么想法可能做错了吗?

Bar*_*ark 11

您应该使用-valueForKeyPath:,而不是-valueForKey:不遵循关键路径(-valueForKey:因此单键查找更快).这应该工作:

int parentCount = [[child valueForKeyPath:@"parents.@count"] intValue];
Run Code Online (Sandbox Code Playgroud)


Nic*_*rge 10

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

NSUInteger parentCount = [child.parents count];
Run Code Online (Sandbox Code Playgroud)

KVC是伟大的,但除非我遗漏了什么,这种情况不是太过分了吗?