访问数组的元素,Objective C

时间:2012-07-10 06:17:22

标签: objective-c xcode arrays nsmutablearray

您好我试图访问数组的元素并更改它们,例如我有一个数字和变量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"]];
    }

1 个答案:

答案 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];
        }
    }
}