2012-07-11 53 views
0

我有一個Class,ArrayStates,它填充了美國各州的名稱數組。解決來自類的未聲明標識符

#import "ArrayStates.h" 
@implementation ArrayStates 
@synthesize listOfStates; 

NSMutableArray *listOfStates; 
- (void)viewDidLoad { 
    //---initialize the array--- 
    listOfStates = [[NSMutableArray alloc] init]; 
    //---add items--- 
    [listOfStates addObject:@"ALABAMA"]; 


    [listOfStates addObject:@"WYOMING"]; 
    // [super viewDidLoad]; 
} 

如果在體內程序(.H)我

#import "ArrayStates.h" 

爲什麼會出現 「未聲明的標識符」 當我嘗試和參考 「listOfStates」 作爲

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return [listOfStates count]; 
} 
+0

您是否已將該數組聲明爲屬性? – iOSDev 2012-07-11 11:52:38

回答

2

申報你的數組作爲全局變量在.h文件中 也看看here,請理解關於global variableslocal variables

+0

但我想如果我在類中本地聲明它,然後#import將其中的代碼編譯/鏈接到該主體模塊,並且該變量在該模塊中本地運行。 – 2012-07-11 12:10:59

+0

乾杯 - 這是一個非常有用的鏈接 - 謝謝。 – 2012-07-11 14:00:57

0

這個在你的.m文件中會起作用。從屬性中刪除.h文件alonf中的listOfStates實例。

#import "ArrayStates.h" 

@interface ArrayStates() { 
NSMutableArray *listOfStates; 
} 

@implementation ArrayStates 

- (void)viewDidLoad { 
//---initialize the array--- 
listOfStates = [[NSMutableArray alloc] init]; 
//---add items--- 
[listOfStates addObject:@"ALABAMA"]; 
[listOfStates addObject:@"WYOMING"]; 
[super viewDidLoad]; 
} 
+0

嗯,我敢肯定這是正確的方法,但有些東西不能正確退出。 ArrayStates.h具有所有* listOfSTates引用移除並且是stark/base。 – 2012-07-11 12:22:01

+0

.h現在用你的代碼生成4個錯誤 - @interface ArrayStates(){NSMutableArray * listOfStates; } - 不能在類實現後爲「ArraySates」聲明擴展名。 NSMutableArray * listOfSTates;無法在ATinterface或ATprotocol中聲明變量, - (void)viewDIDLad {Expected'。'方法原型後。 – 2012-07-11 12:28:51

+0

你的意思是把.H #進口<基金會/ Foundation.h> ATinterface ArrayStates:NSObject的 { 的NSMutableArray * listOfStates; } ATend 和.M把 #進口 「ArrayStates.h」 ATimplementation ArrayStates - (無效)viewDidLoad中{ 這擺脫了錯誤,但listOfStates仍處於未申報身體模塊。 – 2012-07-11 13:58:20