1

CLBeaconRegion経由で配列を追加することは可能setValue forKeyですか?

私はそれを追加しようとしました:

[regionAdvert setValue:haveArray forKey:@"advertArray"];

しかし、次のエラーだけが表示されます。

> Terminating app due to uncaught exception 'NSUnknownKeyException',
> reason: '[<CLBeaconRegion 0x15379600> setValue:forUndefinedKey:]: this
> class is not key value coding-compliant for the key advertArray.'
4

2 に答える 2

1

setValue:forKey:は、基本的にすべてのクラスで使用できるKVCメソッドですが、何でも渡すことができるわけではありません。使用するキーは、既存のプロパティである必要があります (実際には、それが呼び出されるメソッド、または処理された存在しないキーです)。とにかく、ポイントは、キーを設定する前にキーが存在することを知っておく必要があるということです。

技術的には、 を使用objc_setAssociatedObjectして任意のオブジェクトを他のオブジェクトに関連付けることができますが、この場合は代わりにmajorおよびminorプロパティを使用して、アラートの表示方法を決定する前に領域の目的を確認することをお勧めします。

于 2013-10-21T19:09:50.613 に答える
1

いいえ、できません。他のデータを CLBeaconRegion に関連付ける場合は、NSDictionary などの他のデータ構造を使用できます。各 CLBeaconRegion は一意の「識別子」文字列で構成されているため、この識別子を NSDictionary へのキーとして使用して、他の任意のデータ オブジェクトを格納できます。

また、一度構築された CLBeaconRegion を変更することは想定されていません。フィールドは不変です。これは大したことではありません。フィールドは 3 つしかありません。保持したい古い CLBeaconRegion から識別子をコピーして、新しい CLBeaconRegion を作成するだけです。

于 2013-10-22T03:11:20.897 に答える