2010-12-20 23 views
1

我有一个具有相关的多对象实体集的实体匹配。我想知道有多少组具有“set_finished”属性为特定匹配设置为YES的计数。我试图这样做:我试图从相关实体中获得匹配条件的记录数

NSPredicate * predicate = [NSPredicate predicateWithFormat:@“ANY set_finished == YES”]; NSUInteger numberOfFinishedSets = [[[match valueForKeyPath:@“sets”] filteredArrayUsingPredicate:predicate] count];

第二行与此错误崩溃,我不明白。任何人都可以为我阐明这一点吗?谢谢。

2010-12-20 13:17:13.814 DartScorer [2154:207] *终止 应用由于未捕获的异常 'NSInvalidArgumentException' 的,原因是: “ - [_ NSFaultingMutableSet filteredArrayUsingPredicate:]: 无法识别的选择发送到实例 0x617fb20'

回答

0

您应该使用filteredSetUsingPredicate:而不是filteredArrayUsingPredicate,因为对象是一个集合,而不是一个数组。

+0

谢谢。当然!我不确定我是如何错过的!多少次我可以阅读某些内容并且没有看到明显的错误,这真是太神奇了。 – lps 2010-12-20 13:58:23

-1

尝试包裹串是用单引号 “... 'YES'”

(假设该字段包含字符串'YES'和'NO',而不是1 | 0)

0

_NSFaultingMutableSet是一种空集(如果您将打印设置,你会看到Xcode中打印出实体名称,但不是它的内容确实是因为:

断裂作用降低了内存 量您的应用程序消耗的故障是 表示的关系的占位符对象,表示还没有得到充分 实现 管理对象,或集合对象 :

管理对象故障是一个插件tance 的适当的类,但其 持久变量尚未 初始化。关系错误是 表示关系的集合类的 子类。错误 允许Core Data将对象图的边界放在 上。因为没有实现故障 ,所以被管理对象故障 消耗较少的内存,并且与故障有关的被管理对象不是 ,而是根本不需要在内存 中表示。

我认为你应该创建一个Set来保存你想要过滤的对象,然后过滤创建的数组。

希望它有助于 SHANI

0
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY set_finished == YES)[email protected]"]; 
NSUInteger numberOfFinishedSets = [[match valueForKeyPath:@"sets"] filteredSetUsingPredicate:predicate]; 

这将只是返回多少对象也有真实的检索从磁盘中的对象和计数他们,而不是计数。

+0

你试过这个吗? filteredSetUsingPredicate返回一个集合,而不是一个计数 – 2014-07-01 01:19:20

相关问题