【问题标题】:Add two objcet under Single key NSMutableDictionary在 Single key NSMutableDictionary 下添加两个对象
【发布时间】:2013-09-30 06:20:46
【问题描述】:

我想在 ios 的一个键下添加两个值,我该怎么做。

我试过了

[indexDic setObject:[NSNumber numberWithInt:num] forKey:@"first"];

[indexDic setObject:[NSNumber numberWithInt:sender.tag] forKey:@"first"];

但只显示第二个 sender.tag 值它将替换第一个值我如何在第一个键下添加这两个值。

帮我解决这个问题。

提前致谢。

【问题讨论】:

    标签: iphone ios objective-c ios6


    【解决方案1】:
    NSDictionary *values = [NSDictionary dictionaryWithObjectsAndKeys:
                            [NSNumber numberWithInt:num], @"FirstValue",
                            [NSNumber numberWithInt:sender.tag], @"TagValue",
                            nil];
       [indexDic setObject:values forKey:@"first"];
    

    创建这些值的字典并将其添加到您的主字典中,这意味着另一个字典中的字典。因此,您的许多值将存储在 Key 值的一个引擎盖下。

    在检索时间你可以这样获取,

      NSInteger  firstValue = [[[indexDic objectForKey: @"first"] objectForKey:@"FirstValue"] intValue];
      NSInteger  tagValue =  [[[indexDic objectForKey: @"first"] objectForKey:@"TagValue"] intValue];
    

    【讨论】:

      【解决方案2】:

      您可以为键添加一个对象数组。

      NSArray *array = [NSArray arrayWithObjects:[NSNumber numberWithInt:num],
                                 [NSNumber numberWithInt:sender.tag],nil];
      [indexDic setObject:array forKey:@"first"];
      

      在检索要按顺序访问它们的值时,按照插入数组的顺序。

      希望有帮助!

      【讨论】:

      • 在一个数组中保留多个值并不是更好的优化解决方案。当您开始在数组中检索值时,您可能需要迭代数组。这极大地增加了执行的时间成本。如果你把 heep 放在 heep 里面,它会减少你的执行时间。在字典中使用字典,您可以在不迭代的情况下获取准确的值,并在检索时编写多行代码。
      • 对于大数据集是正确的,但在这里 OP 知道他只有两个值。他唯一需要记住的是数组中数据的位置。这仍然是 O(1) 提取,无需迭代。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多