什么是NSObjectController的selection?

3
在Xcode 6.2中,我在绑定检查器中看到了这个:
enter image description here
有人能解释一下将Controller Key设置为selection是什么意思吗?苹果文档说:

selection:
返回表示[NSObjectController]的选择的代理对象。

一点也不有用。

这是单向的,在子类中非常有用,你可以像将NSObjectController的“content”绑定到只允许单选的NSArrayController的“selection”一样做一些事情...我认为没有更多要说的了,因为显然没有办法使用简单的NSObjectController实例来设置选择。据我所知,它在超类中是故意无用的。 - stevesliva
1个回答

0

我已经拼凑出了一部分谜题。来自Apple Developer docs

控制器需要操作的内容,有许多设置选项。可以通过绑定来完成...
...
NSObjectController及其子类是使用initWithContent:方法初始化的,传递一个内容对象或nil(如果您打算使用内容绑定)。您可以使用setContent:方法显式地设置现有控制器的内容。更常见的做法是通过建立与其公开的控制器内容绑定之一的绑定来为控制器提供内容。

NSObjectController公开了一个名为contentObject的内容绑定。您可以将contentObject与任何符合键值编码和键值观察规范的对象建立绑定,以便控制器对其进行操作的键。

来自一个Stack Overflow帖子

对于NSObjectController,选择是内容对象。

显然,NSObjectController的selection @property被分配了contentObject,这就是使您能够进行绑定的东西。

一般地

NSObjectController及其子类...支持跟踪当前选择的对象或多个对象

我认为当前选择的对象必须是在视图中选择的控件。

有两种常用方法可以访问当前选择的对象:selection和selectedObjects。

我认为使用 NSObjectController 时,视图中选定的控件没有意义,因此 NSObjectController 的 selection @property 将被分配给 contentObject。

我在解析“NSObjectController的selection @property被分配给contentObject”的过程中遇到了问题,这是使您能够进行绑定的东西。selectioncontent都允许绑定,但是selection是单向的。如我在注释中所说,“selection”在NSArrayControllerNSTreeController中的实现更有意义。同样适用于“addObject”,“removeObject”和“newObject”。 - stevesliva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接