【问题标题】: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,我假设我的问题是因为我正在插入指针等,但我不明白我还能怎么做?我需要插入这些值,并且以后的插入不会影响以前的插入。

我希望描述是有意义的,因为它不容易解释。

【问题讨论】:

    标签: ios objective-c nsstring nsmutablearray nsmutabledictionary


    【解决方案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];
         } 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多