objective-c - 如何创建源列表以显示 Core Data To Many 关系?

标签 objective-c cocoa core-data nstreecontroller

来自iOS,我被困在NSOutlineView作为源列表,我已经阅读了很多资源,但无法清楚地掌握它。

我想要的是,只是使用 NSTreeController 将 coreData ToMany 关系显示为 sourceList。我将数据从文本文件保存到磁盘。 实体和关系如下:

Group >> Item >> Description

data model

源列表示例:

enter image description here

我的应用程序不允许用户创建任何新实体,只是为了查看从 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/

相关文章:

ios - IOS 应用程序的图像显示选项

xcode - 使用 Handbrake CLI 进行视频到图像序列

objective-c - 数据格式化程序暂时不可用,将在继续后重试

core-data - NSFetchedResultsController 错过了合并 NSManagedObjectContext 的更新

ios - 如何在单个 UIView 中启用两个不同 UIScrollview 的缩放?

javascript - 在 Objective-C 中更改 Javascript 变量

iphone - ABPeoplePickerNavigationController 隐藏取消按钮

iphone - 是什么原因导致 Objective-C 编译错误 : Stray '\235' in Program

ios - 了解 CoreData 中 Transformable 的错误

ios - POST 请求后删除 CoreData 对象