在类上填充数组

时间:2013-04-08 14:00:20

标签: objective-c ios6

我有一个(可能)非常简单的问题让我的大脑震惊。

我创建了一个类“ArrayClass”:

//  ArrayClass.m


#import "ArrayClass.h"

@implementation ArrayClass{

    NSMutableArray *NameList;

}

@end

现在我想在我的主文件中将此数组填充到此类的对象上。

我认为这是对的,但遗憾的是没有结果。

//Main File:

//Create an object

ArrayClass *object_bla = [[ArrayClass alloc] init];

那么如何用“object_bla”对象填充我的数组?

我无法访问此数组。正常例如int变量我没有问题。


实际上我昨天没有进一步。这就是我想要做的事情。

我需要一个类,我创建一个数组。这是因为我想稍后用一些userinput填充这个数组。

所以我得到了我的班级:

AClass.h

#import <Foundation/Foundation.h>

@interface AClass : NSObject

//Array deklarieren
@property NSMutableArray *WordList;


@end

否,在主文件中我想创建此类的对象,以访问* WordList数组。后来课程获得了更多的东西,所以这就是现在的试用。 我是一名C ++开发人员,对于objective-c很新,所以请向我的noob问题道歉。

到目前为止我做了什么:

#import <Foundation/Foundation.h>
#import "AClass.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {

    //create object
    AClass *blabla = [[AClass alloc] init];

    //fill array
    [blabla.WordList addObject:@"GünterKörper"];

    //output
    for (int i = 0; i<[blabla.WordList count]; i++){
        NSLog(@"Objekte: %@", [blabla.WordList objectAtIndex:i]);
    }


    }
    return 0;
}

但这没有给我什么。数组是空的。 我在这里缺少什么?

迎接

2 个答案:

答案 0 :(得分:1)

您需要为property创建NameList

@property (strong) NSMutableArray *NameList;

然后在您的main文件中

在main中创建一个tempArray,用一些数组填充它,然后使用:

NSMutableArray *tempArray=[NSMutableArray arrayWithArray:@[@"A",@"B",@"C"]];
[object_bla setNameList:tempArray;

如果您想一次添加一个对象:

[object_bla.NameList addObject:@"new object"];

答案 1 :(得分:0)

您需要先实例化数组,然后才能向其中添加对象。这可以通过各种方式完成:

1 - 在自定义类的init方法中:

@implementation AClass 

- (id)init {
    self = [super init];
    if (self) {
        _WordList = [[NSMutableArray alloc] init];
    }
    return self
}

// Rest of class implementation...

@end

2 - 通过在自定义类中实现自己的属性getter来使用延迟加载。

@implementation AClass 

- (NSMutableArray *)WordList {
    if (_WordList == nil) {
        _WordList = [[NSMutableArray alloc] init];
    }
    return _WordList;
}

// Rest of class implementation...

@end

第二种可能是首选,因为它只在实际引用对象时分配内存。