gpt4 book ai didi

ios - NSMutableArray 没有将数据正确存储到循环中

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:18:19 27 4
gpt4 key购买 nike

我尝试将一些 NSMutableDictionaries 存储到 NSMutableArray 中并抛出一个 for 循环:

NSMutableArray *productsIdAndQuantities = [[NSMutableArray alloc]init];
NSMutableDictionary *element = [[NSMutableDictionary alloc]init];

for (id object in shoppingArray) {
[element setObject:[object valueForKey:@"proId"] forKey:@"id"];
[element setObject:[object valueForKey:@"qty"] forKey:@"quantity"];
NSLog(@"%@",element);//tested, it's different on every iteration
[productsIdAndQuantities addObject:element];
}

循环结束后,我尝试调试 productsIdAndQuantities,结果发现它包含上面循环的项目的确切数量,但只有一个值。

我的意思是:

在循环内(NSLog(@"%@",element);):

{
id = 13293;
quantity = "-2";
}
{
id = 12632;
quantity = "-5";
}

循环后(NSLog(@"%@",productsIdAndQuantities);相同的值!!!!!!):

(
{
id = 12632;
quantity = "-5";
},
{
id = 12632;
quantity = "-5";
}
)

最佳答案

您正在将相同的字典添加到数组中;改用它,每次迭代都会分配一个新字典:

NSMutableArray *productsIdAndQuantities = [[NSMutableArray alloc]init];
for (id object in shoppingArray) {
NSMutableDictionary *element = [[NSMutableDictionary alloc]init];
[element setObject:[object valueForKey:@"proId"] forKey:@"id"];
[element setObject:[object valueForKey:@"qty"] forKey:@"quantity"];
NSLog(@"%@",element);//tested, it's different on every iteration
[productsIdAndQuantities addObject:element];
}

注意:这假定您使用的是 ARC,否则您将向右、向左和向中间泄漏字典...

关于ios - NSMutableArray 没有将数据正确存储到循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15442345/

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