我有2个UILables:
myScore.text;和hisScore.text;
当我的NSTimer达到0时,我有这段代码:
if (MainInt <= 0) {
[Mytimer invalidate];
if (myScore.text < hisScore.text) {
UIAlertView *win = [[UIAlertView alloc]initWithTitle:@"Congrats" message:@"You WIN" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[win show];
}
else if(myScore.text > hisScore.text) {
UIAlertView *lose = [[UIAlertView alloc]initWithTitle:@"Hmmmm" message:@"You lose :(" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[lose show];
}
else if(myScore.text == hisScore.text) {
UIAlertView *tie = [[UIAlertView alloc]initWithTitle:@"Not Bad" message:@"No winners. TIE" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[tie show];
}
}
如果我的分数是&gt;我该怎么比较?比他的分数?我的代码不起作用。请帮助。
答案 0 :(得分:4)
您目前正在比较两个字符串。
您必须比较这些字符串的整数值。
要在Objective-C中访问字符串的整数值,您可以使用intValue
方法:
[myScore.text intValue]
答案 1 :(得分:1)
使用
[myScore.text integerValue];
或者
[myScore.text intValue];
答案 2 :(得分:0)
为什么要为此比较标签文字?您应该在类中的某些整数变量中得到实际分数。视图应仅用于显示数据,而不用于存储数据。如果您使用int
类型的ivars或其他适当的数据类型,那么您可以对这些值执行适当的操作。
让标签显示格式良好的数据表示。
但如果您坚持使用标签,请先将标签文字转换为int
值。
int scoreA = [myScore.text intValue];
编辑:这是对当前代码有什么问题的进一步解释。在Objective-C中,NSString类是一个类。它是一种对象类型。当你写:
if (myScore.text > hisScore.text)
实际上是在比较两个字符串对象的两个内存地址。所以比较两个指针是没有意义的。
您可以比较两个字符串:
if ([myScore.text compare:hisScore.text] == NSOrderedAscending)
但这是一个字母比较,而不是数字比较。
但关键是你很少想使用带有对象指针的标准比较运算符。使用适当的方法比较两个对象值。