向NSMutableArray属性添加对象

6
这是我的数据结构:
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]。在elements NSMutableArray上没有写入任何内容。
您能帮我找到错误吗?有更好的方法来检索结构化数据(元素组)吗?
感谢您的帮助! Andrea

1
你能添加属性声明和初始化“elements”的代码吗? - Georg Fritzsche
在这一点上,我猜你找到了问题!实际上,我初始化了元素,但是我只是添加了一个NSMutableArray *elements;来对对象定义进行分组。我以为@synthesize就足够了。我不知道如何初始化元素的可变数组对象elements。 - Andrea Girardi
1个回答

15

@synthesize只会为你的属性生成getter和setter,如果需要初始化,你必须自己处理。

要初始化可变数组,请在初始化器中执行以下操作:

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

太好了,它能正常工作!!!谢谢!!!(我错误地定义了init,因此我没有包括它...我必须回到书本上去.... :( ) - Andrea Girardi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接