私はNSMutableDictionary、analyzedPxDictionary
を持っていて、たくさんのPixelオブジェクト(作成したカスタムクラス)を含んでいます。ピクセルオブジェクトには、rgb
というNSArrayプロパティが含まれています。この配列には、常にピクセルのrgb値に対応する整数値を持つ3つのNSNumberオブジェクトが含まれます。NSMutableDictionaryを列挙する - ループ内からオブジェクトのプロパティにアクセスできません
私は現在、高速列挙を使用してanalyzedPxDictionary
を列挙しようとしています。しかし、ループ内からPixelオブジェクトのプロパティにアクセスできないようです。 rgb
は合成されたプロパティであると宣言しており、ドット構文を使ってアクセスできます。しかし、私は私に次のようなエラーを与えて、ループ内からそのプログラムがクラッシュをしようとすると:
'-[NSCFString rgb]: unrecognized selector sent to instance 0xa90bb50'
ここでは、そのエラーを生成するコードの例です:
for (Pixel *px in analyzedPxDictionary) {
printf("r: %i, g: %i, b: %i",[[px.rgb objectAtIndex:0] integerValue], [[px.rgb objectAtIndex:1] integerValue], [[px.rgb objectAtIndex:2] integerValue]);
}
printf
行にブレークポイントを設定して、px
を検査しようとしました。 rgb
は、そのプロパティがNSArrayのインスタンスとして正しく記述されている場合は1として表示されますが、オブジェクトは含まれていないようです。
私はrgb
を正しく初期化していると思います。説明するには、次のコードを検討してください:
NSString *key;
for (Pixel *px in analyzedPxDictionary) {
key = [px description];
}
Pixel *px = [analyzedPxDictionary objectForKey:key];
printf("\nr: %i, g: %i, b: %i",[[px.rgb objectAtIndex:0] integerValue], [[px.rgb objectAtIndex:1] integerValue], [[px.rgb objectAtIndex:2] integerValue]);
これで、コンソールに正しい値が正常に印刷されます。
なぜforin
ループ内からrgb
プロパティにアクセスできないのですか?
ありがとう。簡単な修正を愛する必要があります:) – maxedison