如何阻止指针更新前一个循环中的数据?
Posted
技术标签:
【中文标题】如何阻止指针更新前一个循环中的数据?【英文标题】:How to stop a pointer from updating data from a previous loop? 【发布时间】:2017-11-21 17:21:04 【问题描述】:我正在使用 for 循环进行循环并将数据插入到 NSMutableDictionary 中,然后将该 NSMutableDictionary 插入到 NSMutableArray 中,代码相当简单,如下所示:
for (NSDictionary *selectedOption in selectedOptions)
NSString *name = selectedOption[@"name"];
NSString *value = selectedOption[@"value"];
[variantRow setObject:name forKey:@"name"];
[variantRow setObject:value forKey:@"value"];
[variantInfo addObject:variantRow];
我要解决的问题是 *name 和 *value 总是获得循环的最后一个值,即使对于以前插入到 variantInfo NSMutableArray 中的 dicts,我假设我的问题是因为我正在插入指针等,但我不明白我还能怎么做?我需要插入这些值,并且以后的插入不会影响以前的插入。
我希望描述是有意义的,因为它不容易解释。
【问题讨论】:
【参考方案1】:您在每次迭代中修改相同的NSDictionary
对象引用(variantRow
) 并将其附加到数组variantInfo
。你需要创建一个新的 NSDictionary 对象:
for (NSDictionary *selectedOption in selectedOptions)
NSString *name = selectedOption[@"name"];
NSString *value = selectedOption[@"value"];
if(name && value)
NSDictionary* newVariantRow = @"name": name, @"value":value;
[variantInfo addObject: newVariantRow];
【讨论】:
以上是关于如何阻止指针更新前一个循环中的数据?的主要内容,如果未能解决你的问题,请参考以下文章