在NSDictionary中将多个值存储到单个键

时间:2014-08-18 11:48:22

标签: ios objective-c arrays ios7

在我的应用程序中,我从server.i获取数据解析数据并添加到单个数组。这里我有2个阵列。

例如

数组A:@“1”,@“2”,@“3”,@“2”,@“3”,@“4”等。 数组B:@“A”,@“B”,@“C”,@“D”,@“E”,@“F”等。

现在我想创建一个字典,其中数组A为键,数组B为值。 我正在尝试像这样创建词典:

dataDict = [NSDictionary dictionaryWithObjects:B forKeys:A];

但它只为单个Key提供单个值。这里如何为单个密钥存储多个值。

2 个答案:

答案 0 :(得分:4)

  

对于不同的键,它的工作原理。但我的问题是为单个密钥存储多个值。

您无法直接为单个密钥存储多个值 - 字典每个密钥只能有一个值。你可以做的是存储一个数组作为值。因此,您可以创建一个可变字典并一次添加一个键和值。将值设置为所有可变数组,并在设置之前检查给定键的现有值。如果找到一个,请将新值添加到数组中。

答案 1 :(得分:1)

试试这个,

假设dataDictNSMutableDictionary并已初始化。

- (void)addValueInDataDict:(id)value forKey:(NSString *)key {

     if ([dataDict objectForKey:key] != nil) {
         //Already exist a value for the key
         id object = [dataDict objectForKey:key];
         NSMutableArray *objectArray;
         if ([object isKindOfClass:[NSMutableArray class]]) {

             objectArray = (NSMutableArray *)object;
         } else {

            NSMutableArray *objectArray = [[NSMutableArray alloc] init];
         }
         [objectArray addObject:value];
         [dataDict setObject:objectArray forKey:key];
     } else {
         //No value for the key
         [dataDict setObject:value forKey:key];
     }
}