2010-01-15 49 views

回答

10

Dave's response到您的previous question也適用於此。要在NSDictionary中存儲一個double值,您需要將其放在NSNumber中。

要在字典中設置的雙重價值,你會使用類似於下面的代碼:

[someDict setObject:[NSNumber numberWithDouble:yourDouble] forKey:@"yourDouble"]; 

,並使用讀回如下:

double isTrue = [[someDict objectForKey:@"yourDouble"] doubleValue]; 
1

布拉德·拉爾森的反應是完全正確。爲了詳細闡述這一點,當處理任何需要對象的事物時,必須明確地將非對象號碼類型(例如,int,unsigned int,double,float,BOOL等)「包裝」到NSNumber中。然而,另一方面,Objective-C中的一些機制,例如鍵值編碼(KVC),會自動爲您做這個包裝。

例如,如果你有一個名爲intPropertyint類型的@property,你叫NSObject (NSKeyValueCoding)valueForKey:法像[ someObject valueForKey:@"intProperty" ],返回的結果將是一個NSNumber *,不是int。我不介意在Objective-C中處理對象類型和非對象類型(尤其是struct s和enum s!)之間切換。我寧願一切都被視爲一個對象,但也許這只是我。 :)