target-c многомерный массив - PullRequest
       1

target-c многомерный массив

3 голосов
/ 18 сентября 2011

Я хочу использовать многомерный массив переменного размера в своем приложении для сохранения данных.Структура данных, которую я хочу использовать, как показано ниже, за первым элементом в каждой строке следуют соответствующие несколько значений.

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

Есть идеи, как я могу реализовать в target-c?

Ответы [ 3 ]

14 голосов
/ 18 сентября 2011

используйте NSMutableArray, например,

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];
5 голосов
/ 18 сентября 2011

использование NSMutableArray

Ниже приведен пример для вашего понимания ...

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]];

И Не забудьте освободить массив multiArray, потому что у нас есть alloced it ...

0 голосов
/ 03 июля 2012

Objective-C не имеет реального двухмерного типа массива, но вы можете реализовать его с помощью следующих кодов ..

в вашем заголовочном файле --- 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

Теперь добавьте в ваш файл target-c ---- target-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;

Чтобы закончить, добавьте это в файл appdelegate.m внутри приложения

  yourclassname* _yourclasspointer = [[yourclassname alloc] init];

 [_youclasspointer ShowMultiArrayType:[_yourclasspointer MultiArrayType]];

Вы должны увидетьэто в вашей консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...