与 Core Data 一起使用的 NSComboBox 的正确绑定是啥

Posted

技术标签:

【中文标题】与 Core Data 一起使用的 NSComboBox 的正确绑定是啥【英文标题】:What are the correct bindings for an NSComboBox for use with Core Data与 Core Data 一起使用的 NSComboBox 的正确绑定是什么 【发布时间】:2010-06-09 03:56:19 【问题描述】:

想象一下,如果您将拥有一个包含两个实体(员工和部门)的 Core Data 应用程序。员工与部门(部门)是一对一的关系,反之则是一对多的关系(员工)。在 UI 中,您可以选择单个 Employee 实体并在详细信息区域中编辑详细信息(当然还有其他属性,还有用于添加和编辑部门实体的 UI)。使用弹出按钮时,绑定是:

内容 = PopUpArrayController.arrangedObjects 内容值 = PopUpArrayController.arrangedObjects.name(名称是 NSString) 选定对象 = EmployeeArrayController.selection.department.name

这允许在弹出菜单中查看所有部门,正确选择当前员工的部门,并允许按预期更改该部门。目标是为 NSComboBox 更改此设置,以便用户可以通过 Tab 键切换到该框并键入部门名称,而无需切换到鼠标。我尝试了许多不同的绑定来实现这一点。我什至用这些绑定让它运行一次:

内容 = PopUpArrayController.arrangedObjects.name 值 = EmployeeArrayController.selection.department.name

至少有一次按预期工作(当输入的文本与任何现有部门都不匹配时,它甚至添加了一个新部门)。但是,现在它将显示可用的部门并自动完成,但当组合框中的值发生更改时,它不会使用正确的值更新模型。如果使用弹出窗口设置或更改部门,则组合框中会显示正确的部门。

有人知道我错过了什么吗?谢谢。

【问题讨论】:

【参考方案1】:

所以我至少想出了这个问题的一个答案。简短的版本是没有办法仅使用绑定来实现此效果。我终于在网上找到了http://frankschmitt.org/2007/06/comboboxen,它给了我足够的细节来解决这个问题(虽然帖子中的代码格式有一些问题,但是 NSValueTransformer 的文档填补了这些漏洞)。

【讨论】:

以上是关于与 Core Data 一起使用的 NSComboBox 的正确绑定是啥的主要内容,如果未能解决你的问题,请参考以下文章

如何将 NSArray 和 NSArrayController 与 Core Data 一起使用?

与 Core Data 一起使用的 NSComboBox 的正确绑定是啥

了解如何将 UISearchBar 与 Core Data 一起使用

如何将 Core Data 与 ODBC 数据源一起使用?

如何通过创建本地上下文将 GCD 与 Core Data 一起使用

将 mogenerator 与 Core Data 实体一起使用会导致保存数据存储时出错