Как создать Array of Array в iPhone? - PullRequest
0 голосов
/ 27 января 2011

Я хочу создать вложенный массив или многомерный массив.

В моих данных:

         FirstName   class   year   dept  lastName
         Bob          MBA    2000   Comp  Smith
         Jack         MS     2001   Comp  McDonald

         NSMutableArray *section = [[NSMutableArray alloc] init];  

Я хочу поместить свои данные в массив Array.

Например:

section[0] = [FirstName,LastName];

section[1] = [class, year, dept];

Так, как я могу поместить значения в массив, как это.Пожалуйста, помогите мне.

Спасибо

Ответы [ 3 ]

2 голосов
/ 27 января 2011

Я бы порекомендовал создать пользовательский класс хранения данных.Вы можете назвать это PDPerson.h Вам также понадобится файл .m.Для каждого свойства сделайте что-то вроде этого:

В .h : объявите каждое из ваших свойств следующим образом:

@interface PDPerson : NSObject{<br>
}
<Br>@property(nonatomic, retain) NSString *firstName;
@property(nonatomic, retain) NSString *lastName;
@property(nonatomic, retain) NSString *class;//May want to consider renaming
@property(nonatomic, retain) NSString *year;
@property(nonatomic, retain) NSString *dept;<br>
@end

Затем в.m:

@implementation
@synthesize firstName, lastName;
@synthesize class, year dept;

-(void)dealloc{
    [firstName release];
    [lastName release];
    [class release];
    [year release];
    [dept release];
}

Каждый раз, когда вы хотите создать нового «Персона» в вашем массиве, сделайте следующее:

PDPerson *person = [[PDPerson alloc]init];

Затем вы можете легко установить свойстваОбъект выглядит так:

person.firstName = @"John";
person.lastName = @"Smith";
person.class = @"Math";
person.year = @"1995";
person.dept = @"Sciences";

И извлекает их:

firstNameLabel.text = person.firstName;

Приятная вещь в этих объектах состоит в том, что все, что вам нужно сделать, это добавить объект person в ваш массив:1023 *

NSMutableArray *personArray = [[NSMutableArray alloc] init];
[personArray addObject:person];
0 голосов
/ 27 января 2011

Вы можете просто вложить несколько экземпляров NSArray в NSArray.

Например:

NSMutableArray* sections = [[NSMutableArray alloc] init];
for (int i = 0; i < numberOfSections; i++)
{
    NSMutableArray* personsInSection = [[NSMutableArray alloc] init];
    [sections insertObject:personsInSection atIndex:i];
    for (int x = 0; x < numberOfPersons; x++)
    {
        Person* person = [[Person alloc] init];
        [personsInSection insertObject:person atIndex:x];
    }
}

Это может показаться излишним, если исходить из таких языков, как C ++ или Java, где многомерные массивы могут быть созданы с помощью нескольких квадратных скобок. Но так обстоят дела с Objective-C и Cocoa.

0 голосов
/ 27 января 2011
NSArray *section1 = [NSArray arrayWithObjects: @"1,1", @"1,2", @"1,3", nil];
NSArray *section2 = [NSArray arrayWithObjects: @"2,1", @"2,2", @"2,3", nil];
NSArray *section3 = [NSArray arrayWithObjects: @"3,1", @"3,2", @"3,3", nil];

NSArray *sections = [NSArray arrayWithObjects: section1, section2, section3, nil];


int sectionIndex = 1;
int columnIndex = 0;
id value = [[sections objectAtIndex:sectionIndex] objectAtIndex:columnIndex];
NSLog(@"%@", value); //prints "2,1"

Имейте в виду, это не гибкий способ хранения данных. Рассмотрите возможность использования CoreData или создания собственных классов для представления данных.

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