cocoa - 与 Core Data 一起使用的 NSComboBox 的正确绑定(bind)是什么

标签 cocoa core-data cocoa-bindings nscombobox

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

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

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

content = PopUpArrayController.arrangedObjects.name
值 = EmployeeArrayController.selection.department.name

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

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

最佳答案

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

关于cocoa - 与 Core Data 一起使用的 NSComboBox 的正确绑定(bind)是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3003002/

相关文章:

cocoa - "key contains $value"是什么意思?

objective-c - 确定应用程序是否因系统关闭而终止

cocoa - NSTextField 中的文本格式

ios - 核心数据对象绑定(bind)值 - 在范围内找不到 '$item'

iphone - 在核心数据中列出共同的 friend

swift - 将 swift 3 项目转换为使用 CoreData

macos - 更改 NSTextView 中特定子字符串的颜色

cocoa - 是否有用于在 Mac 或 iPhone 上开发音频流客户端的库?

ios - 我想在 coredata 中存储 allowsCameraControl 的 pointOfView.position

swift - NSPopUpButton - 使用 Cocoa Binding 填充动态内容时的奇怪行为