NSArray SIGABRT - PullRequest
       26

NSArray SIGABRT

0 голосов
/ 30 августа 2011
NSString* year = [self.years objectAtIndex:[indexPath section]];

//get algorithms for that year
NSArray* algorithmSection = [self.algorithmNames objectForKey:year];

NSLog(@"%@", indexPath);

//get specific algorithm based on that row
cell.textLabel.text = [algorithmSection objectAtIndex:indexPath.row];

return cell;

По какой-то причине, когда я компилирую это, я получаю ошибку SIGABRT. Это происходит на

cell.textLabel.text

линия. Ошибка:

2011-08-29 19: 26: 21.273 xxxxxxxxxxx [1431: b303] 2 индекса [0, 0]

2011-08-29 19: 26: 21.274 xxxxxxxxxxxxx [1431: b303] - [__NSCFDictionary objectAtIndex:]: нераспознанный селектор, отправленный экземпляру 0x4ba2370

2011-08-29 19: 26: 21.277 xxxxxxxxx [1431: b303] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [__ NSCFDictionary objectAtIndex:]: нераспознанный селектор отправлен экземпляр 0x4ba2370 ' завершить, вызвав выбрасывание исключения

Ответы [ 3 ]

1 голос
/ 30 августа 2011

Как сказали Лемнар и Мисавай, вы на самом деле имеете дело с NSDictionary.

Способ исправить это зависит от контекста вашего приложения.Если вам случится получить объекты NSArrays или NSDictionary, вы можете определить это, отправив текстовое сообщение классу объекта.

т.е.

if ([algorithmSection isKindOfClass:[NSArray class]]) {
  ...
} else if ([algorithmSection isKindOfClass:[NSDictionary class]]) {
  ...
}
1 голос
/ 30 августа 2011

Ваша переменная algorithmSection, которую ваш код ожидает NSArray, на самом деле является NSDictionary, которая не отвечает на селектор -objectAtIndex:.

0 голосов
/ 30 августа 2011

Может ли объект с ключом "year" в вашем словаре алгоритм алгоритмов быть словарем вместо массива? Вот как это происходит здесь.

...