您好我试图访问数组的元素并更改它们,例如我有一个数字和变量x的数组,我必须通过数组并用值替换变量x。我尝试了这个,但是我在for语句中得到一个错误,即由于未捕获的异常'NSRangeException'而终止app,原因:' * - [__ NSArrayM objectAtIndex:]:索引3超出了边界[0 .. 2]“
if( [stack containsObject:@"X"] )
{
int x;
for(x=0; [stack objectAtIndex:x] ;x++)
{
[stack replaceObjectAtIndex:x withObject:[variableValues objectForKey:@"X"]];
}
答案 0 :(得分:1)
你得到的错误是什么?看看你的代码可能有几件事情。如果数组长度为零,则访问索引0处的对象将引发错误。此外,阵列需要是可变的,以便替换工作。
- 更新 此外,如果您的objectForKey返回nil,则在替换方法中,尝试替换nil也会引发错误。请参阅以下更新代码:
if( [stack containsObject:@"X"] )
{
assert([stack isKindOfClass:[NSMutableArray class]] );
NSUInteger count = [stack count];
for(NSUInteger x = 0; x < count ;x++)
{
id value = [variableValues objectForKey:@"X"];
if ( value != nil )
{
[stack replaceObjectAtIndex:x withObject:value];
}
}
}