1

我在xcode中使用了一个计时器,我设法让它正确倒计时但是当倒计时它变成负数,

我已经尝试使用 if 语句来解决这个问题,但它似乎在这里工作是我正在使用的代码,

    IBOutlet UILabel *timelabel;
    int MainInt;
    NSInteger fred;
    NSTimer *timer;



    MainInt -= 1;
    timelabel.text = [NSString stringWithFormat:@"%i",MainInt ];

    MainInt = 20;
    timer  = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countdown) userInfo:nil repeats:YES];


    if (timelabel.text <= @"0")
    {
        [timer invalidate];
        timelabel.text = @"20";
    }

H is ov my H

4

3 回答 3

2

与其尝试将标签的文本值与零进行比较,不如使用 compare MainInt。您的问题是您正在尝试比较两个字符串...从技术上讲,您可以获取一个字符的 ASCII 值并将其与另一个字符进行比较,因此基本上您尝试执行@"Dog" >= @"Cat"运行时将尝试执行的操作,但显然不是不是你想要的。

还有一个NSString调用方法intValue,您可以使用它来提取字符串的整数表示。你可以做

if ([timelabel.text intValue] <= 0)

于 2012-06-17T08:48:35.310 回答
2

虽然我相信它会编译

if (timelabel.text <= @"0")

这条线没有多大意义。它可能应该是:

if(MainInt <= 0)
于 2012-06-17T08:51:29.570 回答
0

如果你真的想检查 timelabel.text 使用 intValue

 if ([timelabel.text intValue] <= 0) 
 {
    timer invalidate];
    timelabel.text = @"20";
 }

注意:更改为 intValue,但请注意您应该将其int

于 2012-06-17T08:57:36.553 回答