0

各レベルのスコアリング システムを含む Xcode でゲームを作成しています。ここに、デリゲートを使用して NSString (passedValue1) を取得するコードがあります。

次に、viewDidLoad で値を受け取り、値を UILabel に表示するコードを追加します。

-(void)viewDidLoad
    { 


        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib

        // Do any additional setup after loading the view, typically from a nib
        NSString *key=@"labelKey";

        if(passedValue1){
            NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

            NSObject * object = [prefs valueForKey:key];
            if(object != nil){
                NSUserDefaults *defults = [NSUserDefaults standardUserDefaults];
                [defults setValue:passedValue1 forKey:key];
                [defults synchronize];
            }
            else{
                NSUserDefaults *defults = [NSUserDefaults standardUserDefaults];

                NSInteger readScore=[[[NSUserDefaults standardUserDefaults] valueForKey:key] integerValue];
                NSInteger newValue=readScore+[passedValue1 integerValue];
                [defults setValue:[NSString stringWithFormat:@"%d",newValue] forKey:key];
                [defults synchronize];

            }
        }
        label.text = [[NSUserDefaults standardUserDefaults]objectForKey:key];
    }

値を表示したら、NSUserDefault を使用してラベルに保存します。ただし、ゲームをリプレイして別のスコア値を取得したら、現在保存されている値に新しい passedValue1 値を追加したいと思います...

例: レベルをプレイして、スコア値 10 を取得したとします。その後、値が保存され、レベルをリプレイします。次に、保存された値を取得して、スコアを付けたばかりの値に追加したいと思います。つまり、私が獲得した 2 番目の値は 20 です。次に、コードでそれらを合計して 30 の値を取得したいと思います。これは、以前に渡された値と現在渡されている値を追加することです。

私のコードの何が問題になっていますか??

前もって感謝します。

4

2 に答える 2

3

これには使用valueForKey:しないでください (あなたが思っているようなものではありません。 Key-Value Codingを参照してください)。代わりに、objectForKey:or を使用する必要がありますintegerForKey:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSInteger value = [defaults integerForKey:key];
value += [passedValue1 integerValue];
[defaults setInteger:value forKey:key];
BOOL success = [defaults synchronize];
于 2013-04-06T10:49:32.073 に答える
1

if条件を間違えたようです。

if (object == nil) { // <-- you have object != nil here !
    // save new value
} else {
    // read old value, add something, save new value
}
于 2013-04-06T10:51:35.887 に答える