我有一个NSMutableDictionary,analyzedPxDictionary
,包含一堆Pixel对象(我创建的自定义类)。除此之外,Pixel对象包含名为rgb
的NSArray属性。该数组将始终包含三个NSNumber对象,整数值对应于像素的rgb值。枚举通过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的实例,它似乎不包含任何对象。
我相信我正确初始化了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