我花了一天以上的时间寻找如何使用NSObjectController
和核心数据进行绑定的简单示例。所有的示例都是关于使用NSTableView
绑定的NSArrayControllers
。
如果你想要设置一个简单的NSObjectController
和核心数据来自动保存和获取数据,该怎么做呢?比如说,你想将一个具有字符串属性的实体绑定到一个文本框上,你该怎么做呢?
我花了一天以上的时间寻找如何使用NSObjectController
和核心数据进行绑定的简单示例。所有的示例都是关于使用NSTableView
绑定的NSArrayControllers
。
如果你想要设置一个简单的NSObjectController
和核心数据来自动保存和获取数据,该怎么做呢?比如说,你想将一个具有字符串属性的实体绑定到一个文本框上,你该怎么做呢?
从对象库中将nstextfield
拖到视图中。
同样地,将nsobjectcontroller
拖入视图中。
打开绑定检查器。选项-命令-7或查看/实用程序/绑定检查器。
选择上述的nsobjectcontroller
。在绑定检查器中,靠近底部是ManagedObjectContext的参数。点击“绑定到”旁边的复选框。然后从下拉菜单中选择文件所有者。文件所有者很可能是您的NSDocument。将ModelKeyPath设置为managedObjectContext(注意小写的“m”)。
现在将实用程序视图切换到属性检查器(打开-命令-4)。将模式从“Class”设置为“Entity”。输入您的BusinessObject或Model名称,例如“Employee”。
选择新的nstextfield
。在绑定检查器中,选择“Value”。勾选“绑定到”,并选择上述nsobjectcontroller
(从下拉菜单中选择)。
对于CONTROLLER KEY,选择“selection”。
对于MODEL KEY PATH,选择模型的属性(但不是关系),例如“name”。
现在通过添加第二个控制器nsarraycontroller来进行实验。它们绑定到关系,而不是属性。因此,数组具有复数的“Content Set”,而不是单数的“Content”。值得注意的是,关系具有基础的NSSet,而所有属性都是NSObject的子类。没有int、float类型,但有NSNumber、NSString。
选择新的nsarraycontroller。在Content Set中选择“Bind to”。选择第一个nsobjectcontroller。CONTROLLER KEY为“selection”,而MODEL KEY PATH为关系名称,如“employees”。
设置一个NSTableView,带有几列。(表格有多行来容纳集合中的项目,并且有列来容纳实体中的各种属性)
选择一个表列。选择“Bind to”,并选择nsarraycontroller。
这次CONTROLLER KEY是“arrangedObjects”(而不是selection)。MODEL KEY PATH只是一个属性名称,例如“name”。
请注意,NSNumber和NSDate更喜欢NSFormatter,因此将它们(从对象库)拖到nstextfield或table column中,以将数字和日期转换为漂亮的字符串。