我正在尝试在tableview中显示数据库信息,然后在视图中显示详细信息我的问题如下:
我创建了NSMutableArray
:NSMutableArray *myArray = [[NSMutableArray alloc]init];
然后我将其填入数据库MyObj *obj = [[MyObj alloc]initWithName:idObj];
当我在tableview cellForRowAtIndexPath:
方法中显示值时,一切都很顺利,但是当我尝试在didSelectRowAtIndexPath:
方法中加载相同的数组时,数组中的值是“无效的”。 / p>
NSMutableArray
声明如下:
@property (nonatomic, retain) NSMutableArray *myArray;
以下是代码:
.h文件
NSMutableArray *antrosArray;
@property(nonatomic, retain) NSMutableArray *antrosArray;
.m文件
@synthesize antrosArray;
//filling the array:
Antro *antro = [[Antro alloc]initWithName:idAntro nombre:aName];
[self.antrosArray addObject:antro];
我的问题是:
当我从cellForRowAtIndexPath:
tableView方法访问数组时,一切正常,但是当用户选择一条记录时,我试图用didSelectRowAtIndexPath:
方法读取数组,并且我的数组中的所有值都是无效。
数组在那里,也是对象,但是对象的值是空的,cellForRowAtIndexPath:
方法正在清理数组。
答案 0 :(得分:3)
您似乎正在定义名为myArray的第二个局部变量。你应该做的是
self.myArray = [[[NSMutableArray alloc] init] autorelease];
事实上,您可能应该使用-initWithCapacity:相反,但这是另一回事。
编辑:感谢Chuck指出我遗漏的自动释放:)
答案 1 :(得分:0)
在定义过程中也使用retain
。