来自iOS,我被困在NSOutlineView作为源列表,我已经阅读了很多资源但是无法清楚地掌握它。
我想要的是,使用NSTreeController将coreData ToMany关系显示为sourceList。我将数据从文本文件持久化到磁盘。 实体和关系如下:
组>>项目>>描述
SourceList示例:
我的应用不允许用户创建任何新实体,只是为了查看从TextFile保存的内容。我可以通过NSArrayController执行此操作,但我需要在具有层次结构的单个表中显示数据。 在NSArrayController中,我只需要将托管对象上下文绑定到Parameter,并将对象控制器绑定到实体名称。在TableView上,我需要将内容和选择索引绑定到NSArrayController。
如何将NSTreeController绑定到SourceList,并在选择子项时,显示从Item到Description的另一个ToMany关系。
答案 0 :(得分:1)
我可以想到两个解决方案,也许还有一个更好的解决方案。
解决方案1: 创建NSTreeController的子类并覆盖
- (NSString *)childrenKeyPathForNode:(NSTreeNode *)node
托管对象为node.representedObject
。
解决方案2:
创建NSManagedObject子类并实现返回子关系的children
方法。
- (NSSet *)children {
return self.itemsInGroup;
}
将树控制器的childrenKeyPath设置为“children”。
我认为解决方案2感觉不对,托管对象不应包含视图代码,但如果您已经拥有NSManagedObject子类,则很容易实现。