1

I am using a timer in xcode i have managed to make it count down correctly but when counting down it goes into negatives,

i have tried using an if statement to counter this but it dosnt seem to work here is the code i am using,

    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";
    }

the H is ov my H

4

3 に答える 3

2

ラベルのテキスト値をゼロと比較する代わりに、を比較しますMainInt。問題は、2つの文字列を比較しようとしていることです...技術的には、文字のASCII値を取得して別の文字と比較できるため、基本的には@"Dog" >= @"Cat"、ランタイムが実行しようとするようなことを実行しようとしましたが、明らかにそうではありません。あなたが望むものではありません。

文字列の整数表現を引き出すために使用できる、 NSStringcalledのメソッドもあります。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 に答える