objective-c multi-dimensional array

后端 未结 3 1054
南方客
南方客 2020-12-06 15:31

I want to use a variable-sized multi-dimensional array in my app to save data. The data structure I want to use is as below, the first element in each row is followed by c

相关标签:
3条回答
  • 2020-12-06 16:03

    use NSMutableArray

    Below is the example for 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 release to multiArray array because we have alloced it ...

    0 讨论(0)
  • 2020-12-06 16:05

    Objective-C does not have a real 2 dimensional array type but you can implement it with 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 to your objective-c file ---- objective-c.m

    #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 finish add this to your appdelegate.m file inside the app

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

    You should see it in you console.

    0 讨论(0)
  • 2020-12-06 16:08

    use NSMutableArray like 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];
    
    0 讨论(0)
提交回复
热议问题