6

有时,当我尝试将 anNSPredicate与 an一起使用时NSFetchRequestevaluatedObject它传递给块的要么是 要么nil的实例NSDictionaryMapNode,似乎没有人听说过。

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

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

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

在这里,我期望evaluatedObject成为 的子类的一个实例NSManagedObject,但实际上它是 的一个实例NSDictionaryMapNode

我对此进行了进一步调查,似乎每次我在第一次之后执行提取时都会发生这种情况,效果很好。我不知道这是否与释放有关,或者我是否使用了两次我不应该使用的东西。

4

1 回答 1

3

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

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

于 2013-06-13T15:48:40.633 回答