我的问题与 Interface Builder 和 IKImageBrowserView 没有如我预期的那样实现绑定有关。
我有一个相当长的关键路径可以到达一个 NSArrayController,我想在 IKImageBrowserView 中显示它的内容。
这是我将 NSTextField 的显示模式绑定到
currentOrder.imagesArray.unvalidatedImages.arrangedObjects.@count
AppDelegate 的关键路径。这很好用,并为我提供了属于当前订单的图像数组中未验证项目的数量,这是它应该做的。
当我尝试将以下关键路径绑定到 AppDelegate 的 IKImageBrowserView 的content
:currentOrder.imagesArray.unvalidatedImages.arrangedObjects
时,Interface Builder 没有给出错误,而是表现得好像我没有输入任何内容一样。当我单击返回检查器时,绑定键路径再次为空白。
但是,它确实将以下内容记录到控制台:
Ignoring exception related to working with bindings: NSUnknownKeyException, [<NSCustomObject> addObserver:<IKImageBrowserView ...> forKeyPath:@"currentOrder.imagesArray.unvalidatedImages.arrangedObjects" ...] was sent to an object that is not KVC-compliant for the "currentOrder" property.
我的 AppDelegate 实现currentOrder
为保留的@property,所有子键也是@properties。我可以确定这些属性是 KVC 好的,因为上面的 NSTextField 能够毫无问题地读取更改。有趣的selectionIndexes
是,IKImageBrowserView 能够绑定到...unvalidatedImages.selectionIndexes
,只有content
那个不能。
我已经实现了一个解决方法,我在我的 nib 文件中放置了一个 NSArrayController 并将 Content Array 绑定到...arrangedObjects
然后将 IKImageBrowserView 绑定到数组控制器,但是很高兴有一个更整洁的解决方案,或者至少知道我是否在做任何事情错误的。
谢谢!