問題タブ [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.
objective-c - KVOを使用して、NSPredicateによってフィルタリングされたNSTableViewを更新します
期待どおりにUIが更新されません。
アプリケーションは、iTunesと同様のビューを使用して「プロジェクト」を表示します。左側のソースリストを使用すると、右側のリスト(NSTableView)をフィルタリングできます。私のフィルターは、単純なフィールド(名前、文字列など)を調べているときに正しく更新されますが、配列(タグなど)は調べられません。
オブジェクトの1つ(「タグ」と呼ばれるNSMutableArrayフィールドから)からタグを削除していますが、テーブルのNSArrayControllerにバインドされている述語と一致しなくなったため、リストからタグが表示されなくなると思います。
ProjectBrowser.mm:
Project.mm:
私もこれを試しましたが、結果は同じです:
Interface Builderのセットアップ:
- ProjectBrowserオブジェクトはXIBのファイル所有者です
- NSArrayController(プロジェクトコントローラー)のコンテンツ配列は、「ファイルの所有者」にバインドされています。
- ProjectControllerのフィルタ述語は「File'sOwner」.filterにバインドされています
- NSTableViewの列は「ProjectController」.nameにバインドされています
objective-c - 一時コア データ属性の「対多」関係値の依存関係の設定
私は比較的複雑な Core Data 関係構造を持っており、さまざまな対多関係にわたって値の依存関係 (または観察) を設定する方法を理解しようとしています。いくつかの基本的な情報から始めましょう。生徒、課題、成績 (生徒 X 課題) を含む教室があります。簡単にするために、まだ割り当てにあまり集中する必要はありません。
各ScoreObjは、 StudentObjおよびAssignmentObjと一対一の関係にあります。
- ScoreObj には、数値成績、turnInDate、およびメモの実際の属性があります。
AssignmentObj.scores は、その課題の Score オブジェクトのセットです (N = すべての学生)。
- AssignmentObj には、name、dueDate、curveFunction、gradeWeight、および maxPoints の実際の属性があります。
StudentObj.scores は、その生徒の Score オブジェクトのセットです (N = すべての課題)。
- StudentObj には、name、studentID、email などの実際の属性もあります。
- StudentObj には、 gradeTotal という一時的な(計算された、保存されていない) 属性があります。
この最後の項目 gradeTotal は、本当のピクルスです。すべての課題のスコア (ScoreObj)、関連する課題の gradeWeights、曲線、maxPoints、およびその他のさまざまなものを使用して、学生の学期全体の成績を計算します。
このgradeTotal値は、すべての学生とその個々の課題の成績とともに、表の列に表示されます。gradeTotal の値を決定することは、特に大規模なクラスでは比較的コストのかかる操作であるため、必要な場合にのみ実行したいと考えています。簡単にするために、その gradeTotal 値をコア データ モデルに保存していません。どこかにキャッシュしてもかまいませんが、そのキャッシュをどこでどのように更新するのが最適かを判断するのにかなりの時間を費やしています。
gradeTotal に影響する値が変更されるたびに、各生徒に対してその計算を実行する必要があります。これが単純な 1 対 1 の関係であれば、keyPathsForValuesAffectingGradeTotalのようなものを使用できることはわかっていますが、それは多対 1 対多の関係に似ています。エレガントな(そしてKVCの正しい)ソリューションを知っている人はいますか?これらすべてのスコア オブジェクトと課題オブジェクトを破棄して、生徒をオブザーバーとして登録するように指示することができると思います。しかし、これは鈍い力のアプローチのようです。
objective-c - バインディングでウィンドウ コントロール (NSTextField、NSCheckbox など) を手動で更新する方法
すべての NSObject サブクラス プロパティを plist ファイルに保存し、ユーザーが保存して復元できるようにする必要があるアプリケーションに取り組んでいます。これをプロファイルと呼び、アプリケーションのウィンドウにあるすべてのコントロール/ビューの保存された状態を復元できます。
保存/復元の部分は完了しましたが、クラス プロパティを手動で更新しているときに、クラス プロパティにバインドされているチェックボックスなどのコントロールの状態が更新されないという問題があります。
KVC / KVOがプログラムで更新された場合、コントロールの状態を更新する方法を教えてください。
前もって感謝します
iphone - iPhone OS: 2 つの ManagedObject エンティティ間で KVO をセットアップする方法はありますか?
KVO とリンクしたいエンティティが 2 つあります。1 つはさまざまな統計を追跡する単一の statTracker クラスで、もう 1 つは実績に関する情報を含む実績クラスです。理想的には、達成クラスのインスタンスに statTracker クラスの値を監視させることで KVO を設定し、達成インスタンスを「トリガー」するしきい値を設定することです (この場合はトリガー)。 UIAlertView を表示し、アチーブメント クラスのプロパティを変更することを意味します。)
可能であれば、達成クラスのインスタンス化時にこれらの関係も設定したいと思います
このようなもの:
私がこれをどのように設定するか知っている人はいますか?私が見ていない関係を介してこれを行う方法はありますか?
ありがとう、
ニック
cocoa - Interface Builderではなくコードとしてcocoaバインディングを作成するにはどうすればよいですか?
私のモデルではNSMutableArray
、要素の数の変化を追跡するを取得しました。私の見解ではNSTextField
、要素の数を示すが表示されます。
ビューはnibファイルからアーカイブ解除され、モデルをalloc/initsします。したがって、モデルと含まれている配列について認識しています。
次のように接続を確立しました。テキストフィールドのInterfaceBuilderで、次のようなCocoaBindingの「パス」を追加しましたmyModell.myArray.@count
。これにより、count
プロパティにアクセスできます(配列自体は変更されないため、これは必須です)。
バインディングは、配列にアクセスできるようにモデルで確立したKey-Valueコンプライアンスに基づいています。しかし、Key-Valueコンプライアンスは問題の一部ではありません。
私の質問:バインディングをソースコードに入れて、 Interface Builderに書き込まないようにするにはどうすればよいですか?
iphone - 独自の KVO 準拠のセッター メソッドを記述したい場合、次のようになりますか?
そうですか?willChange... foobar didChange... ブロックによって KVO 通知が発生するのでしょうか?
cocoa - ネットで Key-Value-Coding および Key-Value-Observing セッション ビデオを知っていますか?
Apple だけがリソースではなく、多くの人が会議やプレゼンテーションで素晴らしいビデオを作成していることは知っています。
KVC や KVO に関するすばらしいビデオやポッドキャストを知っている人がいたら、教えてください。私はそれについてうれしいです!
編集:タイトルを変更して、これが実際にプログラミングに関連していることをより明確にしました。KVO / KVC / MVC != KFC
cocoa - mutableArrayValueForKeyとinsertObject:inEmployeesAtIndexの呼び出しの違い:直接
KVO準拠のメソッドを使用して配列からオブジェクトを挿入/削除することに関して質問があります。私はAaronHillegassのMacOSX用Cocoaプログラミングを使用していて、次のコード行を確認しました(insertObject:inEmployeesAtIndex:
メソッド内:
私が間違っている場合は訂正してください。しかし、私はいつも電話mutableArrayValueForKey:
してからremoveObjectAtIndex:
...と思っていたので、上記の行を次のように変更してみました。
そして、それは機能しませんでした。誰かが違いと、最初の行が機能するのに2番目の行が機能しない理由を説明できますか?
更新:コレクションクラス(NSMutableArrayのインスタンス)をKVCに準拠させるために、removeObjectFromEmployeesAtIndex:indexメソッドが実装されています。したがって、最終的には、呼び出しは最終的に呼び出す[[self mutableArrayValueForKey:@"employees"] removeObjectAtIndex:index];
必要があります[self removeObjectFromEmployeesAtIndex:index];
ios - UIViewがsuperViewから切り離されたときに通知を受け取るにはどうすればよいですか?
didRemoveFromSuperview
UIViewには" "や" "のようなメソッドがないようです。次に、willRemoveFromSuperview
UIViewがsuperViewから削除されたときにイベントをリッスンする方法は?KVOを使用する必要がありますか?前もって感謝します!
cocoa - NSMutabelSetのサブクラス化/拡張?
NSMutableSetをサブクラス化することは可能ですか?このセットに含まれるオブジェクトを保持しないために、これを行う必要があります。オブザーバーのセットを作成することを目的とし、それらを保持する必要はありません。
これを行うことは可能ですか、それとも別の解決策がありますか?
言うまでもなく、私はKVOを知っていますが、上記で説明したパターンの方が適しています。
乾杯、ルカシュ