加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – predicateWithBlock:传递NSDictionaryMapNode

发布时间:2020-12-16 05:04:00 所属栏目:百科 来源:网络整理
导读:有时,当我尝试使用带有NSFetchRequest的NSPredicate时,它传递给块的evaluateObject要么是nil,要么是NSDictionaryMapNode的一个实例,似乎没有人听说过. 显然这是有问题的,因为NSDictionaryMapNode不是公共API的一部分,并且没有我需要用于谓词的有用方法. 这是
有时,当我尝试使用带有NSFetchRequest的NSPredicate时,它传递给块的evaluateObject要么是nil,要么是NSDictionaryMapNode的一个实例,似乎没有人听说过.

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

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

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

这里我期望evaluateObject是NSManagedObject的子类的实例,但它是NSDictionaryMapNode的一个实例.

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

解决方法

可能这是由核心数据完成的 uniquing的结果.看我的评论.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读