我花了一天多的时间来尝试找到一个简单的示例,说明如何使用NSObjectController
与核心数据进行绑定。所有示例均为具有NSArrayControllers
绑定的NSTableView
。
您如何设置带有核心数据的简单NSObjectController
以自动保存和获取数据?假设您想将具有string属性的实体绑定到文本字段,该怎么做?
最佳答案
这是“接口”构建器中的基础。
将nstextfield
拖动到视图中(从对象库中)
拖过nsobjectcontroller
(同样)
打开绑定检查器。 Option-Cmd-7或View / Utilities / BindingsInspector。
选择上面的nsobjectcontroller
。在BindingsInspector中,靠近底部的是ManagedObjectContext的参数。单击“绑定到”旁边的复选框。然后从下拉列表中选择“文件的所有者”。文件的所有者可能是您的NSDocument。将ModelKeyPath设置为managedObjectContext(注意小写的“ m”)
现在,将“实用程序”视图切换到AttributesInspector(Open-Cmd-4)。将模式从“类”设置为“实体”。输入您的BusinessObject或模型名称。如“员工”。
选择新的nstextfield
。在BindingsInspector中,选择“值”。选中“绑定到”并选中上面的nsobjectcontroller
(从下拉列表中)。
对于CONTROLLER KEY,选择“选择”。
对于“模型键路径”,请选择一个模型属性(而不是关系),例如“名称”。
现在通过添加第二个控制器nsarraycontroller进行实验。绑定到关系,而不是属性。因此,数组具有多个“ Content Set”,而不是单数“ Content”。关系具有基础的NSSet毫无价值,而ALL属性是NSObject的子类。没有int,浮点数。但是NSNumber,NSString。
选择新的nsarraycontroller。在内容集中选择“绑定到”。选择第一个nsobjectcontroller。 CONTROLLER KEY是“ selection”,而MODEL KEY PATH是关系名称,例如“ employees”
设置一个带有几列的NSTableView。 (表中有许多行可以容纳集合中的项目,而表中的列则可以容纳实体中的各种属性)
选择一个表列。选择“绑定到”,然后选择nsarraycontroller。
这次,CONTROLLER KEY是“ arrangedObjects”(不是选择)。 MODEL KEY PATH只是一个属性名称,例如“ name”。
请注意,NSNumber和NSDate更喜欢NSFormatter,因此将它们(从对象库中)拖到nstextfield或表列中,以将数字和日期转换为漂亮的字符串。