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