NSMutableArray在循环中的每次传递中被覆盖

时间:2010-08-13 00:36:13

标签: iphone cocoa arrays nsmutablearray

问候可可大师 - 这个简单的问题让我爬上了墙。我有一个名为Movie的自定义类,它由一堆属性和一些集合组成。我使用FMDB和SQLite成功填充它。但是,每次从DB传递结果集合时,我的addObject:似乎都在写整个数组:

SciFiLib = [[NSMutableArray alloc]init];
FMResultSet *SciFiResultSet = [db executeQuery:@"select Movie.*......];
Movie *m = [[Movie alloc] init];

while ([SciFiResultSet next]) {
m.movieID =[SciFiResultSet stringForColumn:@"movie_id"];
m.title = [SciFiResultSet stringForColumn:@"title"];
.....
[SciFiLib addObject: m];

此时 - 我有NSLog的m输出 - 它包含一个不同的电影(标题,ID,发布日期等 - 所以我知道数据没问题)。但是,从第二次遍历WHILE循环开始,每个后续的addObject都会用下一个数据项的副本替换整个数组。所以在我的循环结束时,我有6份相同的电影数据。

我在这里只使用了一系列电影标题来镜像我的自定义类,这看起来很有效,但我想为我的模型数据收集电影的所有属性。任何人都可以了解可能导致这种行为的原因吗?

提前感谢您的帮助和建议!

...

1 个答案:

答案 0 :(得分:5)

我认为这是因为你只是添加一个指针,然后将数据重新应用到同一个对象“m”。在循环中制作“m”并释放它,以便每次都重新制作。