1

我有 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];
        }
    }

如果我的分数大于他的分数,我该如何比较?我的代码不起作用。请帮忙。

4

3 回答 3

4

您当前正在比较两个字符串。

您将不得不比较这些字符串的整数值。要在 Objective-C 中访问字符串的整数值,可以使用如下intValue方法:

[myScore.text intValue]
于 2012-11-13T01:36:42.377 回答
1

采用

[myScore.text integerValue];

或者

[myScore.text intValue];
于 2012-11-13T01:40:37.150 回答
0

你为什么要为此比较标签的文本?您应该在班级中的某种整数变量中获得实际分数。视图应该只用于显示数据,而不是存储数据。如果您使用类型的 ivarsint或其他适当的数据类型,那么您可以对这些值执行适当的操作。

保留标签以显示格式良好的数据表示。

但是如果您坚持使用标签,int请先将标签文本转换为值。

int scoreA = [myScore.text intValue];

编辑:这是对您当前代码有什么问题的进一步解释。在 Objective-C 中,NSString 类是一个类。它是一种对象类型。当你写:

if (myScore.text > hisScore.text)

您实际上是在比较两个字符串对象的两个内存地址。所以比较这两个指针是没有意义的。

您可以像这样比较两个字符串:

if ([myScore.text compare:hisScore.text] == NSOrderedAscending)

但这会进行字母比较,而不是数字比较。

但这里的关键是您很少希望将标准比较运算符与对象指针一起使用。使用适当的方法比较两个对象值。

于 2012-11-13T01:41:39.837 回答