使用 NSTreeController 过滤 NSOutlineView 的子项

Filtering children of NSOutlineView with NSTreeController

我正在开发一个使用核心数据的 Mac 应用程序。我正在使用 NSOutlineView 和 NSTreeController 在视图上绑定数据。

您可以假设我的数据结构为

我正在将 fetchPredicate 应用到我的 NSTreeController 以成功过滤数据。另一方面,fetchPredicate 仅应用于数据的第一层(父项)。

我需要一种可以将 fetchPredicate 也应用于子项的方法。例如,如果我的条件与子项 1 和子项 4 匹配,则结果应为

任何帮助将不胜感激。

您正在应用获取谓词。 NSTreeController 不支持过滤谓词。 NSTreeController 使用获取谓词获取顶级对象并使用子关系获取子对象。未获取子项并且未使用获取谓词获取子项。

解决方案 1:实施计算 属性 filteredChildren,如本题:Filtering A Tree Controller and mentioned in this unrelated answer: Is it possible to bind an NSTreeController to an NSOutlineViewDataSource?

解决方案2:使用数据源而不是绑定,上面的答案中也提到了。