問題タブ [cocoa-bindings]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
367 参照

cocoa - XCode Debugger のこれらのエラーは何を意味しますか?

XCode に 2 つのエラーがあり、その意味を理解しようとしています。

1つ目:

2009-06-30 18:56:27.998 Spark[4584:10b] Error setting value for key path filterPredicate of object <NSArrayController: 0x1482c0>[entity: group, number of selected objects: 1] (from bound object <NSSearchField: 0x143f20> with object ID 1387 in Nib named MainMenu.nib): [<NSManagedObject 0x1d8170> valueForUndefinedKey:]: the entity group is not key value coding-compliant for the key keyPath.

2つ目:

彼らはどういう意味ですか?

0 投票する
1 に答える
354 参照

cocoa - バインディングによって引き起こされる NSWindowController の循環依存関係?

nib をロードする NSWindowController が所有するウィンドウ nib があるとします。

NSWindowController には、(Interface Builder を介して) ウィンドウ上の UI コントロールにバインドされた IBOutlet があります。

バインドによってウィンドウ コントローラーとコントロールの間に壊れない循環依存関係が発生するため、ウィンドウ コントローラーを解放して破棄できないというのは本当ですか?

同様の循環依存関係につながる可能性のある一般的な状況を知っていますか?

0 投票する
4 に答える
9748 参照

objective-c - Cocoaバインディングを手動で実装できますか?

自分のNSViewサブクラスのバインディングを実装するのに問題がありました。動作しますが、nibファイルからファイルの所有者にバインドするときの保持サイクルに問題があります。少し読んだ後、私はAppleが数年前に同じ問題を抱えていることを発見しましたが、いくつかの魔法の文書化されていないクラス(NSAutounbinder)でそれを修正しました。

ここhttp://www.cocoabuilder.com/archive/message/cocoa/2004/6/12/109600で、保持サイクルの問題について長い議論があります。回避策は、windowWillClose:のような場所で、ウィンドウコントローラが解放される前に、割り当てが解除される前ではなく、すべてのバインディングのバインドを解除することです。これは私には不必要なハックのようです。

私の質問はこれです:文書化されていない機能を使用せずに、Appleによって作成されたものと同様に機能するカスタムバインディングを作成する方法はありますか?私はこれを間違った方法で行っていますか?


更新2:手動で実装されたバインディングがAppleのバインディングとまったく同じように機能することを可能にするソリューションを見つけました。文書化されていない機能を実際に使用することなく、文書化されていないNSAutounbinderクラスを利用します。解決策は本日遅くに投稿します。


更新:を使用してみましexposeBinding:たが、違いはないようです。ただし、半分のNSObject実装は機能します。bind:toObject:withKeyPath:options:バインド先からバインダーへ(つまり、モデル/コントローラーからビューへ)変更を伝播しますが、逆の方法では機能しません。また、バインド先は明らかに監視されていますが、トリガーされるobserveValueForKeyPath:ofObject:change:context:ことはありません。

ここにあるプロジェクトの例:http://www.tomdalling.com/wp-content/BindingsTest.zip

Appleのドキュメントによると、実際には、bind:toObject:withKeyPath:options:手動バインディングを実装するにはオーバーライドする必要があります。ここを参照してください:http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/HowDoBindingsWork.html


サイドノート:文書化されていないNSAutounbinderがどのように機能するかを調査しましたが、これが私が知っていることです。

NSWindowControllerへのバインディングが作成されると、バインドされたオブジェクトは実際には、-[NSWindowController_autounbinder]を使用してNSWindowControllerから取得されるNSAutounbinderです。NSAutounbinderは、NSWindowControllerオブジェクトの非保持プロキシです。保持サイクルの問題を回避することは非保持です。

-[NSWindowControllerrelease]が呼び出されてretainCount==1の場合、NSAutounbinderはすべてのバインディングをそれ自体にバインド解除します。これにより、割り当てが解除される前に、オブジェクトへのダングリングポインタがなくなります。

