2012-05-12 255 views
1

我解析從Apple JSON(應用程序的等級)的東西,我想是這樣的:解析JSON不正確

if ([StoreParse objectForKey:@"averageUserRating"] == @"4.5") { 
     NSLog(@"xx"); 
    } else { 
     NSLog(@"xxx"); 
    } 

的App有評價爲4.5,如果我做

NSlog (@"%@", [StoreParse objectForKey:@"averageUserRating"]); 

輸出爲:4.5

但是當我運行腳本的NSLog的第一個代碼的輸出是「XXX」沒有人能幫助我嗎?

回答

4

你不能做到這一點:

if ([StoreParse objectForKey:@"averageUserRating"] == @"4.5") 

你需要做的:

if ([[StoreParse objectForKey:@"averageUserRating"] isEqualToString:@"4.5"]) 

這是假設它是一個字符串。如果它是一個NSNumber然後執行:

if ([[StoreParse objectForKey:@"averageUserRating"] floatValue] == 4.5f) 

(雖然是careful about comparing equality of floats

對字符串相等更多信息,請參閱this question

4

使用isEqualToString

if ([[StoreParse objectForKey:@"averageUserRating"] isEqualToString:@"4.5"]) { 
    NSLog(@"xx"); 
} 
6

比較字符串,其基本上用於指向NSSring類的實例,是錯誤的,作爲兩個相同的內容的字符串可以具有不同的存儲器地址。使用

if ([[StoreParse objectForKey:@"averageUserRating"] isEqualToString:@"4.5"]) 

代替。

0

如果averageUserRating值是NSNumber,你應該把它轉換成一個格式化的NSString第一,然後將其比作@"4.5"字符串文字:

if ([[NSString stringWithFormat:@"%1.1f", [[StoreParse objectForKey:@"averageUserRating"] floatValue]] isEqualToString:@"4.5"])