1

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

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

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

4

5 回答 5

5

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

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

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

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

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

于 2013-10-24T13:39:49.317 回答
3

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

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)

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

于 2013-10-24T13:34:33.620 回答
1

请试试这个..

 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 ); }

于 2014-08-01T11:44:44.627 回答
0

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

PS我的第一个愿望是写RTFM

于 2013-10-24T13:38:15.913 回答
0

尝试如下: -

        NSDictionary *yourDict=[NSDictionary dictionaryWithObjects:
    [NSArray arrayWithObjects:@"a", @"b", @"c",nil] 
forKeys:[NSArray arrayWithObjects:@"2",nil]];
于 2013-10-24T13:48:48.940 回答