Reputation: 113
I'm 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).
How can I do this?
Upvotes: 3
Views: 1887
Reputation: 2171
In addition to Alnitak's answer, I would add that this question also suggests some confusion that I certainly felt while learning to code iPhone programming. Here are a few tips in general about programming languages on the iPhone
Upvotes: 0
Reputation: 339816
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]]];
}
Upvotes: 4
Reputation: 4641
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.
Upvotes: 0
Reputation: 57168
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.
Upvotes: 2