来自iOS,我被困在NSOutlineView作为源列表,我已经阅读了很多资源,但无法清楚地掌握它。
我想要的是,只是使用 NSTreeController 将 coreData ToMany 关系显示为 sourceList。我将数据从文本文件保存到磁盘。 实体和关系如下:
Group >> Item >> Description
源列表示例:
我的应用程序不允许用户创建任何新实体,只是为了查看从 TextFile 保存的内容。我可以通过 NSArrayController 做到这一点,但我需要在具有层次结构的单个表中显示数据。 在 NSArrayController 中,我只需要将托管对象上下文绑定(bind)到参数,并将对象 Controller 绑定(bind)到实体名称。在 TableView 上,我需要将内容和选择索引绑定(bind)到 NSArrayController。
如何将 NSTreeController 绑定(bind)到 SourceList,并在选择子项时显示另一个从 Item 到 Description 的 ToMany 关系。
最佳答案
我可以想到两种解决方案,也许还有一个更好的。
解决方案1: 创建 NSTreeController 的子类并覆盖
- (NSString *)childrenKeyPathForNode:(NSTreeNode *)node
托管对象是node.representedObject
。
解决方案 2:
创建 NSManagedObject 子类并实现返回子关系的 children
方法。
- (NSSet *)children {
return self.itemsInGroup;
}
将树 Controller 的childrenKeyPath设置为“children”。
我认为解决方案 2 感觉不对,托管对象不应包含 View 代码,但如果您已经拥有 NSManagedObject 子类,则很容易实现。
关于objective-c - 如何创建源列表以显示 Core Data To Many 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35243984/