[英]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.