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