У меня есть NSMutableDictionary, analyzedPxDictionary
, содержащий набор объектов Pixel (пользовательский класс, который я создал). Среди прочего, объекты Pixel содержат свойство NSArray с именем rgb
. Этот массив всегда будет содержать три объекта NSNumber с целочисленными значениями, соответствующими значениям rgb пикселя.
Я сейчас пытаюсь перечислить более 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]);
Это успешно выводит правильные значения на консоль.
Так почему я не могу получить доступ к свойству rgb
из цикла forin
?