Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I create an empty array in objective C, and assign value into it one by one?

In Java, I can do that :

int[] abc = new int[10];
for(int i=0; i<abc.length; i++){
   abc[i] = i;
}

How can I implement similar thing in Objective C?

I see some answer using NSMutableArray, wt's different between this and NSArray?

like image 601
Tattat Avatar asked Feb 25 '10 15:02

Tattat


2 Answers

Try something like this.

#import <foundation/foundation.h>
int main (int argc, const char * argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSMutableArray *myArray = [NSMutableArray array];
    [myArray addObject:@"first string"];
    [myArray addObject:@"second string"];
    [myArray addObject:@"third string"];
    int count = [myArray count];
    NSLog(@"There are %d elements in my array", count);
    [pool release];
    return 0;
}

The loop would look like:

NSString *element;
int i;
int count;
for (i = 0, count = [myArray count]; i < count; i = i + 1)
{
   element = [myArray objectAtIndex:i];
   NSLog(@"The element at index %d in the array is: %@", i, element);
}

See CocoLab

like image 89
Curtis Inderwiesche Avatar answered Oct 10 '22 16:10

Curtis Inderwiesche


NSMutableArray* abc = [NSMutableArray array];
for (int i = 0; i < 10; ++ i)
   [abc addObject:[NSNumber numberWithInt:i]];
return abc;

Here,

  • NSMutableArray is a "mutable" array type. There is also a constant array super-type NSArray. Unlike C++, ObjC's array is not typed. You can store any ObjC objects in an NSArray.
  • -addObject: appends an ObjC at the end of the array.
  • Since NSArrays can only store ObjC, you have to "box" the integer into an NSNumber first.

This is actually more similar to the C++ code

std::vector<int> abc;
for (int i = 0; i < 10; ++ i)
   abc.push_back(i);
return abc;
like image 22
kennytm Avatar answered Oct 10 '22 16:10

kennytm