私の質問は、InterfaceBuilderとIKImageBrowserViewが期待どおりにバインディングを実装していないことに関連しています。
NSArrayControllerに到達するためのかなり長いキーパスがあり、その内容をIKImageBrowserViewに表示します。
これは、NSTextFieldの表示パターンバインディングをAppDelegateの:
currentOrder.imagesArray.unvalidatedImages.arrangedObjects.@count
にバインドしているキーパスです。これは正常に機能し、現在の注文に属する画像の配列内の未検証のアイテムの数を取得します。これは、想定されていることです。
次のキーパスを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.
私のAppDelegatecurrentOrder
は、保持された@propertyとして実装され、すべてのサブキーも@propertiesです。上記のNSTextFieldは問題なく変更を読み取ることができるため、これらのプロパティはKVCであると確信できます。興味深いことに、IKImageBrowserViewはにselectionIndexes
バインドできますが、バインドできない...unvalidatedImages.selectionIndexes
のはそれだけcontent
です。
NSArrayControllerをnibファイルに配置し、Content Arrayを...arrangedObjects
バインドして、IKImageBrowserViewを配列コントローラーにバインドするという回避策を実装しましたが、より適切なソリューションがあれば、または少なくとも何かをしているのかどうかを知ることができれば幸いです。間違い。
ありがとうございました!