以下のコードを使用すると発生する問題は、secondViewController の viewDidLoad メソッドが呼び出されたときにのみ totalScore が更新されることです。そのため、addOne ボタンを 2 回続けて押すと、retrivingString は 2 回とも同じであるため、secondViewController で更新されていないため、同じ既存の値に 1 を追加するだけです。firstViewController で addOne ボタンが押されるたびに、secondViewController で totalScore を更新するにはどうすればよいですか
最初のViewController:
-(void)saveString:(NSString *)myString {
[[NSUserDefaults standardUserDefaults] setObject:myString forKey:@"firstScore"];
}
-(NSString *)retrieveString {
NSString *recoveredString = [[NSUserDefaults standardUserDefaults]objectForKey:@"totalScore"];
return recoveredString;
}
-(IBAction) addOne {
NSString *totalScore = [self retrieveString];
NSInteger totalScoreInt = [totalScore intValue];
NSInteger newScore = totalScoreInt+1;
NSString *newScoreString = [NSString stringWithFormat:@"%i", newScore];
[self saveString:newScoreString];
}
2番目のViewController:
-(void)saveString:(NSString *)myString {
[[NSUserDefaults standardUserDefaults] setObject:myString forKey:@"totalScore"];
}
-(NSString *)retrieveString {
NSString *recoveredString = [[NSUserDefaults standardUserDefaults]objectForKey:@"firstScore"];
return recoveredString;
}
-(void) viewDidLoad {
NSString *firstScore = [self retrieveString];
NSInteger firstScoreInt = [firstScore intValue];
NSInteger newTotalScore = firstScoreInt+1;
NSString *newTotalScoreString = [NSString stringWithFormat:@"%i", newTotalScore];
[self saveString:newTotalScoreString];
}
問題を理解できるように説明したことを願っているので、誰かがこれを手伝ってくれるかもしれません。