【发布时间】:2018-08-12 19:57:40
【问题描述】:
我一直在研究如何使用多个实体从核心数据中填充源列表。如果我有一个实体,我可以按照文档并使用 NSTreeController 来填充我的数据并将其绑定到 NSOutlineView。
在我的具体情况下,我有大约 3 个硬编码组,其中每个组都与一个单独的核心数据实体相关。我试图将它们组合起来,但它们都与不同的实体有关系,所以我无法将它们全部组合到一个核心数据实体中。理想情况下,我想将我的 3 个核心数据实体绑定到我的源列表,它们看起来如下所示(其中钢笔、纸张和办公桌都是独立的实体):
有谁知道无论如何我可以使用控制器来帮助管理和组合三个实体与我的源列表,或者最好的方法是手动填充 NSOutlineView?我可以使用某种 NSArrayControllers 数组来填充我的 NSOutlineView 吗?有没有办法可以覆盖 NSTreeController 以从三个来源获取数据?
【问题讨论】:
-
你试过
NSOutlineViewDataSource吗?我想知道你似乎知道绑定的局限性。 -
@Purpose 我已经查看了“NSOutlineViewDataSource”,它是在有或没有核心数据的情况下填充 NSOutlineView 所必需的。但是,此时我想知道是否应该使用传统数据源而不是控制器手动完成所有操作。
-
我不会告诉你应该做什么。但是我告诉你,
NSOutlineViewDataSource没有 NSTreeController 和 NSArrayController 的限制。 -
您可以使用
NSTreeController,但您必须提供内容。 -
@Willeke 你什么时候使用 NSTreeController 什么时候使用 NSOutlineViewDataSource 那么如果两者都适合呢?这只是 API 的一个区别,其中一个您必须检查它是哪种类型,然后采取相应的行动,而另一个您必须在每种类型中直接实现 child、isItemExtendable 和 numberOfChildren?
标签: swift cocoa core-data nsarraycontroller nstreecontroller