Добавление объектов к свойству NSMutableArray

это - мои данные strucure:

group [1...n] {
  id,
  name,
  elements : [1...n]
}

Я определяю класс для элемента со всеми свойствами и класс для группы как:

@interface Group : NSObject {    
    NSInteger groupID;
    NSString *groupName;        
    NSMutableArray *elements;       
}

@property (assign, readwrite) NSInteger groupID;
@property (assign, readwrite) NSString *groupName;
@property (assign, readwrite) NSMutableArray *elements;

и единственный элемент с:

@interface Element : NSObject {
    NSInteger elementID;
    NSString *elementName;
}
@property (assign, readwrite) NSInteger elementID;
@property (assign, readwrite) NSString *elementName;

Оба класса имеют свойства и синтезируют. Когда приложение запускается, я вставил данные по структуре данных с этим:

arrGroup = [NSMutableArray array];
[arrGroup retain];
Element *element1 = [[Element alloc] init];
element1.elemenID = 1;
element1.elemenName = @"Andrea";

Element *element = [[Element alloc] init];
element2.elementID = 2;
element2.elementName = @"Andrea2";

Group *group = [[Group alloc] init];    
group.groupID = 1;
group.groupName = @"Grup 1";    
[group.elements addObject:element1];
[group.elements addObject:element2];

[contact1 release];
[contact2 release];

[arrGroup addObject:group];

Проблема - это [group.elements addObjct:element1]. Ничто не было записано на элементах NSMutableArray.

Вы могли помочь мне найти ошибку? Существует лучший метод для получения данных структуры (группы elemens)?

благодарит справка! Andrea

6
задан Andrea Girardi 12 July 2010 в 20:04
поделиться

1 ответ

@synthesize генерирует только геттер и сеттер для вашего свойства, при необходимости вы должны сами позаботиться об инициализации.

Чтобы инициализировать изменяемый массив, выполните, например, это в вашем инициализаторе:

- (id)init { // or however it is named
    if ((self = [super init])) {
        elements = [[NSMutableArray alloc] init];
        // ... more?
    }
    return self;
}

- (void)dealloc {
    [elements release]; // don't forget to clean up
    // ... more?
    [super dealloc];
}
15
ответ дан 8 December 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: