2012-03-01 33 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"]; 
相关问题