添加到NSMutableDictionary而不替换类似的键

时间:2015-05-09 21:35:11

标签: ios objective-c nsmutabledictionary

我使用相同的键动态填充NSMutableDictionary。但是这样做会替换原始键值。我需要的是附加而不是替换现有密钥。例如,我需要一个像

这样的结构
    {
      @"Key" : @"Value1",
      @"Key" : @"Value2",
      @"Key" : @"Value3"
    }

我知道我可以将创建的每个NSDictionary添加到NSMutableArray但我的问题是因为我需要输入值为NSDictionary。

目前我有以下内容替换原始值

  NSMutableDictionary *ripDictionary = [[NSMutableDictionary alloc] init];

    for(NSString *ripId in recievedRips){

        //SOME OTHER CODE

        ripDictionary[@"rip"] = keysAndAttributes;

        [data addObject:ripDictionary];
    }

2 个答案:

答案 0 :(得分:3)

来自NSDictionary Reference

  

字典中的键值对称为条目。每个条目包含一个表示键的对象和另一个作为键值的对象。 在字典中,密钥是唯一的。也就是说,单个字典中没有两个键相等(由isEqual确定)。

也许您可以修改代码以接受如下字典:

{
      @"Key" : [
               @"Value1",
               @"Value2",
               @"Value3"
           ]
}

答案 1 :(得分:1)

每个字典只能有一个唯一的密钥,因此如果您想要多个与之关联的值,那么您可以将这些值添加到与密钥关联的数组中。

if([aDictionary objectForKey:@"key"] != nil){
  aDictionary[@"key"] = @[aDictionary[@"key"], bDictionary[@"key"]];
}else{
  aDictionary[@"key"] = bDictionary[@"key"];
  //OR make all aDictionary values array by default with a single value
  //but you get the point
}