获取核心数据中一对多关系的计数
Posted
技术标签:
【中文标题】获取核心数据中一对多关系的计数【英文标题】:Getting the count of a to-many relationship in core data 【发布时间】:2010-12-10 03:39:08 【问题描述】:我有一个包含父实体和子实体的数据模型。子实体与父实体具有一对多反向关系(一个子实体可以有多个父实体)。我目前正在尝试获取特定孩子的父母人数:
Parent *doomedParent = [self.fetchedResultsController objectAtIndexPath:indexPath];
Child *child = [doomedParent valueForKey:@"child"];
int parentCount = [[child valueForKey:@"parents.@count"] intValue];
当试图从孩子那里获取父母(父母关系)计数时,我收到以下错误:
'由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[valueForUndefinedKey:]:实体Child不符合键“parents.@count”的键值编码。'
有什么想法我可能做错了吗?
【问题讨论】:
您确定“parents.@count”是一个键。变量 intValue 的值是多少? @euphoria83,"parents.@count"
在 Cocoa 中被称为关键路径。 intValue
是发送到valueForKey:
(原文如此)消息发送到child
的结果的消息(不是变量)。
【参考方案1】:
您应该使用-valueForKeyPath:
,而不是-valueForKey:
,它不遵循键路径(-valueForKey:
因此对于单键查找更快)。这应该有效:
int parentCount = [[child valueForKeyPath:@"parents.@count"] intValue];
【讨论】:
伙计,我知道这一定很简单。谢谢!【参考方案2】:虽然 Barry Wark 的回答对于使用 KVC 是正确的,但有什么理由你不只是得到 .parents
NSSet
的计数,像这样:
NSUInteger parentCount = [child.parents count];
KVC 非常棒,但除非我遗漏了什么,否则在这种情况下是不是有点矫枉过正?
【讨论】:
以上是关于获取核心数据中一对多关系的计数的主要内容,如果未能解决你的问题,请参考以下文章