2017-11-21 13 views
-1

私もループするforループを使用してNSMutableDictionaryにデータを挿入して、NSMutableArrayのにNSMutableDictionary、コードはかなり単純であり、以下に示すことを挿入しています:私は解決しようとしていますポインタが以前のループのデータを更新しないようにする方法はありますか?

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の場合でも、ループの最後の値を常に取得します。ポインタなどを挿入しているため問題があると仮定していますが、私は値を挿入し、将来の挿入が前のものに影響を与えないようにする必要があります。

説明がわかりやすく説明されていれば幸いです。

答えて

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]; 
    } 
} 
関連する問題