1

我正在从Apple JSON(应用程序的评级)中解析一些东西,我尝试了类似的东西:

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

该应用程序的评分为 4.5,如果我这样做

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

输出为:4.5

但是当我运行脚本时,第一个代码输出中的 NSlog 是“xxx”,有人可以帮助我吗?

4

4 回答 4

6

比较字符串(本质上是指向 NSSring 类实例的指针)是错误的,因为两个内容相同的字符串可能具有不同的内存地址。利用

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

反而。

于 2012-05-12T21:17:20.517 回答
4

你不能这样做:

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

你需要做:

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

假设它是一个字符串。如果是NSNumber那么做:

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

(虽然在比较浮动的相等性时要小心

有关字符串相等的更多信息,请参阅此问题

于 2012-05-12T21:11:46.160 回答
4

使用isEqualToString

if ([[StoreParse objectForKey:@"averageUserRating"] isEqualToString:@"4.5"]) {
    NSLog(@"xx");
}
于 2012-05-12T21:11:46.643 回答
0

如果值为averageUserRatingan NSNumber,则应NSString先将其转换为格式化的,然后将其与@"4.5"字符串文字进行比较:

if ([[NSString stringWithFormat:@"%1.1f", [[StoreParse objectForKey:@"averageUserRating"] floatValue]] isEqualToString:@"4.5"])
于 2012-05-14T01:57:15.020 回答