NSArray SIGABRT

时间:2011-08-29 23:28:21

标签: ios uitableview nsarray sigabrt nsindexpath

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 个答案:

答案 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”的对象可能是字典而不是数组吗?这就是它在这里发生的事情。