Objective c IB NSController子类绑定

Objective c IB NSController子类绑定,objective-c,cocoa-bindings,Objective C,Cocoa Bindings,在Mac OS X中,有一个对象是Interface Builder中NSObject的子类,即我添加了一个NSObject实例,并将其类设置为JDMyClass(它本身就是NSController子类)。在IB中,我使用JDMyClass中的values属性从一些接口元素创建了一些绑定,例如绑定到values.anyProperty的文本视图 根据: 除上述步骤中描述的自定义对象外,其他自定义对象将接收一条init消息 这意味着我永远没有机会使用initWithCoder:,这就是绑定信息的来

在Mac OS X中,有一个对象是Interface Builder中
NSObject
的子类,即我添加了一个
NSObject
实例,并将其类设置为
JDMyClass
(它本身就是
NSController子类
)。在IB中,我使用
JDMyClass
中的values属性从一些接口元素创建了一些绑定,例如绑定到
values.anyProperty
的文本视图

根据:

除上述步骤中描述的自定义对象外,其他自定义对象将接收一条
init
消息

这意味着我永远没有机会使用
initWithCoder:
,这就是绑定信息的来源(我想)。(同一文档指出哪些对象确实接收
initWithCoder:
而不是
init

随后,同一文件指出:

  • 绑定
    • 在OSX中,Cocoa使用源对象的
      bind:toObject:withKeyPath:options:
      方法来创建它与目标对象之间的连接
我对此表示怀疑,但还是将其添加到了我的
JDMyClass
中,而且断点从未命中,因此Mac OS X不会尝试从IB重新建立任何绑定

虽然我可以使我的
JDMyClass
成为的子类,例如
NSUserDefaultsController
,并将共享用户默认控制器IB实例设置到我的类中,但我并不真的想这样做。它可以工作,也就是说,我可以使用
initWithCoder:
,调用
super
,并设置我的所有绑定,但它似乎很有用胡闹

绑定不一定提前知道,因此我无法在代码中建立它们

那么,当从Nib加载自定义类时,当我事先不知道绑定是什么时,如何将Interface Builder中设置的绑定应用于自定义类?


谢谢!

我必须使用IB,暂时不能。但最终的解决方案是在您的Nib中绑定一个
NSObjectController
对象。不过,我不确定您是否坚持将JDMyClass与Nib一起存档和未存档,而不是将自定义对象保存到其他地方。使用NSObjectController的子类是我的备份计划。你知道“沉没成本谬论”吗?这就是我现在的想法。我已经浪费了四天时间试图解决这个问题,而不是做“简单的”事情。将Nib用作并非真正控制器或视图的对象的存档可能并不容易。如果您使用绑定,您应该使用核心数据进行模型持久化…这是一件容易的事情。在您描述的Nib中,您可以使用一个对象控制器从核心数据模型中获取正确的实体。是的,这是一个轻描淡写。我想做的是从头开始构建一个真正的控制器,但IB似乎不想让我这么做,除非它已经从一个内置的真正控制器派生出来。