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

时间:2017-11-21 17:21:04

标签: ios objective-c nsstring nsmutablearray nsmutabledictionary

我使用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总是得到循环的最后一个值,即使先前插入的dicts到variantInfo NSMutableArray,我假设我的问题是因为我插入指针等,但我不明白我怎么办呢?我需要插入值,并且将来的插入不会影响以前的插入。

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

1 个答案:

答案 0 :(得分:0)

您正在每次迭代中修改相同的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];
     } 
}