問題タブ [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 投票する
4 に答える
24536 参照

iphone - UIButtonの状態変化をどのようにリッスンしますか?

UIButton表示されたタイトルに基づいて特定の外観属性を変更するために、汎用機能を拡張しています。

これを行うには、「状態」プロパティの変更を検出して応答する必要があります。これは、ユーザーが州ごとに異なるタイトルを設定した場合に、外観が適切に調整されるようにするためです。次のようなKVOを使用する必要があると思いました。

しかし、これは@"state"または@"currentTitle"のobserveValueForKeyPath:...メソッドを起動しないようです。これは、UIButtonがこれらのプロパティのKVOパターンを実装していないためだと思います。

クリックを聞きたくない。これらのイベントは状態の変化を引き起こしますが、潜在的な原因はそれだけではありません。

UIButtonの状態変化をリッスンして応答する方法を知っている人はいますか?

ありがとう


アップデート

ここ数年でいくつかのことを学んだので、ちょっと注意してください;)。

それ以来、私は知っているAppleの人々と話をしましたが、KVOが州の資産で機能しない理由は、 UIKitのどれもKVOに準拠することが保証されていないという事実によるものです。ここで繰り返す価値があると思いました。UIKitフレームワーククラスのプロパティをリッスンしようとしている場合は、機能する可能性はありますが、公式にはサポートされておらず、さまざまなiOSバージョンで機能しない可能性があることに注意してください

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

caching - memcache キーの整理

より文明化された方法でキャッシュレイヤーとの間でデータを保存、取得、更新するためのmemcacheキーを処理する良い方法を見つけようとしています。

見栄えのするこのパターンを見つけましたが、どうすればそれを PHP アプリケーションの機能的な部分に変えることができるでしょうか?

アイデンティティ マップ パターン: http://martinfowler.com/eaaCatalog/identityMap.html

ありがとう!

更新: 変更された memcache (memcache-tag) について聞いたことがありますが、これは明らかに多くのことを行っていますが、Windows 開発ボックスに Linux ソフトウェアをインストールできません...

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

iphone - UITextField valueDidChange イベント

Textfield の「valueDidChange」イベントをキャッチする方法はありますか? oO

UITextField を持つ modalView があります。

UITextField が空の場合、NavigationBar の「完了」ボタンを無効にし、テキストが入力されている場合は有効にする必要があります。

現時点では、「textFieldShouldReturn」メソッドを使用してこれを達成する唯一の方法です。これは機能しますが、使い勝手が悪いだけです。

文字が入力または削除されるたびに要件を確認する方法はありませんか?

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

iphone - iPhone で UIButtons の有効化/無効化を処理する最良の方法

増加ボタンと減少ボタンがあり、どちらも変数に影響します。変数には最小値があり、最小値に達すると減少ボタンが無効になります。変数の最大値についても同様です。私のコントローラーには、増加アクションと減少アクションの両方に 2 つの IBActions と、それに応じてボタンを無効にするための 2 つの IBOutlets があります。値の変更を処理するための KVO ステートメントの最後には、次のように記載されています。

このコードは機能しますが、特にこれには 4 つの接続が必要なため、これは問題に対する単純なアプローチだと感じずにはいられません。より少ない接続を使用する、これに対するより良い解決策はありますか?

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

cocoa - NSScroller の変更を監視するには?

サブクラスがあり、現在のスクロール位置に基づいて別のNSScrollViewサブクラスを更新したいと考えています。NSViewの KVC を監視しようとしましたvalue[self horizontalScroller]、呼び出されません。

私の推論に誤りがあるか、または のスクロールを観察するためのより良い方法を知っていNSScrollviewますか?

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

iphone - observeValueForKeyPathが呼び出されていません

UIViewのインスタンスを作成するViewControllerがあり、次にオブザーバーをインスタンスに登録します。

次に、同じファイルに次のようになります。

しかし、logoAnimation.patrocinioDidLoadが変更されたことを確認して再確認しましたが、observeValueForKeyPathが呼び出されることはありません...

私は何かが足りないのですか?

助けてくれてありがとう!

アントニオ

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

objective-c - KVOは、KVOオブザーバーは登録されていなくても登録されていると言います(または登録されていますか?)

アプリケーションを閉じると、メインコントローラークラスはそれ自体をオブザーバーとしてモデルから削除してから、モデルを解放します。このような:

そしてその直後、デバッガーは次のように言います。

