2010-12-08 47 views
1

我有一個包含兩個字典數組的屬性列表(Data.plist)。每個字典都填充了鍵名(Factor 1,Factor 2等)和浮點數(0.87,1.15等)。我正在嘗試訪問存儲在字典中的數字。首先,我使用加載詞典:如何從浮動字典中訪問浮動塊?

NSString *path = [[NSBundle mainBundle] bundlePath]; 
NSString *finalPath = [path stringByAppendingPathComponent:@"Data.plist"]; 
NSArray *plistData = [[NSArray arrayWithContentsOfFile:finalPath] retain]; 
NSDictionary *dictionaryOne = [plistData objectAtIndex:0]; 

實際訪問存儲的號碼就是我有一個問題:

Float32 conversionFactor = [scyToLCMMen objectForKey:"Factor 50"]; 

,我發現了錯誤:「incompatible types in initialization」。我究竟做錯了什麼?這不是Float32

+0

`scyToLCMMen`僅僅是一個字典,我裝 – Travis 2010-12-08 15:08:05

回答

5

Objective-c容器只能容納obj-c類型,所以你得到的不是浮動的肯定。什麼你可能是NSNumber的對象,你需要從中「提取」純浮點值:

Float32 conversionFactor = [[scyToLCMMen objectForKey:"Factor 50"] floatValue]; 
+0

謝謝......這擺脫了錯誤,但現在,它返回總是`1073741824`或`-1073741824`我認爲是的conversionFactor浮動的最大值和最小值。如果字典中的數字是「0.87」,爲什麼會這樣呢? – Travis 2010-12-08 15:13:18

+0

你如何檢查這個值?嘗試在每個步驟之間記錄你的變量,看看你的浮點值究竟是錯誤的地方 – Vladimir 2010-12-08 15:17:42

+0

我使用NSLog語句對其進行檢查:Float32 conversionFactor = [[[scyToLCMMen objectForKey:eventString] floatValue]; NSLog(@「%d」,conversionFactor);` – Travis 2010-12-08 15:18:57

0
NSNumber *conversionFactor = [dictionaryOne valueForKey:@"Factor 50"]; 
float factor = [conversionFactor floatValue]; 

這就是我想要做什麼

0

值是可能的NSNumber一個實例。

Float32 conversionFactor = [[scyToLCMMen objectForKey:"Factor 50"] floatValue];