gpt4 book ai didi

ios - 将 NSDictionary 添加到数组

转载 作者:行者123 更新时间:2023-11-28 21:53:26 24 4
gpt4 key购买 nike

我不确定我错过了什么,但我在下面有这个 for 循环。当我遍历它时,字典对象每次都会像它应该的那样被添加到数组中。但出于某种原因,在下次循环时,它会将所有字典对象值完全替换为它正在循环的当前字典值。因此,例如,当它完成循环时,我的数组中有 5 个字典对象,并且它们都具有最新的循环值...

NSMutableArray *events = [NSMutableArray array];
NSMutableDictionary *event = [[NSMutableDictionary alloc]init];
NSMutableArray *array = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"Update"]];

for (int i = 0; i < [array count]; i = i + 2){

[event setValue:[array objectAtIndex:i+1] forKey:@"Event-Type"];
[event setValue:[array objectAtIndex:i] forKey:@"date"];
[events addObject:event];

}

最佳答案

您必须在循环的每次迭代中分配一个新的 NSMutableDictionary,无论是在每个循环的开始(即只是将该行移入循环中)还是当您执行 addObject 时,您可以复制字典使用 [NSDictionary dictionaryWithDictionary: event];

这是因为 NSMutableDictionary 是一个对象;它通过引用传递。所以你只是将 NSMUtableDictionary 的相同实例放入你的数组中 n 次。

您可以通过在数组末尾的每个索引处记录对象来查看这一点,并且您可以检查内存地址以查看它们是否相同。

关于ios - 将 NSDictionary 添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27410657/

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