2015-11-03 44 views
0

我只想從我的NSDictionary中獲得一個字段。我想獲得整型變量,但有些東西很奇怪。無法從NSDictionary得到int

我想告訴你一個Xcode的截圖,那裏我得到變量的值。變量'價格'是整數,應該等於0,你能幫助我嗎?

enter image description here

我以這樣的方式創建這個字典:

NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys: 
             [NSString stringWithFormat:@"%@",[dictionary objectForKey:@"price"]], @"price", 
             pairedData2, @"uniqueName", 
             [NSString stringWithFormat:@"0"],@"wasPurchased", 
             [dictionary objectForKey:@"link"],@"videoLink", 
             [NSString stringWithFormat:@"%@", [dictionary objectForKey:@"enable"]], @"enable", 
             nil]; 

回答

2

price鍵的值是一個NSString@"0"的值或者它是一個NSNumber0值。你沒有提供足夠的信息來知道它是哪一個。

在調試器,你首先做(我縮寫):

婆字典[@ 「價格」]

,這給預期和正確的輸出:

自認爲是012的值或NSString

然後你做:

婆字典[@ 「價格」] == 0

,你會得到:

哪個再次是正確和預期的結果。您得到false,因爲dict[@"price"]的結果是一個非零對象指針,並且您在詢問指針是否爲nil== 0== nil相同)。由於您無法在字典中存儲nil對象,因此報告的結果不是nilfalse

要看到,如果NSNumberNSString的價值0,你應該做的:

婆字典[@ 「價格」。的intValue == 0

,你會收到的願望結果:

真正

你的最後一次嘗試:

婆字典[@ 「價格」 ] .intValue

導致:

這又是一個正確的結果,因爲dict[@"price"].intValue值的0int值。但是您使用的是po,這意味着print object,所以0被解釋爲nil。如果你這樣做:

p字典[@ 「價格」]的intValue

你會得到期望的結果:

使用po到打印對象值。使用p來打印原始值(如int)。

+0

很清楚(和耐心)答案。已投票。 –

0

變價不可能是整數。 NSDictionary中的每個鍵和值都必須是NSObject。 因此它可能是一個NSNumber。檢索一個NSNumber值就是這樣完成的:

NSNumber *number = @(2); 
int numberAsInt = number.intValue; 

希望幫助

+0

我編輯了我的問題,並展示了我如何創建這本詞典。我保存這個零NSSting( –

+0

你仍然可以使用的intValue 的NSString * numberAsString = @「2」; INT數= numberAsString.intVAlue –

+0

我試過了,但仍然無法正常工作,這裏應該是另一... –