19

I want to add @"ALL ITEMS" object at the first index of NSARRAY.

Initially the Array has 10 objects. After adding, the array should contains 11 objects.

10 Answers 10

49

you can't modify NSArray for inserting and adding. you need to use NSMutableArray. If you want to insert object at specified index

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

In Swift 2.0

array1.insertObject("ALL ITEMS", atIndex: 0)
Sign up to request clarification or add additional context in comments.

Comments

20

First of all, NSArray need to be populated when it is initializing. So if you want to add some object at an array then you have to use NSMutableArray. Hope the following code will give you some idea and solution.

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];

The addObject method will insert the object as the last element of the NSMutableArray.

2 Comments

Below answer explain the correct approach. (stackoverflow.com/a/13854608/309046). But, yes need to use NSMutableArray.
@Satish: You don't need to use a mutable array; it is a one liner.
17

I know that we have six answers for insertObject, and one for creating a(n) NSMutableArray array and then calling addObject, but there is also this:

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

I haven't profiled either though.

2 Comments

It's insane why this answer wasn't getting more upvotes. I found myself just needing to add a single entry at the first index of an NSArray, and this answer fits perfect for the purpose. Not to mention, how brilliantly simple and obvious this answer was. It kinds of hits you and make you ask, why haven't I thought of that!
yes... I don't need to create a NSMutableArray and it is only one line.. Really good.
16

Take a look at the insertObject:atIndex: method of the NSMutableArray class.To add an object to the front of the array, use 0 as the index:

[myMutableArray insertObject:myObject atIndex:0];

Comments

16

NSArray is immutable array you can't modify it in run time. Use NSMutableArray

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

Comments

7

NSArray is immutable but you can use insertObject: method of NSMutableArray class

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

Comments

3

As you are allready having 10 objects in your array,and you need to add another item at index 11...so,you must try this.... hope this helps..

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

1 Comment

initWithCapacity is not needed. It's only a hint that the array will probably at some point hold 11 elements, but everything works just fine without it. [NSMutableArray array] works just fine.
2

NSArray is not dyanamic to solve your purpose you have to use NSMutableArray. Refer the following method

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

4 Comments

Please take care to use the correct formatting of your answers and questions. You still use quotation when you mean code.
Sorry Steen I am a newbee here at stackoverflow still trying to understand how it works.
Which is why I'm helping by letting you know. =)
But how to insert multiple/array starting from index 0. Something like: @[1,2,3,4,5] and we have to add @[0.1, 0.2, 0.3, 0.4] at the start of the previous array.
1

Apple documents says NSMutableArray Methods

 [temp insertObject:@"all" atIndex:0];

1 Comment

Just writing a piece of code without any further explanation is not really a good answer. Can you write more? Can you explain why yours is a good answer? Just press the "edit button" to add to your answer.
1

Swift 3:

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

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.