在Xcode 6.2中,我在绑定检查器中看到了这个:
![enter image description here](https://istack.dev59.com/prySV.webp)
有人能解释一下将
![enter image description here](https://istack.dev59.com/prySV.webp)
有人能解释一下将
Controller Key
设置为selection
是什么意思吗?苹果文档说:一点也不有用。selection:
返回表示[NSObjectController]的选择的代理对象。
Controller Key
设置为selection
是什么意思吗?苹果文档说:一点也不有用。selection:
返回表示[NSObjectController]的选择的代理对象。
我已经拼凑出了一部分谜题。来自Apple Developer docs:
控制器需要操作的内容,有许多设置选项。可以通过绑定来完成...
...
NSObjectController及其子类是使用initWithContent:方法初始化的,传递一个内容对象或nil(如果您打算使用内容绑定)。您可以使用setContent:方法显式地设置现有控制器的内容。更常见的做法是通过建立与其公开的控制器内容绑定之一的绑定来为控制器提供内容。NSObjectController公开了一个名为contentObject的内容绑定。您可以将contentObject与任何符合键值编码和键值观察规范的对象建立绑定,以便控制器对其进行操作的键。
来自一个Stack Overflow帖子:
对于NSObjectController,选择是内容对象。
显然,NSObjectController的selection @property被分配了contentObject,这就是使您能够进行绑定的东西。
更一般地:
NSObjectController及其子类...支持跟踪当前选择的对象或多个对象
我认为当前选择的对象必须是在视图中选择的控件。
我认为使用 NSObjectController 时,视图中选定的控件没有意义,因此 NSObjectController 的 selection @property 将被分配给 contentObject。有两种常用方法可以访问当前选择的对象:selection和selectedObjects。
selection
和content
都允许绑定,但是selection
是单向的。如我在注释中所说,“selection”在NSArrayController
和NSTreeController
中的实现更有意义。同样适用于“addObject”,“removeObject”和“newObject”。 - stevesliva