問題タブ [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.

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

objective-c - KVC準拠のクラス

iOSドキュメントでKVC準拠を読み取る場合。クラスをテストしようとしました。KVCクラスは準拠していますか?

しかし、私はいくつかの質問があります:

  1. プロパティ「Name」、「Age」のセッターはなく、クラスは引き続きエラーなしでKVCを使用しており、例外は発生しません。

  2. プロパティのセッターが作成されていない場合、コンパイラーは何をしますか?セッターとゲッターのペアを作成しますか?

    Person.h

    Person.m

    ViewController.m

    /li>

ボタンを押すと、結果は次のようになります。年齢:10、名前:DucNguyen。この場合、クラスがKVCをどのように使用できるかわかりませんか?

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

ios - カスタムセルの監視

カスタムセルを監視するためにオブザーバー(KVO)を追加しようとしています。セルが選択されると、イベントの通知を受け取る必要があります。私のコード:

colMainはcollectionViewの略です。プロパティとしてcustomCellがないため、どのように行うのかよくわかりません。そうしないと、コンパイルされません。何か案は?

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

ios - コレクションを含むコレクションに対する NSPredicate Query (KVC)

編集(詳細のレイヤーを見逃しました):各教師には一連のクラスがあります。(JSON もバリデーターで実行したので、少し読みやすくなっています) 次の JSON を想定します。

つまり、学校の配列があり、各学校には教師の配列が含まれ、各教師にはクラスの配列が含まれています。(JSON の正確なフォーマットが正しくない場合は申し訳ありません。これは理論上のモデルです。NDA の要件により、実際のモデルを明らかにすることはできません。実際のモデルは健全です。)

NSPredicate と KVC を使用してこのコレクションを検索し、「History」という名前のすべてのクラス名を取得する必要があります。いくつかの異なる方法で実行しようとしましたが、空になります。例えば:

しかし、私は空っぽに戻ってきます。私が試みていることは、KVC が実行できることに対して複雑すぎますか? classNames を検索する前に、各学校を反復処理してから、各教師反復処理する必要がありますか? または、やりたいことが可能である場合、何が欠けていますか?

ありがとう。

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

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 を宣言することです。Setstatic

初期化するクラスが与えられると、クラスはそのクラスとその基底クラスの注釈でEntityマークされたすべてのフィールドを検索できます(たとえば、クラスに対して宣言された属性とクラスから継承された属性でセットを埋めます)。@AttributeCustomer extends PersonPerson extends EntityCustomer.attributesCustomerPerson

私が抱えている問題は、attributes拡張するクラスに対してセットが定義されていない可能性がありEntity、コンパイル時にそれを強制したいということです。

SerializableEclipse のインターフェースでこれが行われているのを見てきました。 を実装するクラスを作成すると、クラスSerializable[private] static final long serialVersionUID.

質問

クラスがフィールドを宣言していない場合、クラスにそのSerializable動作を強制し、警告または (より良い) エラーを表示する方法はありますか?Entity

Entity派生クラスの属性名を返す別の方法はありますか?

脚注

*ライブラリによって管理されるべきではないオブジェクト プロパティの用語と、ライブラリによって管理されるべきオブジェクト プロパティ (Web サービスまたは SQLite/ファイル キャッシュから読み取られ、Web サービスまたは SQLite で永続化される)の用語を使用しました。 /ファイルキャッシュ)fieldattribute

編集1

基本的に、私が達成しようとしているのは、一連のEntityの属性* (上記の脚注を参照) を効率的な方法で取得することです。このリストは、ヘルパー クラスがオブジェクト値をデータベースに格納する (CREATE TABLEクエリは属性名と型から推測できます) か、Web サービスに送信するために使用されます。

このライブラリは、Web サービスから値をキャッシュし、ローカル データベース (追加のユーザー入力値が含まれている可能性があり、オブジェクトのサーバー更新値が欠落している可能性があります) を Web サービス経由でアクセス可能なデータと同期するために使用されます。アプリケーションでのフィールドごとのアクセサー/ミューテーターの使用を汎用アクセサー/ミューテーターに置き換えることは意図されていません。

この概念はキー値コーディングとして知られており、多くのフレームワークやライブラリで使用されています。例として、Google 検索で見つけた KVC を使用するライブラリの最初の 2 つの例は、Cocoa と Sproutcore です。参考文献: Apple 開発者ドキュメントおよびSproutcore wiki

KVC は Android 開発でも使用されます。Bundle、KVC を多用しますSQLiteCursorContentValues

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

ios - Objective-C KVC はプロパティのタイプを変更します

私はObjective-cが初めてです。KVC の知識を実践するために、辞書をオブジェクトに変換する簡単な方法を書いています。

そして単純なクラス:

そして、次のコードでメソッドを実行します:

私の質問は、setValue:forKey: を介してプロパティに間違った型 (NSDate である必要がありますが、実際には NSString である必要があります) の値を与えることです。しかし、実行時または XCode で例外が発生しないのはなぜですか? プロパティ dateTime はどのように NSString 値を受け入れることができますか?

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

objective-c - ios、KVC、countOf を呼び出さないのはなぜですか[[MyObject valueForKey:"MyArray" ] count] を呼び出したとき

...................

私の手順:

1) MyObject.hにpropertyforを作成します。NSArray* arrs

2) MyObject.m で

3) テストコード

私の質問:

countOfArrs私はそれが自動的に呼び出されることを期待していobjectInArrsAtIndex:ますが、そうではありませんでした。通常の NSArray を返し、カウント数を 1 と 'abc' で表示するだけです。

役立つサンプルが見つかりませんでした。または、ドキュメントの内容を誤解している可能性がありますね。

私のタング語は英語ではありません。

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

objective-c - スーパークラスの NSInteger プロパティに基づいて NSPredicate でオブジェクトの配列をフィルタリングする

次のセットアップがあります。

item_id に基づいて単一のアイテムを取り出したい Category インスタンス (「categories」と呼ばれる) を含む配列があります。そのために使用するコードは次のとおりです。

これにより、次のエラーが発生します。

*キャッチされない例外 'NSUnknownKeyException' が原因でアプリを終了しています。理由: '[ valueForUndefinedKey:]: このクラスは、キー item_id のキー値コーディングに準拠していません。

どうすればこれを修正できますか?何が間違っていますか? プロパティが合成され、Category インスタンスで item_id プロパティにアクセスして正常に設定できます。

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

ios - iOS キー値コーディング

name というプロパティを持つ person 型のオブジェクトがあるとします。

これは非常にうまく機能します。私がやりたいことは、より深く掘り下げることです。クラス person には、クラス Address の address という別のプロパティがあり、zipcode というフィールドがあるとします。

これよりも人から郵便番号を割り当てる簡単な方法はありますか? たぶん、よりクリーンでクリアなものですか?

0 投票する
0 に答える
284 参照

objective-c - setValuesForKeysWithDictionary の引数バージョン

Objective-C でメソッドのすべての引数をクラスのプロパティとして設定する簡単な方法はありますか? setValuesForKeysWithDictionary に似ていますが、「setValuesForKeysWithArguments」に沿ったものですか?

偽の例: