안녕하세요. 최고 기록을 저장하려고합니다. 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'가 설정된 부분을 포함 할 수 있습니까? – bachonk
'hs'가'nil'이 아닌가요? 텍스트가 이미 텍스트 필드에 입력 되었습니까? 'hs.text'가'viewDidLoad'의 초기에 약간의 텍스트를 가질 것으로 기대하는 것이 이상하게 보입니다. 텍스트가 없거나 텍스트가 숫자가 아니거나'hs'가'nil'이면'floatValue'가'0'이됩니다. – rmaddy
첫 번째 if 문에 hs.text가 설정됩니다. hs.text == nil을 시도했는데 if 문에 if 문이 들어 가지 않습니다. –