0 投票する
3 に答える
15757 参照

objective-c - NSOutlineView と NSTreeController の例

コア データを使用せずにNSTreeControllerバインディングでNSOutlineViewを使用する方法に関するリンクをいくつか送ってください。

0 投票する
1 に答える
1421 参照

cocoa - NSArrayのすべての要素に対してQuartzComposerで図形を描画するにはどうすればよいですか?

解析したXMLファイルがあり、必要な情報をいくつかのNSArrayオブジェクトに入れています。QuartzView(何か良いものはありますか?)でそれらを描画して、データを視覚化できるようにしたいと思います。アレイにはすべて、仮想的に同じ量の情報が含まれている必要があります。1つの配列がx軸を表し、別の配列がyを表すようにします。クォーツコンポーザーを配列コードにバインドするのに十分な時間がかかりましたが、一意の座標を持つ1つの球、または同じ座標を持つすべてのインデックスの球のいずれかを描画することしかできません。したがって、基本的には、配列データに基づいてQCでプロットを作成するための支援が必要です。コードは次のようになります。

前もって感謝します。

0 投票する
1 に答える
151 参照

iphone - 管理対象オブジェクトを iPhone のコントロールと同期する最もエレガントな方法は?

iPhone アプリケーションを SQLite から Core Data に移植しようとしています。

中間にコントローラーを配置せずに、値を操作するコントロールとマネージド オブジェクトを直接同期する方法はありますか? 注: 私は難しい方法でそれを行うことができます。それが私が今行っていることです。エレガントで、簡単で、速い方法を探しています。

私はドキュメンテーションをめくっていますが、圧倒され始めています。Bindings に関するドキュメントは、iPhone ではなく Mac OS X のみのようです。私が説明していることは iPhone でも可能ですか?

ありがとう。

0 投票する
1 に答える
2576 参照

objective-c - NSCollectionView と Outlets を適切に使用するには?

コンセントを使用して NSCollectionView に常駐する NSViews のコントロールを必死に接続しようとしています。コレクション ビューは、NSArrayController を使用して供給されます。

別の NIB ファイルに NSView を作成し、NSCollectionViewItem の実装で copyWithZone を上書きしてロードしました。

この指示に従ってこのアプローチを使用しました。

残念ながら、これが起こっていることです:

代替テキスト

NSView は次のようになります。

代替テキスト

NSCollectionView は NSScrollView にあり、スクロールバーは自動的に有効になるように設定されています。しかし、ご覧のとおり、スクロールバーはありません。

NSCollectionView がその NSView のサイズを知っているので、何をする必要があるのか​​ よくわかりません。

別のNIBファイルを持っていなかったときは以前は機能していましたが、ビューからアイテムへのアウトレット接続を作成できませんでした:-(

0 投票する
5 に答える
737 参照

objective-c - Cocoa バインディング: NSPopupButton で固定アイテムを ArrayController バインド アイテムと組み合わせる

NSPopupButton を使用してカラー チューザーを作成しようとしていますが、一番下にセパレーターと「カスタム…」オプションが必要です。配列から色を読み込んで、セパレーターと「カスタム」アイテムを一番下に付けることは可能ですか? もしそうなら、どのように?

ありがとう!

0 投票する
1 に答える
729 参照

core-graphics - ココアバインディングとCGColorRefを使用したKVC

CGColorRefオブジェクトの1つをの" shadowColor"プロパティにバインドしようとしていますCALayer。残念ながら、私はこれを理解することができませんでした-それはおそらく本当に単純なものです!

CGColorRefはプロパティとして実装されます。

私のバインディングも簡単です:

私が動けなくなっているのはvalueForUndefinedKey:-これをどのように実装すればよいのでしょうCGColorRefか?私は現在、定型文を取得しています:

NSColor両端にプロパティを配置し、色が変更されるたびに手動でCALayer's " "を設定することでこれを回避できますが、それはエレガントではないようです。shadowColor