問題タブ [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.
cocoa - 挿入/削除のために NSTreeController のバインドされた CoreData エンティティを観察する
独自のバインド可能なカスタム ツリービューを作成しています。そのために、アイテムの対多関係の更新について NSTreeController を観察したいと思います。NSTreeController は CD 管理オブジェクト コンテキストにバインドされます。すべての深度レベルには、親/子/isLeaf プロパティを持つ独自の CD エンティティがあります。ビュー(およびアイテムの子の順序)で同じ階層を維持する必要があります。何かが挿入されると、その children プロパティの監視を開始します。もちろん、新しく挿入されたオブジェクトのインデックスパスを知る必要があります。
何が挿入/削除されたかを正確に知りたいので、その子への挿入/削除を監視し始めることができます。私が理解しているように、これを行う標準的な方法は、observeValue:forKey... 内の「変更」NSDictionary を調べることですが、変更は NULL です。
これは長年のバグであることは知っていますが、良い回避策はありますか? いくつかの例のビューが配列を保存し、モデルが変更されたときに違いを比較するのを見てきました。ツリービューの場合はより複雑です。また、この方法ではメモリと CPU サイクルが無駄になります。私がテストしている回避策が 1 つあります。それはちょっとうまくいくので、まだ説明しません。
python - 範囲を持つpyobjcインデックス付きアクセサーメソッド
KVC ガイドに従って、モデル クラスのインデックス付きアクセサー メソッドを Python で実装しようとしています。オプションの ranged メソッドを使用して、パフォーマンス上の理由から一度に複数のオブジェクトをロードしたいと考えています。このメソッドは、メソッドがオブジェクトをコピーする必要がある C 配列バッファーへのポインターを受け取ります。次のようなことを試しましたが、うまくいきません。どうすればこれを達成できますか?
編集: Appleがすべてのドキュメントを移動した後、私は最終的に型エンコーディングの参照を見つけました。それを読んだ後、私はこれを試しました:
しかし、これもうまくいかないようでした。最初の引数は C 配列へのポインターであるはずですが、長さは実行時まで不明であるため、正しい型エンコーディングを構築する方法が正確にはわかりませんでした。私は'v@:N^[1000@]@'
ただ見ようとしましたが、それもうまくいきませんでした。
モデル オブジェクトは、テーブル ビューを駆動する NSArrayController の contentArray にバインドされています。おそらく、ブリッジが提供している署名とは異なる署名を期待しているため、このメソッドをまったく呼び出していないようです。助言がありますか?
iphone - KVC 生成配列の範囲外
次のような他のオブジェクトの階層からオブジェクトの配列を作成しようとしています:
コード 1:
コード 2:
最初のコード スニペットは完全に機能し、人の名前の配列を返します。対照的に、2 番目は正しい数の人の名前を含む配列を返しますが、XCode でコードをデバッグすると、「範囲外」と表示されます。それらのいずれかにアクセスしようとすると、アプリは次のように終了します。
キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '*** -[NSCFSet objectAtIndex:]: 認識されないセレクターがインスタンス 0x72e0620 に送信されました'
リスト、人物は、それが重要な場合、コアデータ管理オブジェクトです..何が間違っているのですか???
objective-c - KVC: 既存のキーをテストする方法
KVC について少し助けが必要です。
操作コンテキストについてのいくつかの言葉:
1) iPhone は (クライアント) を webService に接続してオブジェクトを取得します。
2) JSON を使用してデータを転送しています。
3) クライアントがまったく同じオブジェクト マッピングを持っている場合、JSON から NSDictionary を繰り返し処理して、データを永続ストア (coreData) に格納できます。そのために、次のコード フラグメントを使用しています (すべてのデータが NSString であると仮定します)。
今私の問題....
4) サーバーが 1 つの新しいプロパティを持つオブジェクトの新しいバージョンを実装するとどうなりますか? データをクライアントに転送し、クライアントが保存バージョン レベルでない場合 (つまり、「古い」オブジェクト マッピングをまだ使用しているということです) '存在しないキーに値を割り当てようとします...そしてメッセージが表示されます:
エンティティ「myOldObject」は、キー「myNewKey」のキー値コーディングに準拠していません
オブジェクトにキーが存在するかどうかをテストする方法を教えてください。キーが存在する場合、エラーメッセージを回避して値の更新に進むことができますか?
コンテキストの説明で少し混乱していたら申し訳ありません。
ありがとう
ダリオ
objective-c - valueForKeyPath で配列要素を取得する
NSArray
で要素にアクセスする方法はありますvalueForKeyPath
か? たとえば、Google のリバース ジオコーダー サービスは、非常に複雑なデータ構造を返します。都市を取得したい場合は、次のように 2 つの呼び出しに分割する必要があります。
objectAtIndex:
呼び出しを文字列にシューホーンする方法があるかどうか疑問に思っていvalueForKeyPath
ます。@"Placemark[0].address" のような JavaScript 風の定式化を試みましたが、ダイスはありませんでした。
iphone - キーが@記号を開始する場合、NSDictionaryでvalueForKeyPathを使用しますか?
valueForKeyPath
で使用したいのですNSDictionary
が、問題は、キーの1つが@記号で始まる文字列であるということです。キーの名前を制御することはできません。
@記号をエスケープしようとしても、フォーマット例外が発生するため、キーパスを作成しようとすると問題が発生します。
これは正常に機能します。
ただし、これらはいずれも機能しません。
何か案は?
ありがとう、
マイク
objective-c - ObjCの#typedefとKVC
私は次のようなクラスを持っています:
ここで、NSNumberBoolはtypedefです。
prop1およびprop2プロパティを作成するために必要なすべての@propertyおよび@synthesize宣言があります。
[myProperties valueForKey:@ "prop2"]でprop2にアクセスしようとするまで、すべてがコンパイルされ、正常に機能しました。これにより、「クラスはKey-Valueに準拠していません」というエラーが発生します。ただし、多くの同様の呼び出しは正常に機能します。
ここで何が起こっているのですか、どうすれば修正できますか?
ありがとう、
java - Javaの「キーと値のコーディング」
Apple の Objective-C には、ファイルシステム パスに似た文字列を使用してオブジェクト グラフをトラバースできる「キー値コーディング」と呼ばれるものがあります。オブジェクトが要求された「キー」に基づいて値を返すことを可能にする非公式のプロトコル (つまりインターフェース) があります。たとえば、デフォルトでは、キーによって名前が付けられたフィールドの値が返されますが、NSDictionaries などのリレーショナル コレクションは、より興味深い動作を実装できます。
疑似コードの例:
Javaにこのようなものはありますか?実装するのは簡単ですが、最初に見てみようと思いました。
iphone - NSDecimal、NSDecimalNumber、CFNumberの間の正しい選択は何ですか?
NSDecimal、NSNumber、NSNumberDecimal、CFNumberについてたくさん読んだことがありますが、それは私にとって一種のジャングルになり始めています。
基本的に、私は次のような単純な計算を処理する単純なモデルクラスを作成しようとしています。
このような他のクラスをたくさん持つ予定であり、キー値コーディングを行うためのフィールドのリストのみを保持しているため、これらのメソッドとセッターに文字列として名前を付けてアクセスしたいと思います。
これは不可能でperformSelector:
あり、オブジェクトを返すため、オブジェクトをcapitalizedAmount
返す必要があることを理解しています。NSInvocation
comp.langのObjective-CFAQの内容と関連部分を読みました。
また、使用する必要があることも理解していますNSDecimalNumber
が、知りたいことが2つあります。
- やや複雑なクラス(UITableViewに表示されるこの種の財務計算のみ)では、メモリのオーバーヘッドとパフォーマンスの低下は許容できますか?私はCのバックグラウンドがあまりありません...
- のような機能を使うのは面倒で複雑すぎません
decimalNumberByAdding:
か?__add__
Pythonを使用すると、オブジェクトで演算子を使用するように定義するのは簡単でした。からfloat値を取得する必要があります。次に、計算を実行して、 ?NSDecimalNumber
でラップされた結果を返します。NSDecimalNumber
この問題にどのように対処しますか?
シンプルで美しい解決策を探しています!
同じ分野でのもう1つの質問:iPhone Core FoundationCFBoolean
のオブジェクトラッパーですか?BOOL
ご助力ありがとうございます!
cocoa - Cocoa Key Value Bindings: Controller Key のさまざまなオプションの説明は?
Interface Builder を使用してコントロールを NSArrayController にバインドすると、バインディング インスペクタの [Controller Key] フィールドの下にさまざまなオプションが表示されます。
「arrangedObjects」とは何かを理解し、「選択」とは何かをある程度理解していますが、すべてのオプションとそれぞれをいつ使用するかについての本当に良い説明を見たいと思っています。リストには、selectionIndexes、selectionIndex、selectedObject、sortDescriptors などがあります。これらのオプションの適切な説明を見つけることができませんでした。
ターゲット > 選択にバインドされているボタンに問題があるため、これらのコントローラー キーをより深く理解することが問題のデバッグに役立つことを願っています。
ありがとう!!!