有时,当我尝试将 anNSPredicate
与 an一起使用时NSFetchRequest
,evaluatedObject
它传递给块的要么是 要么nil
的实例NSDictionaryMapNode
,似乎没有人听说过。
显然这是有问题的,因为NSDictionaryMapNode
它不是公共 API 的一部分,并且没有我需要用于我的谓词的有用方法。
这是一个非常简单的例子:
fetchRequest.predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
NSLog(@"%@", NSStringFromClass([evaluatedObject class]);
return YES;
}];
在这里,我期望evaluatedObject
成为 的子类的一个实例NSManagedObject
,但实际上它是 的一个实例NSDictionaryMapNode
。
我对此进行了进一步调查,似乎每次我在第一次之后执行提取时都会发生这种情况,效果很好。我不知道这是否与释放有关,或者我是否使用了两次我不应该使用的东西。