1

以下のコードを使用すると発生する問題は、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];
 }

問題を理解できるように説明したことを願っているので、誰かがこれを手伝ってくれるかもしれません。

4

2 に答える 2

1

私がこれを正しく理解している場合、ここで発生しているエラーは、firstViewController の addOne 関数も合計スコアを更新しているため、合計スコアを保存していないことです。したがって、firstViewController の saveString 関数で、次の行も追加します。

[[NSUserDefaults standardUserDefaults] setObject:myString forKey:@"totalScore"];

お役に立てれば

于 2013-01-31T20:47:33.383 に答える