比较UILabel分数

时间:2012-11-13 01:34:26

标签: objective-c ios xcode

我有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;我该怎么比较?比他的分数?我的代码不起作用。请帮助。

3 个答案:

答案 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)

但这是一个字母比较,而不是数字比较。

但关键是你很少想使用带有对象指针的标准比较运算符。使用适当的方法比较两个对象值。