2010-07-12 57 views
5

这是我的数据strucure:将对象添加到一个的NSMutableArray属性

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:元素1]。元素NSMutableArray没有写任何东西。

你能帮我找到错误吗?有更好的方法来检索结构数据(elemens组)吗?

感谢您的帮助! Andrea

+1

你可以添加属性声明和初始化'元素'的代码? – 2010-07-12 19:08:10

+0

在这一点上,我想你发现了这个问题!我实际上初始化元素,但我只是添加了一个NSMutableArray *元素;分组对象定义。我认为@synthesize就足够了。我不知道如何初始化元素可变数组对象元素 – 2010-07-12 19:48:48

回答

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]; 
} 
+0

太棒了!!!!!!谢谢!!! (我错误地定义了init,因为这个原因,我没有包括...我必须回到书籍.... :() – 2010-07-12 20:51:04