問題タブ [key-value-coding]

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 に答える
4160 参照

iphone - オブジェクトがキー値コーディングに準拠していないのはどのような状況ですか?

現在、キー値コーディングに関するすべてのことを学んでいます。

ドキュメントで彼らは言う:

適切なキーのキー値コーディングに準拠していないキー パス シーケンス内のオブジェクトは、valueForUndefinedKey: メッセージを受け取ります。

オブジェクトがキー値コーディングに準拠していない状況を想像してみてください。どうしてそれが起こり得ますか?UIView をサブクラス化すると、明らかに準拠していますよね? しかし、スーパークラスとして NSObject を使用して独自のオブジェクトを作成すると、どうなるでしょうか? そして、スーパークラスのないクラスを作成すると、これは kv に準拠していませんか?

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

iphone - オブジェクト プロパティにアクセスするときに、単純なドット構文ではなく KVC を使用する必要があるのはなぜですか?

レシーバークラスが NSKeyValueProtocol に準拠している場合、長い道のりを歩むオプションがあります。

または短い方法:

この KVC メソッドのポイントは何ですか? これはいつ役に立ちますか?

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

objective-c - NSDictionary setValue:

わかりました、これは私を狂わせています - 私が正気ではないことを教えてください!

私は宣言する:

私は私の.h

私は初期化します:

ビューに表示されます

私は設定しました:

メソッドで:

そして、「NSMutableDictionary が setValue:forkey: に応答しない可能性があります」というメッセージが表示され、実行時にアプリがクラッシュします。

助けてください :(

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

objective-c - NSPredicatesでのキーパスの使用

(私のカスタム)GTPersonオブジェクトを含むNSDictionaryがあります。GTPersonには、NSMutableSet *parents私が使用する属性とが@propertyあり@synthesizeます。

NSDictionaryから、親を持たない、つまり親の数が0であるすべてのGTPersonオブジェクトをフィルタリングしたいと思います。

私は次のコードを使用しています:

これを実行すると、次のエラーが発生します。

[<GTPerson 0x18e300> valueForUndefinedKey:]: this class is not key value coding-compliant for the key count.

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<GTPerson 0x18e300> valueForUndefinedKey:]: this class is not key value coding-compliant for the key count.'

属性countではなくGTPersonを呼び出そうとしているのはなぜですか?parents

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

objective-c - Objective-C で Key-Value コーディングを使用して定数にアクセスする

定数が多いプログラムを作っています。それらをすべて別のクラスに入れることにし、それを必要とするクラスごとにインポートしています。ファイルは次のようになります

私がやろうとしているのは、キー値コーディングを使用してそれらにアクセスすることです。私がこれまでに試したことはうまくいきませんでした。

しかし、私は次のことを行うことができ、正常に動作します。

これは無意味に思えるかもしれませんが、「CostForBuilding」で終わる必要がある変数がたくさんあり、これを必要とする関数は文字列の最初の部分のみを取得します。例、「base」、「max」、「intermediate」など。その後、「CostForBuilding」などと組み合わせて変数名を取得します。

これが可能であれば、正しい変数にアクセスするために複数の if ステートメントを使用する代わりに、1 行または 2 行のコードのみを使用する方がはるかに優れています。これを行う方法を知っている人はいますか?前もって感謝します。

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

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

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

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

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

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

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

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

iphone - キーバリューの方法-CALayerの回転を観察しますか?

私はこのような値にアクセスできます:

しかし、何らかの理由で、そのキーパスをKVで監視しようとすると、コンパイラエラーが発生します。まず、これが私がそれをやろうとする方法です:

コンパイラは私に言います:

***キャッチされなかった例外'NSUnknownKeyException'、理由:'[addObserver:forKeyPath:@ "rotation.z" options:0x0 context:0x528890]が原因でアプリを終了し、「ローテーション」がKVCに準拠していないオブジェクトに送信されました財産。'

私が得られないのは、なぜKVCキーパスでそのz値にアクセスできるのに、オブザーバーを追加できないのかということです。これは意味がありますか?

その行列のz値を他にどのように観察できますか?マトリックスの他の値は気にしません。z回転のみ。アクセスして観察する他の方法はありますか?

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

iphone - KVOロック。非同期で使用するにはどうすればよいですか?

私は KVO で売られていますが、明らかな方法で使用されている場合、それは同期的です。多くの KVO メッセージを立て続けに送信し、KVO メッセージの処理中にアプリが停止する状況で使用したいと考えています。NSOperationおそらくorを使用して、ここで機能するアプローチを誰かが提案できますかNSThread?

私の目標は、可能であれば KVO の分離された柔軟性を維持することです。

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

uiview - UIView の ivar のキー値コーディング

フレームの変更またはアフィン変換によって UIView が変更されたときに、いくつかのメソッドを実行することに興味があります。私の最善のアイデアは、次の値の変化を観察することでこれを行うことです。

myView.framemyView.transform

ただし、UIViews のビュー部分は Key-Value 準拠ではありません。幸いなことに、ビューのモデル部分である CALayer がそうです。だから私は次のようにセットアップします:

ビューの viewDidLoad: 部分。「フレーム」キーについても同じことを行いました。ただし、スーパー ビュー内でビューを移動するか、アフィン変換によってビューが変更されると、メソッドは次のようになります。

呼び出されることはありません。何を与える?UIViews フレームと変換の変更を観察するより良い方法はありますか?

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

cocoa - KVC/KVO とバインド: 変更通知が 1 つしか届かないのはなぜですか?

Cocoa の KVC/KVO とバインディングで奇妙な動作が見られます。「コンテンツ」が にバインドされたNSArrayControllerオブジェクトがあり、 のプロパティNSMutableArrayのオブザーバーとしてコントローラーが登録されています。このセットアップでは、アレイが変更されるたびに KVO 通知を受け取ることを期待しています。ただし、KVO 通知は 1 回しか送信されないようです。配列が初めて変更されたとき。arrangedObjectsNSArrayController

問題を説明するために、Xcodeで新しい「Cocoa Application」プロジェクトをセットアップしました。これが私のコードです:

BindingTesterAppDelegate.h

BindingTesterAppDelegate.m

出力は次のとおりです。

ご覧のとおり、KVO 通知は初回のみ (およびアプリケーションの終了時にもう一度) 送信されます。なぜこれが当てはまるのでしょうか?

アップデート:

その だけでなく、 myの にバインドする必要があることを指摘してくれたorqueに感謝します。この変更が行われるとすぐに、上記の投稿されたコードが機能します。contentArrayNSArrayControllercontent