您需要实现什么来为NSArrayController提供内容集?

时间:2010-04-12 05:25:25

标签: objective-c cocoa core-data cocoa-bindings key-value-coding

Heys,

我在Xcode中写一些东西。我使用Core Data来保持持久性,并将视图和模型与Cocoa Bindings链接在一起;几乎是普通的核心数据应用程序。

我的Xib中有一个数组控制器(NSArrayController)。这样就将managedObjectContext绑定到AppDelegate,就像惯例一样,并跟踪一个实体。到目前为止一切都很好。

现在,此NSArrayController的“内容集”绑定限制了其内容集(正如您所期望的那样),来自另一个NSArrayController(otherAc.selection.detailsOfMaster)中的选择的keyPath。这是实现Master-Detail关系的常用方法。

我希望使用其他控件在运行时可变地更改关键路径。这样,我就可以返回一个内容集,其中包含其他几个内容集,这些内容集都是高级的,并且超出了Interface Builder。

为实现这一目标,我认为我应该将内容集绑定到我的AppDelegate。我试图这样做,但不知道要实现什么方法。如果我只是创建KVC方法(objectSet,setObjectSet),那么我可以在contentSet方法中为Array Controller提供内容集。

但是,我认为我没有正确绑定它,因为它没有“刷新”。我是新约束力的;当其他内容(例如主NSArrayController中的选择)发生变化时,我需要实现什么才能正确更新内容集?

1 个答案:

答案 0 :(得分:1)

  

但是,我认为我没有正确绑定它,因为它没有“刷新”。

这通常意味着您直接分配给实例变量,而不是使用符合KVC标准的访问者方法,也不会发布KVO次通知。

一般的解决方案是为属性创建访问器方法,然后在任何地方使用它们,包括在该类中,除了initdealloc方法。