cocoa 键值绑定(bind): What are the explanations of the various options for Controller Key?

标签 cocoa macos interface-builder key-value-observing key-value-coding

当我使用 Interface Builder 将控件绑定(bind)到 NSArrayController 时,绑定(bind)检查器中的“ Controller 键”字段下有多种选项。

我理解什么是“arrangedObjects”,我半理解什么是“选择”,但我很想看到对所有选项以及何时使用每个选项的非常好的解释。该列表包括:selectionIndexes、selectionIndex、selectedObject、sortDescriptors 等。我还没有找到这些选项的很好的解释。

我在使用绑定(bind)到目标 > 选择的按钮时遇到问题,因此我希望对这些 Controller 键有更深入的了解可以帮助我调试问题。

谢谢!!!

最佳答案

这些很难找到。各种 Cocoa 书籍,甚至 Apple 的文档似乎到处都引用了它们,但我还没有看到有人将它们的解释统一到一个位置。答案是,Apple 在每个 Controller 类的文档中定义了它们:

  • NSObjectController (doc)
  • NSArrayController (doc)
  • NSDictionaryController ( doc )
  • NSTreeController ( doc )
  • NSUserDefaultsController ( doc )

这些文档也很有用:

这些“ Controller ”对象的继承看起来像这样(这对于发现某些“ Controller 键”选项的来源很重要):

NSController -> NSObjectController
NSController -> NSObjectController -> NSArrayController
NSController -> NSObjectController -> NSArrayController -> NSDictionaryController
NSController -> NSObjectController -> NSTreeController
NSController -> NSUserDefaultsController

// Note:  NSController is an abstract class (don't worry about it).  It inherits from NSObject.

如果您发现特定类的文档中未定义 Controller 键,则它可能已在其父类(super class)中定义。以下是上述各项可用的所有 Controller 键(Xcode 3.2.1、Interface Builder 3.2.1):

// **NSObjectController**
canAdd
canRemove
isEditable
selectedObjects
selection


// **NSArrayController**
arrangedObjects
canAdd
canInsert
canRemove
canSelectNext
canSelectPrevious
filterPredicate
isEditable
selectedObjects
selection
selectionIndex
selectionIndexes
sortDescriptors


// **NSDictionaryController**
arrangedObjects
canAdd
canInsert
canRemove
canSelectNext
canSelectPrevious
filterPredicate
isEditable
selectedObjects
selection
selectionIndex
selectionIndexes
sortDescriptors


// **NSTreeController**
arrangedObjects
canAdd
canAddChild
canInsert
canInsertChild
canRemove
isEditable
selectedObjects
selectedNodes
selection
selectionIndexPath
selectionIndexPaths
sortDescriptors


// **NSUserDefaultsController**
hasUnappliedChanges
values

因此,在列表中找到您想要的 Controller 类,在文档中查找该 Controller 类,您就会找到它的定义。如果它不存在,则可能是在其父类(super class)(可能是 NSObjectController)的文档中定义的。

关于 cocoa 键值绑定(bind): What are the explanations of the various options for Controller Key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1774022/

相关文章:

cocoa - 管理调试和发布版本之间的 NSStoreType 更改

cocoa - 使用 NSPasteboard 数据启动应用程序

objective-c - Objective-C 中的 NSBundle 和 mainBundle 是什么?

macos - OSX 上的 32 位 DTrace

xcode - 界面生成器中的 UIView layoutMargins

ios - 发现多个名为 'setTransform:' 的方法具有不匹配的结果、参数类型或属性

macos - codesign 在哪里存储 OSX 上已签名文本文件的签名?

macos - 使用 MacVim 更新 OSX Vim

ios - 添加 ViewController.swift 并重命名后,它不会将我的 viewController 与那个 swift 类链接起来

iphone - 如何从带有占位符的 NIB 加载 UIViewController?