簡體   English   中英

保存高分對我不起作用

[英]Saving high scores is not working for me

我試圖保存高分,我有5個高分的5個文本框,很明顯,我想替換它們。 但是對我來說,它總是進入if語句: if ([hs.text floatValue] == 0)並且無論我運行多少次它都只會替換第一拳頭高分文本框。 我究竟做錯了什么?

- (void)viewDidLoad
    {
        [super viewDidLoad];
        highscore = [[NSUserDefaults standardUserDefaults] floatForKey: @"highScore"];
        highscore1 = [[NSUserDefaults standardUserDefaults] floatForKey: @"highScore1"];
        highscore2 = [[NSUserDefaults standardUserDefaults] floatForKey: @"highScore2"];
        highscore3 = [[NSUserDefaults standardUserDefaults] floatForKey: @"highScore3"];
        highscore4 = [[NSUserDefaults standardUserDefaults] floatForKey: @"highScore4"];

    if ([hs.text floatValue] == 0) {
        hs.text = [NSString stringWithFormat:@"%.4f",finTime];
    }
    else if ([hs1.text floatValue] == 0) {
        hs1.text = [NSString stringWithFormat:@"%.4f",finTime];        
    }
    else if ([hs2.text floatValue] == 0) {
        hs2.text = [NSString stringWithFormat:@"%.4f",finTime];
    }
    else if ([hs3.text floatValue] == 0) {
        hs3.text = [NSString stringWithFormat:@"%.4f",finTime];
    }
    else if ([hs4.text floatValue] == 0) {
        hs4.text = [NSString stringWithFormat:@"%.4f",finTime];
    }
    else if (finTime < highscore) {
        hs4.text = hs3.text;
        hs3.text = hs2.text;
        hs2.text = hs1.text;
        hs1.text = hs.text;
        hs.text = [NSString stringWithFormat:@"%.4f",finTime];
    }
    else if (finTime < highscore1) {
        hs4.text = hs3.text;
        hs3.text = hs2.text;
        hs2.text = hs1.text;
    }
    else if (finTime < highscore2) {
        hs4.text = hs3.text;
        hs3.text = hs2.text;
        hs2.text = [NSString stringWithFormat:@"%.4f",finTime];
    }
    else if (finTime < highscore3) {
        hs4.text = hs3.text;
        hs3.text = [NSString stringWithFormat:@"%.4f",finTime];
    }
    else if (finTime < highscore4) {
        hs4.text = [NSString stringWithFormat:@"%.4f",finTime];
    }
    [self saveScore];
}

-(void) saveScore
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setFloat:finTime forKey:@"highScore"];
    [defaults setFloat:finTime forKey:@"highScore1"];
    [defaults setFloat:finTime forKey:@"highScore2"];
    [defaults setFloat:finTime forKey:@"highScore3"];
    [defaults setFloat:finTime forKey:@"highScore4"];

    [[NSUserDefaults standardUserDefaults] synchronize];

}

問題是, hs.text將不會被設置(或者,如果你做的是,在廈門國際銀行/故事板將被設置為0),當viewDidLoad被調用。 因此,它總是進入第一個if語句,並且您不使用NSUserDefaults存儲的值。

我建議將文本字段設置如下:

- (void)viewDidLoad
{
  [super viewDidLoad];
  highscore = [[NSUserDefaults standardUserDefaults] floatForKey: @"highScore"];
  highscore1 = [[NSUserDefaults standardUserDefaults] floatForKey: @"highScore1"];
  highscore2 = [[NSUserDefaults standardUserDefaults] floatForKey: @"highScore2"];
  highscore3 = [[NSUserDefaults standardUserDefaults] floatForKey: @"highScore3"];
  highscore4 = [[NSUserDefaults standardUserDefaults] floatForKey: @"highScore4"];

  if (highscore)
    hs.text = [NSString stringWithFormat:@"%.4f", highscore];
  if (highscore1)
    hs1.text = [NSString stringWithFormat:@"%.4f", highscore1];
  if (highscore2)
    hs2.text = [NSString stringWithFormat:@"%.4f", highscore2];
  if (highscore3)
    hs3.text = [NSString stringWithFormat:@"%.4f", highscore3];
  if (highscore4)
    hs4.text = [NSString stringWithFormat:@"%.4f", highscore4];

  ...

另外,我認為saveScore方法不能正常工作,因為它將所有高分設置為finTime 您可能希望將它們設置為每個hs文本字段的float值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM