2012-05-12 44 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"])