2009-11-10 85 views
13

據我所知,在Objective-C中,只能將對象放入字典中。所以如果我要創建一個字典,它將不得不擁有所有的對象。這意味着我需要將我的內幕添加爲NSNumber,對不對?在字典中存儲整數

洙......

NSNumber *testNum = [NSNumber numberWithInt:varMoney]; 


NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; 
[dictionary setObject:@"OMG, Object 1!!!!" forKey:@"1"]; 
[dictionary setObject:@"Number two!" forKey:@"2"]; 
[dictionary setObject:testNum forKey:@"3"]; 


NSNumber *retrieved = [dictionary objectForKey:@"3"]; 
int newVarMoney = [retrieved intValue]; 

哪裏varMoney是已早些時候宣佈一個int。我的問題是,有沒有更好的方式來存儲「int」在字典中,而不是把它放到一個NSNumber?

謝謝!

編輯:13年4月25日

這是一個很長的時間,因爲我問這個問題。對於未來人們的絆腳石,有一些更簡單的方法可以通過蘋果LLVM編譯器4.0來實現,它已經在Xcode中默認使用了一段時間。 (ARC)

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; 
[dictionary setObject:@1337 forKey:@"1"]; 

就是這樣,使用@ 1337語法快速創建NSNumber對象。用於變量,所以我上面將變成:

[dictionary setObject:@(varMoney) forKey:@"3"]; 

dictionary[@"mykey"] = @1337; 

簡單。

+2

你也可以做字典[@「1」] = @ 1337; – JuJoDi 2013-10-04 01:44:00

回答

18

你是對的,NSNumber是處理這種情況的正常方法。您也可以使用NSValueNSDecimalNumber

+1

沒關係,我沒有想到,現在我知道了,謝謝! – 2009-11-10 01:18:01

0

很抱歉,但沒有:(不受限制,只要我知道了。原因是整數不是對象,並NSDictionary只存儲對象。

+0

沒關係,我不認爲有,現在我知道了。謝謝! – 2009-11-10 01:15:18

5

如果你願意退回到使用核心基礎(CFDictionaries)你可以存儲你喜歡的東西。我肯定拍成我把任意無效*值的字典。

你需要做的多一點,但管道並不多,而其所有的記錄。