gpt4 book ai didi

iphone - NSMutableArray 在循环中的每次传递都会被覆盖

转载 作者:行者123 更新时间:2023-12-03 16:53:17 25 4
gpt4 key购买 nike

问候 cocoa 大师 - 这个简单的问题让我摸不着头脑。我有一个名为 Movie 的自定义类,它由一堆属性和一些集合组成。我使用 FMDB 和 SQLite 成功填充它。但是,每次传递来自数据库的结果集合时,我的 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];

此时 - 我已经对 m 的输出进行了 NSLog 处理 - 它包含不同的电影(标题、ID、发行日期等 - 所以我知道数据没问题)。然而,从第二次通过 WHILE 循环开始,每个后续的 addObject 都会用下一个数据项的副本替换整个数组。因此,在循环结束时,我拥有相同电影数据的 6 个副本。

我在这里仅使用电影标题数组镜像了我的自定义类,这似乎有效,但我想为我的模型数据收集电影的所有属性。谁能解释一下可能导致这种行为的原因吗?

预先感谢您的帮助和建议!

...

最佳答案

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

关于iphone - NSMutableArray 在循环中的每次传递都会被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3473084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com