【问题标题】:How to get two dictionary values into a single string?如何将两个字典值放入一个字符串中?
【发布时间】:2017-07-13 10:59:38
【问题描述】:

我有类似的 JSON 响应

q13 =     {
    multiple = multiple;
    restrict = all;
    title1 = "Board Certification:";
    title2 = "Exp Date:";
    type = "double_text";
    value1 =         (
        "Test Certificate"
    );
    value2 =         (
        "12/14/27"
    );
};

现在,在那个 JSON 响应中,我只需要 value1 和 value2 的值,并且这两个值必须存储在由逗号 (,) 分隔的单个字符串中。

怎么做?

【问题讨论】:

  • 键 value1 和 value2 都包含 list(array) 作为值。您需要先从数组中提取对象,然后将它们附加到“,”。
  • 假设每个数组(value1 & value2)中有多个索引(假设为 4 个索引)。现在我必须将 value1 的第一个索引与 value2 的第一个索引和 value1 的第二个索引与 value2 的第二个索引结合起来,反之亦然。如何做到这一点。
  • 有很多方法可以解决它。这是一种方法“使用(值 1 数组作为键)和(值 2 数组作为值)init(objects:forKeys:) 制作一个字典。之后循环遍历字典键并使用当前键和值创建一个字符串。最终结果将是相似的到这个“测试证书,12/14/27”
  • 谢谢@pawan 它对我有用
  • 好的,但是@parvendra-singh 解决方案更好。我只是给了你另一种方法。

标签: objective-c nsstring nsmutabledictionary


【解决方案1】:

这样做很简单。 如果你的两个数组中有多个值。

NSDictionary *dictionary =[your_Json_Object valueForKey:@"q13"];
NSArray *value1Array = [dictionary valueForKey:@"value1"];
NSArray *value2Array = [dictionary valueForKey:@"value2"];

NSMutableString *combinedString = [NSMutableString new];

[value1Array enumerateObjectsUsingBlock:^(NSString *str1, NSUInteger idx, BOOL *stop) {

    NSString * innerCombinedString = [NSString stringWithFormat:@"%@  %@",str1,[value2Array objectAtIndex:idx]];
    [combinedString appendString:innerCombinedString];
    if (idx != value1Array.count) {
      [combinedString appendString:@","];
    }

}];

【讨论】:

  • 如果 value1Array 数组中有多个对象,您的逻辑将无法工作。
  • 您编辑的答案是正确的。你可以看看我的回答。无需循环,您将获得更多想法。
  • 兄弟,你的想法也很好,很完美,但它返回如下:测试证书测试证书测试证书测试证书,12/14/27 12/14/27 12/14/27 12/14/ 27 我的想法是这样的:测试证书 12/14/27,测试证书 12/14/27,测试证书 12/14/27,测试证书 12/14/27 ..... 所以让他决定什么他想要... :)
  • 他说他需要一个字符串,所以这样做了;)
  • 我实际上需要一个字符串中的测试证书和 12/14/27。谢谢@nimalsinh。
【解决方案2】:

只是我创建了两个 NSmutabledictionary 并输入一个字符串。你有任何疑问让我知道我会解释。

 NSMutableDictionary *Dict_Value;
 NSMutableDictionary *Dict_Value1;

 Dict_Value = [[NSMutableDictionary alloc] init];

[Dict_Value setObject:@"FirstDict" forKey:@"One"];
[Dict_Value setObject:@"FirstDict" forKey:@"Two"];
[Dict_Value setObject:@"FirstDict" forKey:@"Three"];
[Dict_Value setObject:@"FirstDict" forKey:@"Four"];

Dict_Value1 = [[NSMutableDictionary alloc] init];


[Dict_Value1 setObject:@"2Multiple1" forKey:@"2One"];
[Dict_Value1 setObject:@"2Multiple2" forKey:@"2Two"];
[Dict_Value1 setObject:@"2Multiple3" forKey:@"2Three"];
[Dict_Value1 setObject:@"2Multiple4" forKey:@"2Four"];


NSString *string= [NSString stringWithFormat:@"Dict1 %@, Dict2 %@",[Dict_Value valueForKey:@"Value1"],[Dict_Value1 valueForKey:@"Value2"]]; 

【讨论】:

    【解决方案3】:

    请考虑以下是您将以 JSON 格式获得的 dic:

     NSMutableDictionary *dicMain = [NSMutableDictionary new];
        dicMain[@"multiple"] = @"multiple";
        dicMain[@"restrict"] = @"all";
        dicMain[@"title1"] = @"Board Certification:";
        dicMain[@"title2"] = @"Exp Date:";
        dicMain[@"type"] = @"double_text";
    
        dicMain[@"value1"] = [NSArray arrayWithObject:@"Test Certificate"];
        dicMain[@"value2"] = [NSArray arrayWithObject:@"12/14/27"];
    

    以下是将值放入一个字符串的逻辑:

    NSArray *aryValue1 = [dicMain valueForKey:@"value1"];
    NSArray *aryValue2 = [dicMain valueForKey:@"value2"];
    NSString *strFinalString = [NSString stringWithFormat:@"%@ %@",[aryValue1 componentsJoinedByString:@" "],[aryValue2 componentsJoinedByString:@" "]];
    
    NSLog(@"%@",strFinalString);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 2013-03-04
      • 1970-01-01
      • 2022-06-10
      • 2012-09-25
      相关资源
      最近更新 更多