我是目标 c 的新手。我对这样的事情很感兴趣:-对于每个键,我想存储多个值,例如:
2 holds a,b,c
3 holds d,e,f
按下时2 3 or 2 3 3
,我希望输出这些组合中的所有组合6 values.
我应该为此使用 NSMutableDictionary 吗?我需要一些建议!
我是目标 c 的新手。我对这样的事情很感兴趣:-对于每个键,我想存储多个值,例如:
2 holds a,b,c
3 holds d,e,f
按下时2 3 or 2 3 3
,我希望输出这些组合中的所有组合6 values.
我应该为此使用 NSMutableDictionary 吗?我需要一些建议!
您可以将数组存储在字典中。例如
NSDictionary *mapping = @{@"2": @[@"a", @"b", @"c"]};
并且您可以为每次按键将字典中的数组中的对象添加到中间数组
NSMutableArray *values = [NSMutableArray array];
...
// For each time a key is pressed
[values addObjectsFromArray:@[mapping[keyPressed]]];
...
当您想要显示输出时,您需要计算 values 数组中所有值的所有组合。
要存储单个键的多个值,您需要添加数组作为字典键的值,例如,
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)
上面的代码描述了简单的逻辑,根据您的要求进行更改。
请试试这个..
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 ); }
Objective-c 有 3 种类型的集合:NSArray、NSSet、NSDictionary(以及它们的可变等价物)。所有这些集合只能存储对象。此集合用于不同的案例,因此请尝试找到适合您的案例并使用适当的集合。
PS我的第一个愿望是写RTFM
尝试如下: -
NSDictionary *yourDict=[NSDictionary dictionaryWithObjects:
[NSArray arrayWithObjects:@"a", @"b", @"c",nil]
forKeys:[NSArray arrayWithObjects:@"2",nil]];