2014-03-07 69 views
0

我想創建一個的NSArray填充的NSDictionary的和在控制檯打印所有數組元素的所述第一值。[__NSArrayM objectAtIndex:]:索引2超出範圍[0..1]」

我收到以下錯誤:

Terminating app due to uncaught exception 'NSRangeException', reason:' -[__NSArrayM objectAtIndex:]: index 2 beyond bounds [0 .. 1]' * First throw call stack: (0x30d77e83 0x3b0d46c7 0x30cadd95 0xb93b3 0xb8e03 0x3175ccdd 0x30d42e7f 0x30d42a9b 0x30d40e23 0x30cab471 0x30cab253 0x359e52eb 0x33560845 0xb8abd 0x3b5cdab7)
libc++abi.dylib: terminating with uncaught exception of type NSException

-(void) listOp { 
    NSDictionary *dictionary; 
    NSMutableArray *array; 
    NSNumber *refNum; 

    int numOp = [_refNum intValue]; 

    self.array = [NSMutableArray arrayWithObjects: self.dictionary, nil]; 
    for (int i = 0; i < numOp; i++){ 
     [self.array insertObject:self.dictionary atIndex:i]; 

     NSDictionary* vardebug = nil; 
     vardebug = [self.array objectAtIndex:numOp]; 
     NSString *valuekey = [self.dictionary valueForKey: @"key"]; 

     NSLog(@"Valuekey is: %@", valuekey); 
    } 
} 

不明白什麼錯誤。

+0

假設numOp = 5。 在for循環的第一次迭代中,self.array在索引5處沒有對象(當您想要獲取vardebug時),它只有2個對象。 – Larme

+0

你想要做什麼? – bsarr007

回答

0

你的代碼有點雜亂。聲明:

NSDictionary *dictionary; 
NSMutableArray *array; 

之後,你叫

self.dictionary... 
self.array... 

您可以使用自己,如果你有特性,例如;

@property(nonatomic, strong) NSDictionary *dictionary;

所以基本上,如果你想訪問:

NSDictionary *dictionary; 
NSMutableArray *array; 

你應該調用,例如:

array = [NSMutableArray arrayWithObjects: dictionary, nil]; 

沒有自我。但是,也許你在這個例子和財產中都顯示了伊娃,並且你是按目的做到的。我只是想說,如果你按目的做,你應該使用不同的名字來使你的代碼更清晰。

您在線路發生錯誤:

vardebug = [self.array objectAtIndex:numOp]; 

在你的第一個循環迭代您已經(分配)期間添加陣列中的一個項目,你插入另一個,所以你數組包含2個對象,但你numOp等於2,表示數組中的第3個對象(數組爲零),因此調用超出限制。我猜你想將其更改爲:

vardebug = [self.array objectAtIndex:i]; 

希望這有助於

+0

是的,我已經在函數中添加了這個聲明,但是這些聲明是在.h之類的屬性中聲明的,所以我從函數中調用。感謝您的幫助,這是一個失誤。 –

0

通過vardebug = [self.array objectAtIndex:i];更換vardebug = [self.array objectAtIndex:numOp];應避免碰撞。

+0

當你在索引0的NSMutableArray中有一些項目,然後在索引0處插入另一個項目時,應用程序不會崩潰,它將在索引0處插入第二個項目,並將第一個項目移動到索引1處。 – Greg

+0

好的,我更新了我的答案! – bsarr007

相關問題