問題タブ [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.
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がプログラムで更新された場合、コントロールの状態を更新する方法を教えてください。
前もって感謝します
cocoa - Interface Builderではなくコードとしてcocoaバインディングを作成するにはどうすればよいですか?
私のモデルではNSMutableArray
、要素の数の変化を追跡するを取得しました。私の見解ではNSTextField
、要素の数を示すが表示されます。
ビューはnibファイルからアーカイブ解除され、モデルをalloc/initsします。したがって、モデルと含まれている配列について認識しています。
次のように接続を確立しました。テキストフィールドのInterfaceBuilderで、次のようなCocoaBindingの「パス」を追加しましたmyModell.myArray.@count
。これにより、count
プロパティにアクセスできます(配列自体は変更されないため、これは必須です)。
バインディングは、配列にアクセスできるようにモデルで確立したKey-Valueコンプライアンスに基づいています。しかし、Key-Valueコンプライアンスは問題の一部ではありません。
私の質問:バインディングをソースコードに入れて、 Interface Builderに書き込まないようにするにはどうすればよいですか?
php - 客観的なPHPとキーバリューコーディング
私のコードのある部分では、次のようなものが必要です。
言い換えれば、私は一種のKVCが必要です-実行時に生成されたフィールド名でオブジェクトフィールドを取得することを意味します。既存のシステムを拡張し、フィールドの命名規則を維持する必要があるだけなので、代わりにフィールド名を変更するようにアドバイスしないでください。
次の方法で簡単に実行できる場合、このようなものが配列で機能することを私は知っています。
したがって、配列のキーを動的に生成できます。しかし、オブジェクトに対してそれを行う方法は?グーグルが配列などの結果の川を私に与えるので私を助けてください...ありがとう
cocoa - ネットで Key-Value-Coding および Key-Value-Observing セッション ビデオを知っていますか?
Apple だけがリソースではなく、多くの人が会議やプレゼンテーションで素晴らしいビデオを作成していることは知っています。
KVC や KVO に関するすばらしいビデオやポッドキャストを知っている人がいたら、教えてください。私はそれについてうれしいです!
編集:タイトルを変更して、これが実際にプログラミングに関連していることをより明確にしました。KVO / KVC / MVC != KFC
iphone - この KVC 検証メソッドのタイプは重要ですか?
たとえば、ドキュメントでは、KVC スタイルの検証メソッドは次のように実装されています。
彼らは id* を ioValue の型として使用しました。これはメソッド シグネチャの一部ではないため、次のようなことをすると問題があるのではないかと思います。
これはKVCでも問題ありませんか?
objective-c - NSArrays の NSArrays を使用した KVC
KVC を使用したい配列の配列があります (少なくとも私はそう思います - 最も簡単な方法のようです) が、個々の配列インデックスのキーパスを作成する方法がわかりません。私の配列は次のようになります
NSArray [
NSArray[0, 1, 2, 3], NSArray[4, 5, 6, 7], NSArray[8, 9, 10, 11]
]
私がやりたいことは、内側の配列でインデックス 3 の最大値を取得することです。[outerArray valueForKey:@"@max.[3]"] のようなものが機能するようですが、構文がわかりません。また、グーグルも役に立ちませんでした。私がやろうとしていることは可能ですか、それとも手動でこれを行う方法を書くべきですか?
iphone - UIScrollView がキー ビューのキー値コーディングに準拠していない
したがって、この SO question Hereに従って、2 つの新しいファイル セットを作成しました。
では、.mファイルのアウトレットが接続されJCScrollViewController.xib
たスクロールビューだけがあり、ビューアウトレットはビューに接続されています。scrollView
はJCScrollViewController.m
に準拠していUIScrollViewDelegate
ます。
私のアプリデリゲートでは、これを行います:
でJCScrollViewController.m
私はこれを行い-viewDidLoad
ます:
アプリを起動すると、次のエラーが表示されます。
これは何が原因でしょうか?
ありがとう
cocoa - CocoaKey-Valueコーディングと逆の関係のプロパティ
私は、KVCメカニズムが、相互に逆の関係である関係プロパティを処理するときに何らかの助けを提供するかどうかを理解しようとしています。考案された標準的な部門/従業員の例を使用します。
これだけ(および省略されたKVC収集メソッド)で、KVCは両方向の関係を管理するためにどのようなヘルプを提供しますか?私は今、概念的な段階にあります。Core Dataを使用すると、明示的な逆の関係を設定できるため、を使用する[myDepartment insertObject:newEmployee inEmployeesAtIndex:lastIndex];
とnewEmployee.department
自動的にに設定されmyDepartment
ますが、KVCとランタイムのみでこれを実現できますか、それともCore Dataが必要ですか?
助けてくれてありがとう。
編集やや無関係ですが、重要です。私のコードでは、従業員のプロパティを部門にあるものとして配置しましretain
たが、これによって保持サイクルが発生するかどうか疑問に思っていますか?