【问题标题】:How to store for one key multple values?如何为一个键存储多个值?
【发布时间】:2013-10-24 13:30:33
【问题描述】:

我是目标 c 的新手。我对这样的事情很感兴趣: - 对于每个键,我想存储多个值,例如:

2 holds a,b,c
3 holds d,e,f

按下2 3 or 2 3 3 时,我想输出来自这些6 values. 的所有组合我应该为此使用NSMutableDictionary 吗?我需要一些建议!

【问题讨论】:

    标签: ios iphone objective-c nsmutabledictionary fuzzy-search


    【解决方案1】:

    您可以将数组存储在字典中。例如

    NSDictionary *mapping = @{@"2": @[@"a", @"b", @"c"]};
    

    您可以为每次按键将字典中数组中的对象添加到中间数组中

    NSMutableArray *values = [NSMutableArray array];
    ...
    // For each time a key is pressed
    [values addObjectsFromArray:@[mapping[keyPressed]]];
    ...
    

    当您想要显示输出时,您需要计算 values 数组中所有值的所有组合。

    【讨论】:

    • 为什么这不正确? [值 addObjectsFromArray:[mapping[@"2"]]];
    • 缺少@。对此感到抱歉。
    【解决方案2】:

    要存储单个键的多个值,您需要添加数组作为字典键的值,例如,

    NSArray *temArray1 = ...// which has value a,b,c
    NSArray *temArray2 = ...// which has value d,e,f
    

    将此数组添加为特定键的值,例如

    NSMutableDictionary *temDic = [[NSMutableDictionary alloc] init];
    [temDic setValue:temArray1 forKey@"2"];
    [temDic setValue:temArray1 forKey@"3"];
    NSLog(@"%@", temDic)
    

    以上代码描述了简单的逻辑,根据您的需求进行更改。

    【讨论】:

      【解决方案3】:

      请试试这个..

       NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
      
          NSArray *aryFlashCardRed=[[NSArray alloc]initWithObjects:@"f1",@"f2",@"f3", nil];
      
          NSArray *aryFlashCardYellow=[[NSArray alloc]initWithObjects:@"f4",@"f5",@"f6", nil];
      
          NSArray *aryFlashCardGreen=[[NSArray alloc]initWithObjects:@"f7",@"f8",@"f9", nil];
      
          NSArray *aryScore=[[NSArray alloc]initWithObjects:@"10",@"20",@"30", nil];
      
          [dictionary setObject:aryFlashCardRed forKey:@"red"];
          [dictionary setObject:aryFlashCardYellow forKey:@"yellow"];
          [dictionary setObject:aryFlashCardGreen forKey:@"green"];
          [dictionary setObject:aryScore forKey:@"score"];
      

      像这样显示字典

      { 绿色 = ( f7, f8, f9 ); 红色 = ( f1, f2, f3 ); 分数 = ( 10, 20, 30 ); 黄色 = ( f4, f5, f6 ); }

      【讨论】:

        【解决方案4】:

        Objective-c 有 3 种类型的集合:NSArray、NSSet、NSDictionary(以及它们的可变等价物)。所有这些集合只能存储对象。该集合用于不同的案例,因此请尝试找到适合您的案例并使用合适的集合。​​

        附:我的第一个愿望是写 RTFM

        【讨论】:

          【解决方案5】:

          尝试如下:-

                  NSDictionary *yourDict=[NSDictionary dictionaryWithObjects:
              [NSArray arrayWithObjects:@"a", @"b", @"c",nil] 
          forKeys:[NSArray arrayWithObjects:@"2",nil]];
          

          【讨论】:

          • 我做了 tru Voxar 的例子,但为什么这不正确? [值 addObjectsFromArray:[mapping[@"2"]]];
          • 我打算在输入时显示该值,我的值为 2:)(键 2)
          • 是的,它会根据您从字典中读取的条件显示 2
          • 我有一个错误:PARSE ISSUE when doing [values addObjectsFromArray:[mapping[@"2"]]];
          • 首先你必须将字典添加到数组然后使用 addObjectFromArray
          猜你喜欢
          • 2012-09-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-25
          • 2021-05-18
          • 1970-01-01
          • 1970-01-01
          • 2014-08-24
          相关资源
          最近更新 更多