gpt4 book ai didi

objective-c - NSTreeController 显示重复实体的建议解决方案

转载 作者:行者123 更新时间:2023-12-03 16:44:48 27 4
gpt4 key购买 nike

正如你们中许多人可能知道的那样,绑定(bind)到大纲 View 的 NSTreeController 可以在呈现核心数据实体时显示重复项。

临时解决方案是在谓词中添加“parent == nil”,但这只会返回父实体。例如,如果用户正在搜索子实体,则不会显示所请求的子实体。

(建议的)解决方案是子类化 NSTreeController 并添加一个 NSMutableSet 变量,该变量跟踪当前正在显示的实体。该变量应在 init 时分配,并在 dealloc 时释放。

当调用“fetchWithRequest:merge:error:”时,该集合应该被清空(我不确定这是否比释放它并再次分配它更有效)。每次要添加一个实体来显示时,请检查该集合是否包含它。如果没有,请添加。否则,查找哪个更接近根(即子实体),如果是子实体则跳过它,或者与之前包含的子实体交换。

我认为对性能的影响应该相对较小(考虑到 NSSet 使用哈希)。我遇到的问题是找到正确的方法来覆盖以添加此行为。具体来说,NSTreeController 在调用“fetchWithRequest:merge:error:”后处理获取的实体。

最佳答案

可以公平地说您确实在寻找一种使用搜索词过滤树而不丢失树结构的方法吗?固有的问题(除了强制树 Controller 包含搜索匹配的父节点之外)是父节点实际上可能与搜索结果匹配,也可能不匹配,因此显示它们会很困惑。

我认为你的问题更多的是用户界面的问题,不是吗?在这种情况下,最好的方法(我见过许多知名公司和独立开发人员都采用的方法)是在普通表格中显示搜索结果。这样,结果可以按各种属性进行排序,并且您不必在搜索模式下禁用大纲 View 中的拖放(以避免用户在仅显示树的一部分脱离上下文时尝试更改树结构) )。

关于objective-c - NSTreeController 显示重复实体的建议解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3169862/

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