我有一个 NSMutableDictionary, analyzedPxDictionary
,其中包含一堆 Pixel 对象(我创建的自定义类)。除其他外,Pixel 对象包含一个名为 的 NSArray 属性rgb
。该数组将始终包含三个 NSNumber 对象,其整数值对应于像素的 rgb 值。
我现在正在尝试枚举analyzedPxDictionary
using 快速枚举。但是,似乎我无法从循环中访问 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 的实例,它似乎不包含任何对象。
我相信我正在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]);
这成功地将正确的值打印到控制台。
那么为什么我不能rgb
从forin
循环内访问该属性呢?