objlv
objlv

Reputation: 35

Populating array with integers

Let's say I want to populate NSarray with 50 integers. We know that NSarray accept only objects. So I have to do 50 times

NSNumber *num1 = [NSNumber numberWithInit:10];
NSNumber *num2 = [NSNumber numberWithInit:212];
......
NSNumber *num50 = [NSNumber numberWithInit:12];

Is there more elegant way to achieve that, beacause looks stupid 50 lines of code only for create number objects ?

Upvotes: 0

Views: 1542

Answers (3)

CRD
CRD

Reputation: 53000

Your numbers do not seem to follow any particular pattern, so you might be better doing this by creating a C array first:

int myValues[] = { 10, 212, ..., 12 };
NSUInteger count = sizeof(myValues)/sizeof(int); // number of integers in myValues

// abstract the following into a function/method/category if doing more than once
NSMutableArray *objcValues = [NSMutableArray arrayWithCapacity:count];
for(NSUInteger ix = 0; ix < count; ix++)
   [objcValues addObject:[NSNumber numberWithInt:myValues[ix]];

Upvotes: 0

Ankit Srivastava
Ankit Srivastava

Reputation: 12405

try this...

NSMutableArray *array=[[NSMutableArray alloc]initWithCapacity:50 ];

    for (int i=0; i<0; i++) {
        NSNumber *number=[[NSNumber alloc] initWithInt:i];
        [array addObject:number];
        [number release];
    }
//do anything with arrray and release the array later.

is this OK or you are seeking anything else.?

Upvotes: 1

t_motooka
t_motooka

Reputation: 565

How about using NSMutableArray?

NSMutableArray* arr = [[NSMutableArray alloc] init];
int i = 0;
for(i=0; i<50; i++) {
    NSNumber* num = [NSNumber numberWithInt:i]; // use i or random numbers
    [arr addObject:num];
}

Upvotes: 0

Related Questions