2011-05-22 50 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