如何阻止指针更新前一个循环中的数据?

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];
      

【讨论】:

以上是关于如何阻止指针更新前一个循环中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

TableView 交互阻止单元格中的动画

while循环阻止其他代码执行c#

数据结构—约瑟夫环问题(循环单链表)

如何在运行时阻止forEach循环不执行两次?

如何只用队头指针实现顺序循环队列?

Spring Boot如何在更新前检查数据库中的编码密码是不是与表单中的密码匹配