Adding objects to a NSMutableArray property

耗尽温柔 提交于 2019-12-07 02:33:51

问题


this is my data strucure:

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

I define a class for element with all properties and a class for group as:

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

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

and single element with:

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

Both classes have properties and synthesize. When application start I inserted data on data structure with this:

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

The problem is this the [group.elements addObjct:element1]. Nothing has been written on elements NSMutableArray.

Could you help me to find the error? There is a better method to retrieve structure data (groups of elemens)?

thanks for help! Andrea


回答1:


@synthesize only generates the getter and the setter for your property, you have to take care of initialization yourself if needed.

To initialize the mutable array do e.g. this in your initializer:

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


来源:https://stackoverflow.com/questions/3231351/adding-objects-to-a-nsmutablearray-property

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!