3

我很难弄清楚我的代码到底有什么错误。它说:

reason: '*** -[__NSArrayI objectAtIndex:]: index 3 beyond bounds [0 .. 2]'

这是应用程序崩溃的部分。

NSString *keyTemp = [[NSString alloc] initWithFormat:@"Wit%d",indexPath.section+1];
    NSArray *arrTemp;
    if ([userStandards objectForKey:keyTemp] == nil || [[userStandards objectForKey:keyTemp] count]==3) {
        if ([witDict objectForKey:keyTemp] == nil) {
            arrTemp = [[NSArray alloc] initWithObjects:@"",@"",@"",@"",@"",@"",nil];
        } else {
            arrTemp = [[NSArray alloc] initWithArray:[witDict objectForKey:keyTemp]];
        }
        cell.inputTextArea.text = [NSString stringWithFormat:@"Name: %@\nPhone: %@\nEmail: %@\nCity/State: %@\nZip: %@\nComments: %@",[arrTemp objectAtIndex:0],[arrTemp objectAtIndex:1],[arrTemp objectAtIndex:2], [arrTemp objectAtIndex:3], [arrTemp objectAtIndex:4], [arrTemp objectAtIndex:5]];
    } else {
        arrTemp = [[NSArray alloc] initWithArray:[userStandards objectForKey:keyTemp]];
        cell.inputTextArea.text = [NSString stringWithFormat:@"Name: %@\nPhone: %@\nEmail: %@\nCity/State: %@\nZip: %@\nComments: %@",[arrTemp objectAtIndex:0],[arrTemp objectAtIndex:1],[arrTemp objectAtIndex:2], [arrTemp objectAtIndex:3], [arrTemp objectAtIndex:4], [arrTemp objectAtIndex:5]];
}
4

2 回答 2

2

检查您的代码:

if ([[userStandards objectForKey:keyTemp] count]==3)
{

  // Your array only have 3 elements (index 0,1, and 2)

  // Here you accessing index beyond 2
  cell.inputTextArea.text = [NSString stringWithFormat:@"Name: %@\nPhone: %@\nEmail: %@\nCity/State: %@\nZip: %@\nComments: %@",[arrTemp objectAtIndex:0],[arrTemp objectAtIndex:1],[arrTemp objectAtIndex:2], [arrTemp objectAtIndex:3], [arrTemp objectAtIndex:4], [arrTemp objectAtIndex:5]];
}
于 2012-12-19T06:54:01.207 回答
0

使用这种方式:

以下行是正确的,arrTemp 中有 6 个值。

arrTemp = [[NSArray alloc] initWithObjects:@"",@"",@"",@"",@"",@"",nil];

但是在这只有 3 个在 arrTemp 中。

arrTemp = [[NSArray alloc] initWithArray:[witDict objectForKey:keyTemp]];

您正在输入第二个....在 keyTemp 中添加更多键/值或更改您的逻辑。

于 2012-12-19T07:00:09.073 回答