2011-05-22 61 views
0
 for(int i=0;i<[promotionArr count];i++) 
      { 
       // NSLog(@"ok"); 
       Promotion *prom = [[Promotion alloc]init]; 
       prom.pName=[[promotionArr objectAtIndex:i] objectForKey:@"name"]; 

       prom.pUrl=[[promotionArr objectAtIndex:i] objectForKey:@"url"]; 
       prom.pDescription=[[promotionArr objectAtIndex:i] objectForKey:@"description"]; 

       [promMUAraay addObject:prom]; 
       NSLog(@"number of elements : %d",[promMUAraay count]); 

} 

但是元素的個數始終爲0。我沒有做對的NSMutableArray @synthetise時,Xcode告訴我,我不能.I只是做這在我的.hSyntheticise an NSMutableArray

NSMutableArray *promMUAraay; 

這是什麼問題?

回答

6

你記得分配,初始化數組嗎?

NSMutableArray *array = [[NSMutableArray alloc] init]; 

在使用數組之前,請執行此操作。

+1

+1當你合成一個屬性時,它並不意味着該屬性將被初始化。 – Max 2011-05-22 21:02:33

+0

基本上它是一個'nil'對象,'count'將返回'0'。 – 2011-05-22 21:03:31

+0

@Deepak根據上下文,發送到'nil'的消息總是會返回0,0.0,0.0f,0,0x00,NO或nil。 – 2011-05-22 21:15:32

1

你應該在訪問它之前初始化你的NSArray。也就是說,在您的.m文件,在你的-init方法,你應該有一些像這樣的代碼:

promMUAraay = [[NSMutableArray alloc] init.......]; 

對於所有的選項已初始化一個NSArray,看NSArray reference

至於你嘗試在syntethizing的陣列中,@synthetize關鍵字用來自動創建的setter/getter方法,以您的陣列定義(前提是你有在你的界面相應的@property聲明)。這並不會改變這一點,因爲你需要在你的類的init方法中初始化你的NSArray。唯一的是你可以使用點符號來引用你的變量:self.promMUAraay