我很难弄清楚我的代码到底有什么错误。 它说:
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]];
}
答案 0 :(得分: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]];
}
答案 1 :(得分:0)
使用这种方式:
以下行是正确的arrTemp中有6个值。
arrTemp = [[NSArray alloc] initWithObjects:@"",@"",@"",@"",@"",@"",nil];
但是在这个中只有3个进入arrTemp。
arrTemp = [[NSArray alloc] initWithArray:[witDict objectForKey:keyTemp]];
你正在进入第二个......要么在keyTemp中添加更多的键/值,要么改变你的逻辑。