views:

342

answers:

4
+1  Q: 

array of ints

im struggling to create an array of ints in objective c.

the way I'd do this is javascript would be: arr = new Array ( 1, 2, 3, 4, 3, 2, 2 );

i need to use an nsmutablearray, as the values need to be updated (it's a tile map for a game).

any help?

+3  A: 

Does the array need to change length?

If not, why not use a normal array of ints:

int arr[] = { 1, 2, 3, 4, 3, 2, 2};

Note that an NSArray (or subclass thereof) doesn't hold int types natively, you have to create an NSNumber object.

If you really need an Objective-C style array, then use this:

int vals[] = { 1, 2, 3, 4, 3, 2, 2};  // you still need this
int n = sizeof(vals) / sizeof(vals[0]);

[NSMutableArray* array = [[NSMutableArray alloc] initWithCapacity:n];
for (int i = 0; i < n; ++i) {
    [array addObject: [NSNumber numberWithInt:vals[i]]];
}
Alnitak
the length does not need to change...but i need to be able to modify the array, can i do that?also how do i get the length of that array? [arr count] doesn't work
rob g
You might also use an NSArray and friends for a length, bounds checking, etc.
Jesse Rusak
the length of the array is sizeof(arr) / sizeof(arr[0]). This is the standard C mechanism for finding the length of a static array
Alnitak
A: 

Here's the class reference.

Hank Gay
+2  A: 

For an NSMutableArray (though a C-style array may be preferable, as suggested by Alnitak), you need to do something like this:

NSMutableArray *array = [NSMutableArray arrayWithObjects: [NSNumber numberWithInt: 1], [NSNumber numberWithInt:2], nil];

(You can put as many as you want into that constructor, just separate them with commas and end with a nil.)

You could also make an empty array ([NSMutableArray array]) and then fill it with your ints using [array addObject:[NSNumber numberWithInt:1]].

If you need a 2D version, take a look here.

Jesse Rusak
A: 

NSMutableArray can only contain Cocoa objects that inherit from NSObject (ie. Apple's classes and yours).

Basically for NSMutableArray you just init it like this:

myArray = [[NSMutableArray alloc] init];

and then add/delete objects as needed.

Good luck!

PS: Hank's class reference is a good starting place.

Genericrich
very helpful, thanks.
rob g