将对象添加到 NSMutableArray 属性 [英] Adding objects to a NSMutableArray property

查看:62
本文介绍了将对象添加到 NSMutableArray 属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的数据结构:

group [1...n] {ID,名称,元素:[1...n]}

我为具有所有属性的元素定义了一个类,为组定义了一个类:

@interface 组:NSObject {NSInteger groupID;NSString *组名;NSMutableArray *elements;}@property (assign, readwrite) NSInteger groupID;@property (assign, readwrite) NSString *groupName;@property (assign, readwrite) NSMutableArray *elements;

和单个元素:

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

两个类都有属性和合成.当应用程序启动时,我在数据结构上插入了数据:

arrGroup = [NSMutableArray 数组];[arrGroup 保留];元素 *element1 = [[元素分配] init];element1.elemenID = 1;element1.elemenName = @"Andrea";元素 *element = [[元素分配] init];element2.elementID = 2;element2.elementName = @"Andrea2";组 *group = [[组分配] init];group.groupID = 1;group.groupName = @"Grup 1";[group.elements addObject:element1];[group.elements addObject:element2];[contact1 发布];[contact2 发布];[arrGroup addObject:group];

问题在于 [group.elements addObjct:element1].没有在元素 NSMutableArray 上写任何东西.

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

感谢帮助!安德里亚

解决方案

@synthesize 只为你的属性生成 getter 和 setter,如果需要,你必须自己负责初始化.>

要初始化可变数组,请执行例如这在您的初始化程序中:

- (id)init {//或者它被命名if ((self = [超级初始化])) {元素 = [[NSMutableArray 分配] init];//... 更多的?}回归自我;}- (void)dealloc {【元素发布】;//不要忘记清理//... 更多的?[超级dealloc];}

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

解决方案

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

这篇关于将对象添加到 NSMutableArray 属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