Objective-c multidimensional array

I want to use a multidimensional array of variable size in my application to save data. The data structure that I want to use is as follows, the first element in each row is followed by the corresponding several values.

array = { {a, a_val1, a_val2, a_val3}. {b, b_val1}, {c, c_val1, c_val2, c_val3, c_val4, c_val5} } 

Any idea how I can implement in objective-c?

+3
source share
3 answers

Objective-C does not have a real 2-dimensional array type, but you can implement it using the following codes ..

in your header file --- yourheader.h

 #import <Foundation/Foundation.h> @interface yourheader : NSObject{ NSMutableDictionary* DictionaryArrayType; NSMutableArray* MultiArrayType; NSArray* CaptionTitle; NSArray* ObjectValue; } @property (strong, nonatomic) NSMutableDictionary* DictionaryArrayType; @property (strong, nonatomic) NSArray* CaptionTitle; @property (strong, nonatomic) NSArray* ObjectValue; @property (strong, nonatomic) NSMutableArray* MultiArrayType; -(id) AddArrayObjects:(NSString*)_Name : (NSString*)_Surname :(NSString*)_Age; -(id) AddArrayDictionaryObject:(NSArray*)_ArrayObject : (NSArray*)_ArrayKey; -(id) AddMultiArrayType:(id)_ArrayObject; -(void) ShowMultiArrayType:(id)_ArrayObject; @end 

Now add in your objective-c file ---- objective-cm

 #import "yourheader.h" @implimentation yourheader @synthesize DictionaryArrayType; @synthesize CaptionTitle; @synthesize ObjectValue; @synthesize MultiArrayType; -(id)init { if(self = [super init]){ NSString* const NAME = @"NAME"; NSString* const SURNAME = @"SURNAME"; NSString* const AGE = @"AGE"; //Adding fixed content to CaptionTitle Array [self setCaptionTitle:[NSArray arrayWithObjects:NAME, SURNAME, AGE, nil]]; //add values to ObjectValue array [self AddArrayObjects:@"Bob" :@"Obi" :@"200"]; //add values to dictionary [self AddDictionaryArrayType:ObjectValue :CaptionTitle]; //Add to the Multi dimensional array [][] [self AddMultiArrayType:DictionaryArrayType]; //add the second row values to ObjectValue array [self AddArrayObjects:@"Barack" :@"Obama" :@"50"]; //add values to dictionary [self AddDictionaryArrayType:ObjectValue :CaptionTitle]; //Add to the Multi dimensional array [][] [self AddMultiArrayType:DictionaryArrayType]; //display the 2d Array [self ShowMultiArrayType:MultiArrayType]; } return self; } -(id)AddArrayObjects:(NSString *)_name :(NSString *)_surname :(NSString *)_age { //Set the Array Objects; [self setObjectValue:[NSArray arrayWithObjects:_name, _surname, _age, nil]]; return self; } -(id)AddDictionaryArrayType:(NSArray *)_ArrayObject :(NSArray*)_ArrayKey { if(!DictionaryArrayType) { //initialize disctionary [self setDictionaryArrayType:[NSMutableDictionary dictionary]]; } //add array obeject and Fixed Key decleared in CaptionTitle array DictionaryArrayType = [NSMutableDictionary dictionaryWithObjects:_ArrayObject forKeys:_ArrayKey]; return self; } -(id) AddMultiArrayType:(id)_ArrayObject { if(!MultiArrayType) { [self setMultiArrayType:[NSMutableArray array]]; } [MultiArrayType addObject:_ArrayObject]; return self; } -(void)ShowMultiArrayType:_ArrayObject { for(id objects in _ArrayObject ) { for(id key in objects) { NSLog(@"%@ key = : object = %@", key, [objects objectForKey:key]); } } } @end; 

To add this to the appdelegate.m file inside the application

  yourclassname* _yourclasspointer = [[yourclassname alloc] init]; [_youclasspointer ShowMultiArrayType:[_yourclasspointer MultiArrayType]]; 

You should see it in the console.

-1
source

use NSMutableArray so

 NSMutableArray *curRow; /* use to access the row while loading with objects */ NSMutableArray *array = [[NSMutableArray alloc] init]; /* your main multidim array */ curRow = [NSMutableArray array]; [curRow addObject:/* what you want here */]; [curRow addObject:/* what you want here */]; [curRow addObject:/* what you want here */]; [array addObject:curRow]; /* first row is added */ /* rinse and repeat */ curRow = [NSMutableArray array]; [curRow addObject:/* what you want here */]; [curRow addObject:/* what you want here */]; [curRow addObject:/* what you want here */]; [array addObject:curRow]; 
+14
source

use NSMutableArray

The following is an example of your understanding ...

 NSMutableArray * multiArray = [[NSMutableArray alloc] initWithCapacity:5]; [multiArray addObject:[NSArray arrayWithObjects:a,a_val1,a_val2]]; [multiArray addObject:[NSArray arrayWithObjects:a,a_val1,a_val2,a_val3,a_val4]]; [multiArray addObject:[NSArray arrayWithObjects:a,a_val1,a_val5]]; [multiArray addObject:[NSArray arrayWithObjects:a,a_val1,a_val2,a_val3,a_val4,a_val5,a_val6]]; 

And don't forget to free the multiArray , because we have alloced it ...

+5
source

Source: https://habr.com/ru/post/1415915/


All Articles