predicateWithBlock:传递NSDictionaryMapNode

Aly*_*oss 5 core-data objective-c nspredicate nsmanagedobject

有时,当我尝试使用a NSPredicateNSFetchRequest,evaluatedObject它传递给块是其中一个nil或一个实例NSDictionaryMapNode,似乎没有人听说过.

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

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

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

在这里,我希望evaluatedObject是一个子类的实例NSManagedObject,但它是一个实例NSDictionaryMapNode.

我进一步调查了这一点,似乎每次我在第一次执行获取后都会发生这种情况,这很好.我不知道是否可能与释放有关,或者如果我使用两次,我不应该这样做.

Ami*_*wad 3

可能这就是核心数据唯一化的结果。看我的评论。

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