有时,当我尝试将NSPredicate
与NSFetchRequest
一起使用时,传递给该块的evaluatedObject
是nil
或NSDictionaryMapNode
的实例,似乎没人听说过。
显然,这是有问题的,因为NSDictionaryMapNode
不是公共(public)API的一部分,并且没有我的谓词需要使用的有用方法。
这是一个非常简单的示例:
fetchRequest.predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
NSLog(@"%@", NSStringFromClass([evaluatedObject class]);
return YES;
}];
在这里,我期望
evaluatedObject
是NSManagedObject
的子类的实例,但它是NSDictionaryMapNode
的实例。 我已经对此进行了进一步的调查,似乎每次我在第一次执行后执行一次访存时都会发生这种情况,这很好。 我不知道这可能与释放有关,还是我使用了两次不应该使用的东西。
最佳答案
可能这是核心数据完成uniquing的结果。看到我的评论。
尝试通过键值编码访问属性。