-[__NSArrayM objectAtIndex:]: 索引 11 超出界限 [0 .. 10]' 目标 c

Posted

技术标签:

【中文标题】-[__NSArrayM objectAtIndex:]: 索引 11 超出界限 [0 .. 10]\' 目标 c【英文标题】:-[__NSArrayM objectAtIndex:]: index 11 beyond bounds [0 .. 10]' objective c-[__NSArrayM objectAtIndex:]: 索引 11 超出界限 [0 .. 10]' 目标 c 【发布时间】:2017-03-06 11:13:27 【问题描述】:

大家好,if(indexPath.row==3) 部分的所有问题是 -[__NSArrayM objectAtIndex:]:索引 11 超出范围 [0 .. 10]'。无法找到问题的确切位置。下面是我的代码

if(indexPath.row==3)

    cell.textLabel.text = @"Subject";
    cell.detailTextLabel.text=[empDict objectForKey:@"Subject"];

if(indexPath.row==3)

    cell.textLabel.text = @"Education";
    cell.detailTextLabel.text=[empDict objectForKey:@"Education"];



NSArray *times = [empDict objectForKey:@"ClassTimings"];

NSString *stgmt = [[times objectAtIndex:indexPath.row]objectForKey:@"GMT"];

NSString *strtime = [[times  objectAtIndex:indexPath.row]objectForKey:@"Time"];

NSString *strtimeZone = [[times  objectAtIndex:indexPath.row]objectForKey:@"TimeZone"];

NSString *str = [@[stgmt, strtime, strtimeZone] componentsJoinedByString:@" "];
if(indexPath.row==3)

    cell.textLabel.text = @"Times To Take";
    cell.detailTextLabel.text=[NSString stringWithFormat:@"%@",str];



return cell;

【问题讨论】:

为什么你用了两次NSString *str = [@[stgmt, strtime, strtimeZone] componentsJoinedByString:@" "]; str = [@[stgmt, strtime, strtimeZone] componentsJoinedByString:@" "]; 搞错了,兄弟编辑了 好吧,为什么你用了三个if(indexPath.row==3) 信息很清楚;您试图访问包含 11 个对象的数组的第 12 个元素。异常发生在哪一行?显示您的numberOfRowsInSection 我不相信您会在“if(indexPath.row==3) 部分”中遇到异常,因为它们都没有发送objectAtIndex: 【参考方案1】:

你的问题不在"if(indexPath.row==3)"

您从以下三行中的任何一行收到错误

NSString *stgmt = [[times objectAtIndex:indexPath.row]objectForKey:@"GMT"];

NSString *strtime = [[times  objectAtIndex:indexPath.row]objectForKey:@"Time"];

NSString *strtimeZone = [[times  objectAtIndex:indexPath.row]objectForKey:@"TimeZone"];

您尝试访问没有12 elements'times' 数组的12th element(当indexPath.row==12 的值)...

希望对你有帮助..

【讨论】:

【参考方案2】:

此问题是因为您尝试访问包含 11 个元素的数组的第 12 个元素。 在您的代码中,如果 times 数组没有 12 个元素,并且您尝试访问第 12 个元素,则可能会出现此问题。也就是说,如果 indexpath.row = 12 并且您尝试通过 [times objectAtIndex:indexPath.row] 访问第 12 个对象会导致此错误。

【讨论】:

以上是关于-[__NSArrayM objectAtIndex:]: 索引 11 超出界限 [0 .. 10]' 目标 c的主要内容,如果未能解决你的问题,请参考以下文章

NSArrayM objectAtIndex:索引 6 超出范围

NSArrayM insertObject:atIndex:]: 对象不能为 nil

NSArrayM replaceObjectAtIndex:withObject: 对象不能为 nil'

Mac 上fopen总返回NULL

启用 False 时如何更改 TabBarItem 的颜色