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' 终止调用抛出异常
答案 0 :(得分:1)
您的代码期望为algorithmSection
的{{1}}变量实际上是NSArray
,它不响应选择器NSDictionary
。
答案 1 :(得分:1)
正如lemnar和mjisawai所说,你实际上正在处理一个NSDictionary。
解决此问题的方法取决于您的应用的上下文。 如果你碰巧收到了NSArrays或NSDictionary对象,那么你可以通过发短信给对象的类来确定它。
即
if ([algorithmSection isKindOfClass:[NSArray class]]) {
...
} else if ([algorithmSection isKindOfClass:[NSDictionary class]]) {
...
}
答案 2 :(得分:0)
algorithmSections字典中键“year”的对象可能是字典而不是数组吗?这就是它在这里发生的事情。