-5

以前、スコアを追加することでこのような問題が発生しましたが、解決できなかったので、今すぐ質問して、両方の問題を同時に修正することにしました。すでに持っているコインに追加されるコインを購入できるお店を作りました。彼らがすでに持っているコインは、次の方法でロードできます。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *loadcoins = [defaults objectForKey:@"savedcoins"];
[coinsdisplay setText:loadstring];

コインを100枚買えるボタンがあります

-(IBAction)savecoins100:(id)sender { 
    NSString *savecoins = @"100"; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:savecoins forKey:@"savedcoins"]; 
    [defaults synchronize];
}

私が欲しいのは、新しい文字列が@ "100"ではなく、100以上の以前のコインになることです。これはロードコインになりますが、これを正しくコーディングする方法がわかりません。誰かが私を助けてくれますか?

ありがとう

4

3 に答える 3

5

初心者にとっては、文字列を使用するべきではありません...カウントしているのに、なぜ整数を使用しないのですか?

- (void)addCoins:(int)coinsToAdd
{
    int currentCoins = [[NSUserDefaults standardUserDefaults] integerForKey:@"savedcoins"];

    int newCoins = currentCoins + coinsToAdd;

    [[NSUserDefaults standardUserDefaults] setInteger:newCoins forKey:@"savedCoins"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

- (int)getCoins
{
    return [[NSUserDefaults standardUserDefaults] integerForKey:@"savedcoins"];
}

次に、それを表示する必要がある場合はいつでも、その場で文字列を作成できます。

[coinsDisplay setText:[NSString stringWithFormat:@"Coins: %i",[self getCoins]]];
于 2012-08-23T14:11:51.233 に答える
2

これを試してください:

NSString *savecoins = @"100";
NSInteger coins = [savecoins integerValue];
coins += 78;
savecoins = [NSString stringWithFormat:@"%d", coins];

その後、。を使用して文字列を再度操作できます@"178"

于 2012-08-23T14:13:17.147 に答える
0

に保存savecoinsしていNSUserDefaultsます。そしてsavecoins100なので100になるのは理にかなっています。それloadcoinsは「古い」コインだとも言えます。したがって、ここに2つの数値がsavecoinsありloadcoinsます。あなたがする必要があるのはそれらを一緒に追加することです。Ryanのサンプルコードを参照してください。

于 2012-08-23T14:15:10.083 に答える