我正在开发一个使用 Core 数据的 Mac 应用程序。我正在使用 NSOutlineView 和 NSTreeController 在 View 上绑定(bind)数据。
您可以假设我的数据结构为
- 父项目 1
- 子项目 1
- 子项目 2
- 子项目 3
- 父项目 2
- 子项目 4
- 子项目 5
我正在将 fetchPredicate 应用于我的 NSTreeController 以成功过滤数据。另一方面,fetchPredicate 仅应用于数据的第一级(父项)。
我需要一种方法,可以将 fetchPredicate 也应用于子项。例如,如果我的条件与子项 1 和子项 4 匹配,则结果应为
- 父项目 1
- 子项目 1
- 父项目 2
- 子项目 4
任何帮助将不胜感激。
最佳答案
您正在应用获取谓词。 NSTreeController 不支持过滤谓词。 NSTreeController 使用 fetch 谓词来获取顶级对象,并使用子关系来获取子对象。不会获取子级,并且不会使用获取谓词来获取子级。
解决方案 1:实现计算属性 filteredChildren
,如本问题所示:Filtering A Tree Controller并在这个不相关的答案中提到:Is it possible to bind an NSTreeController to an NSOutlineViewDataSource?
解决方案 2:使用数据源而不是绑定(bind),上面的答案中也提到了。
关于swift - 使用 NSTreeController 过滤 NSOutlineView 的子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37675719/