NSComboBox与Core Data一起使用的正确绑定是什么?

时间:2010-06-09 03:56:20

标签: cocoa core-data cocoa-bindings nscombobox

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

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

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

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

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

有谁知道我错过了什么?感谢。

1 个答案:

答案 0 :(得分:3)

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