predicateWithBlock:传递NSDictionaryMapNode

时间:2013-06-08 18:12:09

标签: objective-c core-data nspredicate nsmanagedobject

有时,当我尝试将NSPredicateNSFetchRequest一起使用时,传递给该块的evaluatedObjectnilNSDictionaryMapNode的实例似乎没有人听说过。

显然这是有问题的,因为NSDictionaryMapNode不是公共API的一部分,并且没有我需要用于谓词的有用方法。

这是一个非常简单的例子:

fetchRequest.predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
    NSLog(@"%@", NSStringFromClass([evaluatedObject class]);
    return YES;
}];

我希望evaluatedObject成为NSManagedObject的子类的实例,而是NSDictionaryMapNode的实例。

我对此进行了进一步调查,似乎每次我在第一次执行后执行此操作都会发生这种情况,这样可以正常工作。我不知道是否可能与释放有关或者,如果我使用两次,我不应该。

1 个答案:

答案 0 :(得分:3)

这可能是核心数据uniquing完成的结果。看我的评论。

尝试通过键值编码访问属性。