問題タブ [key-value-observing]

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 投票する
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

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

cocoa - 挿入/削除のために NSTreeController のバインドされた CoreData エンティティを観察する

独自のバインド可能なカスタム ツリービューを作成しています。そのために、アイテムの対多関係の更新について NSTreeController を観察したいと思います。NSTreeController は CD 管理オブジェクト コンテキストにバインドされます。すべての深度レベルには、親/子/isLeaf プロパティを持つ独自の CD エンティティがあります。ビュー(およびアイテムの子の順序)で同じ階層を維持する必要があります。何かが挿入されると、その children プロパティの監視を開始します。もちろん、新しく挿入されたオブジェクトのインデックスパスを知る必要があります。

何が挿入/削除されたかを正確に知りたいので、その子への挿入/削除を監視し始めることができます。私が理解しているように、これを行う標準的な方法は、observeValue:forKey... 内の「変更」NSDictionary を調べることですが、変更は NULL です。

これは長年のバグであることは知っていますが、良い回避策はありますか? いくつかの例のビューが配列を保存し、モデルが変更されたときに違いを比較するのを見てきました。ツリービューの場合はより複雑です。また、この方法ではメモリと CPU サイクルが無駄になります。私がテストしている回避策が 1 つあります。それはちょっとうまくいくので、まだ説明しません。

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

iphone - 管理対象オブジェクトのコンテキストを観察する方法

アプリケーションの最初のタブでオブジェクトを変更すると、fetchedResultsController を使用しているため、タブ 2 で更新が自動的に更新されます。これで、自分自身も更新する必要がある 3 番目のタブがありますが、どうすればそれを行うことができますか?

適切なデータを取得するために、3 番目のタブに nsmangedObjectContext しかありません。このコンテキスト内のオブジェクトが変更されるたびに通知を受け取るにはどうすればよいですか?

また、タブ 2 と 3 が同じデータ セットを使用するため、データの取得をより効率的にするにはどうすればよいかという問題にも取り組んでいます。現在、タブ 2 と同じデータを取得するために、タブ 3 で別のフェッチを行っています。

この件に関する情報は本当にありがたいです!!

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

cocoa - NSProgressIndicator を NSOperation のプロパティにバインドするにはどうすればよいですか?

のステータスを反映するウィンドウがありますNSOperationNSProgressIndicatorNSOperationの進行状況プロパティにバインドするにはどうすればよいですか?

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

cocoa - KVO - ストレージからオブジェクトを取得して編集用に表示する際の問題

KVO に問題があり、それが何であるのかわかりません。

レコードの編集または作成に使用できる画面があります。そのレコードは、NSString 型の多数の変数を保持するモデル オブジェクトによって表されます。

その文字列のコントローラーには、現在作業中のモデルを保持するインスタンス変数があります。ウィンドウを開いて新しいレコードを作成すると、管理対象オブジェクト コンテキストに新しいエンティティが作成され、新しく作成されたエンティティがそのインスタンス変数に割り当てられ、ウィンドウが表示されます。問題ありません。

NSManagedObject から継承しているため、モデル オブジェクトの一部のフィールドで手動通知を使用しています。

しかし、レコードを編集しようとすると (Core Data からフェッチして同じことを行うと)、次のエラーが表示されます: [ addObserver:forKeyPath:options:context:] はサポートされていません。キーパス: ユーザー名

オブジェクトの NSLogging は、そのオブジェクトが正しいタイプであることを示しています。手がかりはありますか?

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

cocoa-touch - UISlider の値を観察する - iPhone KVO

デフォルトでは、UISlider の値を観察すると、スライダーがクリックされたときに 1 回だけ更新されます。それがスライダーの設定であると考えられていても、継続的にではありません。スライダーの連続的な値の変化を取得する方法はありますか?

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

objective-c - Key-Valueの監視を支援する

KVOについて少し助けが必要です、私はそこの半分くらいです。私がやろうとしているのは、TreeControllerの何かが変更されたときにメソッドをトリガーすることです。

したがって、私はこのコードを使用してKVOとして登録しています。

しかし、観察しているキーパスが変更されたときにメソッドをトリガーするにはどうすればよいですか?

もう1つの質問ですが、自分自身をオブザーバーとして追加するときに、キーパスをコアデータモデルのプロパティにしたいのですが、正しく実行しましたか?