問題タブ [kvc]
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 - KVC準拠のクラス
iOSドキュメントでKVC準拠を読み取る場合。クラスをテストしようとしました。KVCクラスは準拠していますか?
しかし、私はいくつかの質問があります:
プロパティ「Name」、「Age」のセッターはなく、クラスは引き続きエラーなしでKVCを使用しており、例外は発生しません。
プロパティのセッターが作成されていない場合、コンパイラーは何をしますか?セッターとゲッターのペアを作成しますか?
Person.h
Person.m
ViewController.m
/li>
ボタンを押すと、結果は次のようになります。年齢:10、名前:DucNguyen。この場合、クラスがKVCをどのように使用できるかわかりませんか?
ios - カスタムセルの監視
カスタムセルを監視するためにオブザーバー(KVO)を追加しようとしています。セルが選択されると、イベントの通知を受け取る必要があります。私のコード:
colMainはcollectionViewの略です。プロパティとしてcustomCellがないため、どのように行うのかよくわかりません。そうしないと、コンパイルされません。何か案は?
ios - コレクションを含むコレクションに対する NSPredicate Query (KVC)
編集(詳細のレイヤーを見逃しました):各教師には一連のクラスがあります。(JSON もバリデーターで実行したので、少し読みやすくなっています) 次の JSON を想定します。
つまり、学校の配列があり、各学校には教師の配列が含まれ、各教師にはクラスの配列が含まれています。(JSON の正確なフォーマットが正しくない場合は申し訳ありません。これは理論上のモデルです。NDA の要件により、実際のモデルを明らかにすることはできません。実際のモデルは健全です。)
NSPredicate と KVC を使用してこのコレクションを検索し、「History」という名前のすべてのクラス名を取得する必要があります。いくつかの異なる方法で実行しようとしましたが、空になります。例えば:
しかし、私は空っぽに戻ってきます。私が試みていることは、KVC が実行できることに対して複雑すぎますか? classNames を検索する前に、各学校を反復処理してから、各教師を反復処理する必要がありますか? または、やりたいことが可能である場合、何が欠けていますか?
ありがとう。
java - オブジェクトの属性を効率的に取得するか、クラス属性の宣言を強制する
背景設定
Android で Web サービス データにアクセスしてキャッシュするためのライブラリを作成しようとしていますが、問題が発生しました。
ライブラリによって管理されるすべてのオブジェクトは、基本Entity
クラスから継承されます。の任意の派生クラスは、他のフィールドまたは属性Entity
を *宣言できます。
Entity
基本クラスは、キャッシュ (SQLite またはファイル) または Web サービス (REST または SOAP) から読み取られる属性を返す役割を担います。私の現在の実装では、クラスはリフレクションを使用してこれを実行します。注釈Entity
でマークされたすべてのクラス フィールド名を読み取ります。@Attribute
問題
私の実装で抱えている問題は次のとおりです。Entity
のような関数を使用してすべての の属性を要求するたびstatic Set<String> getAttributes()
に、この関数は実装を作成する必要がありますSet
(現在HashSet
、高速ルックアップのために使用しています)。
Set<String>
すべての属性のリクエストが行われるたびに を割り当てて初期化することは避けたいと思います。
私の見解では、属性セットはオブジェクトEntity
ではなく、クラス全体に固有のものです。Entity
つまりclass Customer extends Entity
、すべてのCustomer
インスタンスがまったく同じ属性を持ち、それぞれに名前、アドレスなどがあります。
これに対する私の現在の試みは、次のように、クラスのブロックでリフレクションを使用しstatic Set<String> attributes
て拡張Entity
および初期化するすべてのクラスでa を宣言することです。Set
static
初期化するクラスが与えられると、クラスはそのクラスとその基底クラスの注釈でEntity
マークされたすべてのフィールドを検索できます(たとえば、クラスに対して宣言された属性とクラスから継承された属性でセットを埋めます)。@Attribute
Customer extends Person
Person extends Entity
Customer.attributes
Customer
Person
私が抱えている問題は、attributes
拡張するクラスに対してセットが定義されていない可能性がありEntity
、コンパイル時にそれを強制したいということです。
Serializable
Eclipse のインターフェースでこれが行われているのを見てきました。 を実装するクラスを作成すると、クラスSerializable
が[private] static final long serialVersionUID
.
質問
クラスがフィールドを宣言していない場合、クラスにそのSerializable
動作を強制し、警告または (より良い) エラーを表示する方法はありますか?Entity
Entity
派生クラスの属性名を返す別の方法はありますか?
脚注
*ライブラリによって管理されるべきではないオブジェクト プロパティの用語と、ライブラリによって管理されるべきオブジェクト プロパティ (Web サービスまたは SQLite/ファイル キャッシュから読み取られ、Web サービスまたは SQLite で永続化される)の用語を使用しました。 /ファイルキャッシュ)field
attribute
編集1
基本的に、私が達成しようとしているのは、一連のEntity
の属性* (上記の脚注を参照) を効率的な方法で取得することです。このリストは、ヘルパー クラスがオブジェクト値をデータベースに格納する (CREATE TABLE
クエリは属性名と型から推測できます) か、Web サービスに送信するために使用されます。
このライブラリは、Web サービスから値をキャッシュし、ローカル データベース (追加のユーザー入力値が含まれている可能性があり、オブジェクトのサーバー更新値が欠落している可能性があります) を Web サービス経由でアクセス可能なデータと同期するために使用されます。アプリケーションでのフィールドごとのアクセサー/ミューテーターの使用を汎用アクセサー/ミューテーターに置き換えることは意図されていません。
この概念はキー値コーディングとして知られており、多くのフレームワークやライブラリで使用されています。例として、Google 検索で見つけた KVC を使用するライブラリの最初の 2 つの例は、Cocoa と Sproutcore です。参考文献: Apple 開発者ドキュメントおよびSproutcore wiki。
KVC は Android 開発でも使用されます。Bundle
、KVC を多用しますSQLiteCursor
。ContentValues
ios - Objective-C KVC はプロパティのタイプを変更します
私はObjective-cが初めてです。KVC の知識を実践するために、辞書をオブジェクトに変換する簡単な方法を書いています。
そして単純なクラス:
そして、次のコードでメソッドを実行します:
私の質問は、setValue:forKey: を介してプロパティに間違った型 (NSDate である必要がありますが、実際には NSString である必要があります) の値を与えることです。しかし、実行時または XCode で例外が発生しないのはなぜですか? プロパティ dateTime はどのように NSString 値を受け入れることができますか?
objective-c - ios、KVC、countOf を呼び出さないのはなぜですか[[MyObject valueForKey:"MyArray" ] count] を呼び出したとき
...................
私の手順:
1) MyObject.hにproperty
forを作成します。NSArray* arrs
2) MyObject.m で
3) テストコード
私の質問:
countOfArrs
私はそれが自動的に呼び出されることを期待していobjectInArrsAtIndex:
ますが、そうではありませんでした。通常の NSArray を返し、カウント数を 1 と 'abc' で表示するだけです。
役立つサンプルが見つかりませんでした。または、ドキュメントの内容を誤解している可能性がありますね。
私のタング語は英語ではありません。
objective-c - スーパークラスの NSInteger プロパティに基づいて NSPredicate でオブジェクトの配列をフィルタリングする
次のセットアップがあります。
と
item_id に基づいて単一のアイテムを取り出したい Category インスタンス (「categories」と呼ばれる) を含む配列があります。そのために使用するコードは次のとおりです。
これにより、次のエラーが発生します。
*キャッチされない例外 'NSUnknownKeyException' が原因でアプリを終了しています。理由: '[ valueForUndefinedKey:]: このクラスは、キー item_id のキー値コーディングに準拠していません。
どうすればこれを修正できますか?何が間違っていますか? プロパティが合成され、Category インスタンスで item_id プロパティにアクセスして正常に設定できます。
ios - iOS キー値コーディング
name というプロパティを持つ person 型のオブジェクトがあるとします。
これは非常にうまく機能します。私がやりたいことは、より深く掘り下げることです。クラス person には、クラス Address の address という別のプロパティがあり、zipcode というフィールドがあるとします。
これよりも人から郵便番号を割り当てる簡単な方法はありますか? たぶん、よりクリーンでクリアなものですか?
objective-c - setValuesForKeysWithDictionary の引数バージョン
Objective-C でメソッドのすべての引数をクラスのプロパティとして設定する簡単な方法はありますか? setValuesForKeysWithDictionary に似ていますが、「setValuesForKeysWithArguments」に沿ったものですか?
偽の例: