如何在NSArray的第一个索引处添加对象

20

我想在NSARRAY的第一个索引处添加@"ALL ITEMS"对象。

初始数组有10个对象。 添加后,数组应包含11个对象。

10个回答

50

你无法修改 NSArray 来进行插入和添加操作,需要使用 NSMutableArray。如果想要在指定索引处插入对象:

[array1 insertObject:@"ALL ITEMS" atIndex:0];

Swift 2.0 中:

array1.insertObject("ALL ITEMS", atIndex: 0)

20

首先,NSArray在初始化时需要填充数据。因此,如果你想向数组中添加一些对象,那么你必须使用NSMutableArray。以下代码将为您提供一些思路和解决方案。

NSArray *array = [[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"0", nil];
NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
[mutableArray addObject:@"ALL ITEMS"];
[mutableArray addObjectsFromArray:array];

addObject方法会将对象插入到NSMutableArray的最后一个元素位置。


下面的答案解释了正确的方法。(https://dev59.com/zmYr5IYBdhLWcg3wOXsQ#13854608)。但是,确实需要使用NSMutableArray。 - Satish
@Satish:你不需要使用可变数组;这只需要一行代码就可以完成。 - Chris Conover

17

我知道我们有六个insertObject的答案,还有一个是创建NSMutableArray数组,然后调用addObject方法,但也有这种方式:

myArray = [@[@"ALL ITEMS"] arrayByAddingObjectsFromArray:myArray];

我也没有进行过分析。


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - wahkiz
是的...我不需要创建一个NSMutableArray,只需要一行代码就可以了..真的很好。 - Rodrigo

16

查看NSMutableArray类的insertObject:atIndex:方法。要将对象添加到数组的前面,请使用0作为索引:

[myMutableArray insertObject:myObject atIndex:0];

16

NSArray 是不可变数组,在运行时无法修改。使用NSMutableArray

[array insertObject:@"YourObject" atIndex:0];

7

NSArray是不可变的,但你可以使用NSMutableArray类的insertObject:方法

[array insertObject:@"all items" atIndex:0];

3

如果你已经在数组中有10个对象,并且需要在索引11处添加另一个项目...那么,你必须尝试这样做....希望这可以帮助你。

NSMutableArray *yourArray = [[NSMutableArray alloc] initWithCapacity:11];
[yourArray insertObject:@"All Items" atIndex:0];

initWithCapacity并不是必需的。它只是一个提示,告诉数组在某个时刻可能会容纳11个元素,但没有它也一切正常。 [NSMutableArray array] 完全可以胜任。 - gnasher729

2

NSArray不是动态的,为了解决您的问题,您需要使用NSMutableArray。请参考以下方法:

```objc - (void)addObject:(id)anObject; ```
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;

请注意使用正确的格式来回答和提问。当您想要表示代码时,请不要再使用引用 - J. Steen
抱歉,Steen,我是一个新手,在StackOverflow这里仍在努力理解它的工作方式。 - Shashank Kulshrestha
这就是为什么我会帮忙并让你知道的原因。=) - J. Steen
但是如何从索引0开始插入多个/数组。类似于:@[1,2,3,4,5],我们必须在先前的数组开头添加@[0.1, 0.2, 0.3, 0.4]。 - nr5

1
苹果文档中写道:NSMutableArray 方法。
 [temp insertObject:@"all" atIndex:0];

仅仅写一段代码而没有进一步的解释并不是一个好的回答。你能写更多吗?你能解释为什么你的回答是好的吗?只需按下“编辑按钮”来添加到你的回答中即可。 - Brian Tompsett - 汤莱恩

1

Swift 3:

func addObject(){
    var arrayName:[String] = ["Name1", "Name2", "Name3"]
    arrayName.insert("Name0", at: 0)
    print("---> ",arrayName)
}

Output:
---> ["Name0","Name1", "Name2", "Name3"]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接