2011-07-31 85 views

回答

5

字典鍵和值必須是對象引用(id),因此您不能使用整數作爲鍵。你應該將你包裹在整數一個NSNumber

[NSNumber numberWithInt:5] 

可以使用initWithObjects初始化的一個,然後初始化NSDictionary。我選擇了initWithObjectsAsKeys:初始值設定項,它接受值,鍵,值,鍵...... nil格式中的鍵/值。

NSDictionary *dict = [[NSDictionary alloc]initWithObjectsAndKeys:[NSNumber numberWithInt:15], [NSNumber numberWithInt:5], nil]; 

要訪問的價值,你需要做的是相同的:

NSLog(@"%@", [dict objectForKey:[NSNumber numberWithInt:5]]); 

編輯:根據您的意見,看來你應該使用的NSMutableDictionary,而不是一個NSDictionary的。同樣的事情適用於包裝你的整數,但你會想要使用setObject:forKey方法:

NSMutableDictionary *dict = [[NSMutableDictionary alloc]init]; 
[dict setObject:[NSNumber numberWithInt:15] forKey:[NSNumber numberWithInt:5]]; 

這有幫助嗎?

+0

你的問題提到一個NSDictionary。你需要的是一個NSMutableDictionary。同樣的事情適用於包裝整數。使用setObject:forKey方法。 – csano

4

把它包在一個NSNumber

int intKey = 1; 
int intValue = 2; 
[myDict setObject:[NSNumber numberWithInt:intValue] forKey:[NSNumber numberWithInt:intKey]]; 
NSLog(@"key: %i, value: %i", intKey, [[myDict objectForKey:[NSNumber numberWithInt:intKey] intValue]); 

編輯:您需要使用一個NSMutableDictionary設定值。 NSDictionary創建後無法修改。

+0

編譯器在#1行抱怨:「numberWithInt:找不到forKey(返回類型默認爲id)」。 –

+0

您可能在intValue後忘記了一個右括號。 – omz