gpt4 book ai didi

cocoa - NSTreeController 基于 transient isRoot 异常获取谓词

转载 作者:行者123 更新时间:2023-12-03 16:25:30 24 4
gpt4 key购买 nike

我的基于文档的 Cocoa 应用程序使用 NSOutlineView/NSTreeController 组合,绑定(bind)到文档的核心数据存储。我的 NSTreeController 有获取谓词 isRoot == YESisRoot是一个 transient bool 属性,默认值为 NO 。我的根模型的awakeFromInsert来电:

[self setIsRoot:[NSNumber numberWithBool:YES]];

我可以很好地将对象添加到层次结构中,但是当我尝试加载刚刚保存的文档时,出现异常:

[<NSDictionaryMapNode 0x1001a8190> valueForUndefinedKey:]: this class is not key value coding-compliant for the key isRoot.

如果我更改 isRoot,我可以解决此异常并成功加载新保存的文档。在 xcdatamodel 中属性为非 transient ,但根据我对 transient 标志的理解,它不应该引起问题,而且这确实不是应该持久化的数据类型。

我也尝试过实现-isRoot在 NSManagedObject 子类中返回适当的固定值,以及进行相同的 setIsRoot:调用内线awakeFromFetch ,都无济于事。

我还缺少其他一些微妙之处吗?我无法想象获取谓词不支持 transient 属性。我对 Core Data 的内部工作原理不太了解,但它试图查找 isRoot 似乎很有趣在商店特定的类上,而不是我的 NSManagedObject 子类上。

最佳答案

I can't imagine that fetch predicates don't support transient attributes.

经过一番研究,我可以告诉你事实并非如此。 See this document.引用:

You cannot fetch using a predicate based on transient properties (although you can use transient properties to filter in memory yourself).

我已经整理了一个测试项目,可以验证我得到的错误与您完全相同。

当我需要过滤掉树中的根节点时,我使用 parent == nil 的获取谓词而不是 transient 属性。

我理解你的 react - 我也想要有一个专门称为 isRoot 的属性的方法。我的猜测是这是可能的,但它需要太多代码,所以不值得这么麻烦。

哦,如果您处理的核心数据不止一点点,mogenerator将使您的生活变得更加轻松。

关于cocoa - NSTreeController 基于 transient isRoot 异常获取谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3605957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com