2017-11-22 9 views
0

私はいくつかのNSMutableDictionaryオブジェクトを含むNSMutableArrayを持っています。各dictはNSStringとNSMutableArrayを持っています。NSMutableArrayの中のNSMutableDictionaryの中にあるNSMutableArrayにデータを挿入するには?

私の問題は、文字列の一致に基づいて正しいdictを見つけ出す必要があり、文字列の一致が見つかった同じdictのNSMutableArrayにオブジェクトが挿入されていると見つかったとき、私はこの作業を初めて行うことができます。配列が空です。その後、正しい文字列に一致することができません:

ここまでは私がこれまで試みてきたことですが、オブジェクトを使用しようとしましたが、配列内のdictの中に入れませんでした。

NSMutableArray *variantOptions = [[NSMutableArray alloc] init];  

for (NSDictionary *variant in variantInfo) { 
    NSMutableDictionary *variantOption = [[NSMutableDictionary alloc] init]; 
    NSMutableArray *variantOptionValues = [[NSMutableArray alloc] init]; 

    NSString *name = variant[@"name"]; 
    NSString *value = variant[@"value"]; 

    if(variantOptions.count > 0) { 
    // Need to loop through the array until name isEquaToString variantOptionName and when true insert value into variantOptionValuesArray in that same dict and if not exists create a new dict and insert in array 
    } else { 
    [variantOptionValues addObject:value]; 
    [variantOption setObject:name forKey:@"variantOptionName"]; 
    [variantOption setObject:variantOptionValues forKey:@"variantOptionValues"]; 
    } 
    [variantOptions addObject:variantOption]; 
} 
+1

私はあなたが何をしようとしているのかよくわかりませんあなたのコードは明らかにうまくいかないでしょう。ループを初めて通過すると、 "if"ステートメントはfalseになり、配列のvariantOptionsに辞書エントリを追加します。それ以降、配列variantOptionsは空ではなく、 "if"ステートメントは真となり、何もしません - あなたがコメントするのがより多くのコードのプレースホルダーでない限り。私には分かりません。 – Larry

+0

正確にコメント私が書こうとしているコードのプレースホルダですが、配列内のdictに到達し、NSStringを最初に比較する方法について私の頭を浮かべることはできません –

答えて

-1
for (NSDictionary *variant in variantInfo) { 
    NSString *name = variant[@"name"]; 
    NSString *value = variant[@"value"]; 

    BOOL found = false; 
    for (NSMutableDictionary *v in variantOptions) { 
     if (v[@"name"] isequalToString:name]) { 
      NSMutableArray *values = v[@"variantOptionValues"]; 
      [values addObject:value]; 
      found = true; 
      break; 
     } 
    } 

    if (!found) { 
     // name was not found 
     NSMutableDictionary *variantOption = [[NSMutableDictionary alloc] init]; 
     NSMutableArray *variantOptionValues = [NSMutableArray alloc] init]; 

     [variantOptionValues addObject:value]; 
     [variantOption setObject:name forKey:@"variantOptionName"]; 
     [variantOption setObject:variantOptionValues forKey:@"variantOptionValues"]; 
     [variantOptions addObject:variantOption]; 
    } 

} 
関連する問題