2010-04-29 14:07:40.294 MyProgram [13678:a0f]クラスTheModelのインスタンス0x116f2e880は、キー値オブザーバーがまだ登録されている間に割り当てが解除されました。観測情報が漏洩し、他の物体に誤って付着する可能性もあります。NSKVODeallocateBreakにブレークポイントを設定して、デバッガーでここで停止します。現在の監視情報は次のとおりです。
<NSKeyValueObservationInfo0x100288450>(
<NSKeyValueObservance 0x1002aca90:Observer:0x116f40ec0、Key path:myValue、Options:<New:YES、Old:NO、Prior:NO> Context:0x0、Property:0x116f80430>

ここで、0x116f2e880は実際にモデルであり、0x116f40ec0実際にはコントローラーです。

コントローラーがオブザーバーとして自分自身を削除したときに、コントローラーがオブザーバーになるにはどうすればよいですか?

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

cocoa - CocoaBindingsとNSArrayControllerを使用してモデルの変更を監視する

NSArrayControllerモデルオブジェクトの配列を管理するコントローラーに可変配列へのバインドがあります。アレイコントローラーは私のUIにバインドされています。それはうまくいきます。

現在、コントローラークラスのモデルで値が変更されたときに手動で監視しようとしています(基本的に、変更されたモデルを後で使用するために「needsToSave」としてマークしますが、変更されたときに他にいくつかのタスクがあります)。

KVOについて読みましたが、何を観察する必要があるのか​​完全にはわかりません... NSArrayController?オブジェクトの配列?各モデルオブジェクト自体?錯乱。

どんなポインタも非常に役に立ちます。前もって感謝します!

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

core-data - CoreData の NSDictionary 属性の更新が保存されない

NSDictionary として実装された Transformable 属性タイプを含む Entity を CoreData に作成しました。NSDictionary 属性には、カスタム クラスの値のみが含まれます。カスタム クラスのプロパティはすべて NSString 型です。カスタム クラスは、以下を実装する NSCoding に準拠しています。

-(void)encodeWithCoder:(NSCoder*)coder;

-(id)initWithCoder:(NSCoder *)コーダー

初めてエンティティを保存すると、変換可能 (NSDictionary) タイプを含むすべての属性が適切に DB に保存されます。DBから同じEntityを取得して更新すると(Transformable属性も含めて)ちゃんと更新されているようです。ただし、アプリを閉じてから再度開いてエンティティを取得すると、NSDate 型と NSString 型の残りの属性は最新ですが、更新された Transformable 属性型が表示されません。Transformable 属性は、更新された値ではなく、保存された元の値です。

これは KVO の問題ですか、それともカスタム クラスで満たされた NSDictionary を CoreData に保存しようとしたときに何か不足していますか?

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

iphone - iPhone OS: KVO: Observer が applicationDidfinishLaunching でのみ通知を受けるのはなぜですか

基本的に、アプリに実績追跡のセットアップを実装しようとしています。

あらゆる種類の統計を追跡するために StatTracker という managedObjectModel クラスがあり、それらの統計が変化したときにアチーブメント追跡クラスに通知して、値と照合してユーザーがアチーブメントを獲得したかどうかを確認できるようにします。

私はKVOを実装しようとしましたが、それを実現するのにかなり近づいていると思いますが、私が直面している問題は次のとおりです:

したがって、appDelegate には、アチーブメント トラッカー クラスの Ivar があり、それをオブザーバーとして、applicationDidFinishLaunching メソッドの statTracker コア データ エンティティのプロパティ値にアタッチします。

AchievementTracker インスタンスで UIAlert をトリガーできたため、接続が確立されていることがわかります。また、StatTracker のプロパティの値が変更されるたびにトリガーされるログ ステートメントをいくつか入れました。ログ ステートメントは、アプリケーションの起動時に 1 回だけ表示されます。

オブジェクトのライフサイクル スキーム全体で何かが欠けているのではないかと思っていますが、applicationDidFinishLaunching メソッドの実行後にオブザーバーが変更の通知を受け取らなくなる理由がわかりません。それは AchievementTracker 参照のスコープと関係がありますか、それとも私のコア データ StatTracker への参照は、そのメソッドが終了すると消えてしまいます。

その場合、これらを配置する正しい場所がわからないと思います。助けていただければ幸いです。appDidFinishLaunching メソッドにオブザーバーを追加するコードは次のとおりです。

ここに私のコアデータシングルトンのコードがあります:

}

そして私のAchievementTracker: