0
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”终止称为抛出异常

4

3 回答 3

1

正如 lemnar 和 mjisawai 所说,您实际上是在处理 NSDictionary。

解决此问题的方法取决于您的应用程序的上下文。如果您碰巧收到 NSArrays 或 NSDictionary 对象,那么您可以通过向对象的类发送短信来确定这一点。

IE

if ([algorithmSection isKindOfClass:[NSArray class]]) {
  ...
} else if ([algorithmSection isKindOfClass:[NSDictionary class]]) {
  ...
}
于 2011-08-30T01:05:12.957 回答
1

你的algorithmSection变量,你的代码期望是一个NSArray,实际上是一个NSDictionary,它不响应选择器-objectAtIndex:

于 2011-08-29T23:31:29.230 回答
0

algorithmSections 字典中键“year”处的对象可以是字典而不是数组吗?这就是这里发生的事情。

于 2011-08-29T23:34:08.327 回答