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

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

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

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

在这里,我期望evaluatedObjectNSManagedObject的子类的实例,但它是NSDictionaryMapNode的实例。

我已经对此进行了进一步的调查,似乎每次我在第一次执行后执行一次访存时都会发生这种情况,这很好。 我不知道这可能与释放有关,还是我使用了两次不应该使用的东西。

最佳答案

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

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

10-01 23:04