Ios NSMutableArray插入对象未添加到数组中

Ios NSMutableArray插入对象未添加到数组中,ios,arrays,Ios,Arrays,我正在尝试使用ARC将对象添加到lion xcode 4.3中的nsmutable数组中。以下是导致程序使用SIGABRT崩溃的原因 NSMutableArray *myArray = [NSMutableArray arrayWithCapacity:10]; [myArray insertObject:@"Hello World" AtIndex:5] 如何将自定义对象添加到数组中的任何索引 提前感谢您的帮助。当您的数组容量为10时,创建后的数组大小为0,因此您不能在索引5处插入元素,

我正在尝试使用ARC将对象添加到lion xcode 4.3中的nsmutable数组中。以下是导致程序使用SIGABRT崩溃的原因

 NSMutableArray *myArray = [NSMutableArray arrayWithCapacity:10];
 [myArray insertObject:@"Hello World" AtIndex:5]
如何将自定义对象添加到数组中的任何索引


提前感谢您的帮助。

当您的数组容量为10时,创建后的数组大小为0,因此您不能在索引5处插入元素,因为它超出了范围

此外,您不能将
nil
插入到数组中,但是如果您想要一个包含10个nil元素的数组作为占位符,您可以使用
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"];
NSMutableArray*myArray=[NSMutableArray阵列容量:10];
对于(int i=0;i<10;i++){
[myArray addObject:[NSNull];
}
//这样就可以了,但它会插入一个新元素,所以数组大小将是11
//[myArray insertObject:@“Hello World”索引:5]
//要将数组大小保持为10,请使用以下方法:
[myArray replaceObjectAtIndex:5 withObject:@“Hello World”];

如果数组中有固定数量的元素,则使用NSArray。然后,您将能够为特定位置设置对象。使用NSMutableArray时,其大小为0。您必须在NSMutableArray的第5个位置插入至少5个元素,因为您试图在空数组中插入对象,这是行不通的。相反,尝试添加对象。试试这个

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

如果您想以C固定大小数组的相同方式使用
NSArray
,我建议您在
NSArray
实例中填充数组大小所需的
[NSNull null]
,例如在本例中为10项

NSMutableArray *myArray = [NSMutableArray arrayWithCapacity:10];
for(int i = 0; i < 10; i++) {
    [myArray addObject:[NSNull null]];
}
访问项目时,您还需要检查[NSNull null]

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