2013-10-24 68 views
1

我是新來的目標c。我是有這樣的事情有趣: - 每個關鍵我想存儲像多個值:如何存儲一個關鍵的multple值?

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

當按下2 3 or 2 3 3,我想有在輸出的所有這些6 values.組合我應該使用的NSMutableDictionary爲了這?我需要一些建議!

回答

5

您可以將數組存儲在字典中。例如

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

,你可以爲每個鍵按壓在辭典從陣列添加的對象的中間陣列

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

當要顯示您計算所有組合對於所有的值輸出在values數組中。

+0

爲什麼這是不正確的? [values addObjectsFromArray:[mapping [@「2」]]]; –

+0

它錯過了@。對於那個很抱歉。 – Voxar

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 [email protected]"2"]; 
[temDic setValue:temArray1 [email protected]"3"]; 
NSLog(@"%@", temDic) 

上面的代碼根據您的需求描述了簡單的邏輯,根據需要進行更改。

0

Objective-c有3種類型的集合:NSArray,NSSet,NSDictionary(及其可變等價物)。所有這些集合都只能存儲對象。這個集合用於不同的情況,所以嘗試找到適合你的情況並使用適當的集合。

P.S.我的第一個願望是編寫RTFM

0

嘗試象下面這樣: -

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

我做了Voxar的例子,但爲什麼這是不正確的?[values addObjectsFromArray:[mapping [@「2」]]]; –

+0

我打算在輸入時顯示值,我有值2 :)(鍵2) –

+0

是的,它會根據您從字典中讀取的條件顯示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 ); red =( f1, f2, f3 ); 得分=( 10, 20,); ( f4, f5, f6 ); }