我的代码中有一个简单的if
语句,比较两个变量:
currentScore和lpGcScore都是NSNumber
:
_lpGcScore = [NSNumber numberWithLongLong:board.localPlayerScore.value];
这就是我定义currentScore的方式:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; // get the score from "db"
NSNumber *currentScore = [defaults valueForKey:@"currentScore"];
if语句:
if ((int)currentScore > (int)_lpGcScore) {
NSLog(@"currentScore: %@ > _lpGcScore: %@", currentScore, _lpGcScore);
}
应用程序的日志和行为确认:
2014-06-15 14:09:53.668 LaserShipDestroyer[4461:60b] currentScore: 2 > _lpGcScore: 38
我认为这确实不是系统/语言中的错误,也许我在使用我在变量中进行比较的数字类型做一些奇怪的事情?
答案 0 :(得分:3)
也许是因为你将对象转换为Int((int)currentScore
),比较内存地址而不是值?
强制转换永远不会将对象(NSNumber *
)转换为值类型(int
)。使用类似的东西:
if ([currentScore intValue] > [_lpGcScore intValue]) ...