2013-04-08 56 views
0

我有一點(也許)非常簡單的問題,我的大腦流下了眼淚。在一個類中填充一個數組

我創建了一個類「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 

沒有在主文件我想創建這個類的一個對象,以獲得進入*單詞表陣列。稍後,班上會有更多的東西,所以現在就試試。 我是一名C++開發人員,對Objective-C很新,所以請appologize我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

我不能告訴你要在這裏完成什麼。你創建了一個ArrayClass的實例,然後你想在數組中放入那個實例(實際上是一個指針)?爲什麼要這麼做? – rdelmar 2013-04-08 15:55:39

回答

0

您需要實例化數組,然後才能將對象添加到它。這可以通過各種方式來完成:

1 - 在您的自定義類的init方法:

@implementation AClass 

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

// Rest of class implementation... 

@end 

2 - 使用延遲加載在你的自定義類實現自己的屬性獲取。

@implementation AClass 

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

// Rest of class implementation... 

@end 

第二個可能是首選,因爲它只在您實際引用對象時分配內存。

1

你需要創建一個NameListproperty

@property (strong) NSMutableArray *NameList; 

然後在您main文件

創建主一tempArray,一些陣列填充,然後使用:

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

如果你想一次添加一個對象:

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

謝謝你的回答。這工作。 沒有可能在沒有tempArray的情況下填充這個數組嗎? – shizophren 2013-04-08 14:37:30

+1

@ user2257877:然後標記爲接受:) – 2013-04-08 14:41:03

+0

會這樣做,但我的問題還沒有結束:-) 感謝您的回答。這工作。沒有tempArray填充這個數組沒有可能嗎? – shizophren 2013-04-08 14:51:46