当我使用 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/