objective-c multi-dimensional array

后端 未结 3 1125
南方客
南方客 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: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 
    
    @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.

提交回复
热议问题