0

我正在尝试访问数组的元素并更改它们,例如我有一个包含数字和变量 x 的数组,我必须遍历数组并将变量 x 替换为值。我试过这个,但我在 for 语句中收到一个错误,由于未捕获的异常 'NSRangeException',正在终止应用程序,原因:'*** -[__NSArrayM objectAtIndex:]: index 3 beyond bounds [0 .. 2]'

 if( [stack containsObject:@"X"] )
    {
    int x;
    for(x=0; [stack objectAtIndex:x] ;x++)
    {
    [stack replaceObjectAtIndex:x withObject:[variableValues objectForKey:@"X"]];
    }
4

1 回答 1

1

你得到什么错误?查看您的代码可能有几件事。如果数组长度为零,则访问索引 0 处的对象将引发错误。此外,数组需要是可变的才能进行替换。

-- update 另外,如果你的objectForKey返回nil,在replacement方法中,尝试替换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];
        }
    }
}
于 2012-07-10T06:26:22.647 回答