2012-03-01 81 views
0

我想添加對象到獅子的nsmutable數組,使用ARC xcode 4.3。下面是導致程序與SIGABRT崩潰NSMutableArray insertObject不添加到數組

NSMutableArray *myArray = [NSMutableArray arrayWithCapacity:10]; 
[myArray insertObject:@"Hello World" AtIndex:5] 

我怎麼可以添加自定義對象到陣列中的任何索引?

在此先感謝您的幫助。

回答

3

,我建議你儘可能多[NSNull null]填補NSArray例如,你想數組大小,例如這種情況下有10件物品。

NSMutableArray *myArray = [NSMutableArray arrayWithCapacity:10]; 
for(int i = 0; i < 10; i++) { 
    [myArray addObject:[NSNull null]]; 
} 

而當您想要插入對象時,請改用replaceObjectAtIndex:withObject:。數組的大小不會改變。

[myArray replaceObjectAtIndex:5 withObject:@"Hello World"]; 

您還需要在訪問項目時針對[NSNull null]進行檢查。

id item = [myArray objectAtIndex:5]; 
if (item != [NSNull null]) { 
    NSString* stringItem = item; 
    // your code here 
} 
+0

非常感謝你的幫助! :-) – inforeqd 2012-03-02 00:20:14

4

當你的陣列容量是10,你的陣列大小後立即創作是0,所以你不能在索引5插入元素,因爲它是出界。

而且,你不能插入nil到一個數組,但如果你想有10零個元素作爲佔位符的數組,你可以使用NSNull

NSMutableArray *myArray = [NSMutableArray arrayWithCapacity:10]; 
for (int i = 0; i < 10; i++) { 
    [myArray addObject:[NSNull null]]; 
} 

// then this would work, but it inserts a new element, so your array size will be 11 
// [myArray insertObject:@"Hello World" atIndex:5] 
// to keep array size at 10 use this method: 
[myArray replaceObjectAtIndex:5 withObject:@"Hello World"]; 
1

如果你有元素的固定數量在數組中,然後使用NSArray。然後,您將能夠爲特定位置設置對象。當你使用NSMutableArray時,它的大小爲0.你必須有最小5個元素插入到NSMutableArray中的第5個位置

0

你試圖插入一個空數組中的對象,這將無法工作。相反,嘗試添加對象。如果你想用C固定大小的數組的相同方式使用NSArray嘗試......

NSMutableArray *myArray = [NSMutableArray arrayWithCapacity:10]; 
[myArray addObject:@"Hello World"];