質問

Im working on a BlackJack game and I'm having trouble finding the correct way of saving and loading an int named PlayerMoney using NSNumbers and NSUserDefaults.

Here is how Im trying to load the Values

-(void)createSceneContents {


    //Load ---------------------------------------------------------
    NSUserDefaults *Defaults = [NSUserDefaults standardUserDefaults];
    NSNumber *PlayerMoneyLoad = [Defaults objectForKey:@"PlayerMoneySave"];
    self.PlayerMoney = PlayerMoneyLoad;
    NSLog(@"PlayerMoneyLoad:%@", PlayerMoneyLoad);
    NSLog(@"PlayerMoney:%@", self.PlayerMoney);

and here is where I try to save it

    //Save ---------------------------------------------------------
    NSUserDefaults *Defaults = [NSUserDefaults standardUserDefaults];
    NSNumber *PlayerMoneySave = [NSNumber numberWithInt:self.PlayerMoney];
    [Defaults setObject:PlayerMoneySave forKey:@"PlayerMoneySave"];
    [Defaults synchronize];

before I added the line

    self.PlayerMoney = PlayerMoneyLoad;

Saving was working but upon loading the game the "NSNumber PlayerMoneyLoad" would not transfer the value to the "int PlayerMoney". Now that I've added this line, when the game saves it seems to pick a random number somewhere around 150000000 any help is appreciated.

役に立ちましたか?

解決

To get NSNumber into int, use the the following code:

NSNumber number = [NSNumber numberWithInt:10];    //Pass integer value to NSNumber
int intNumber = [number intValue];     // Get integer value back from NSNumber

In this way you can convert NSNumber to int.

他のヒント

You are doing this the hard way. Read the docs for NSUserDefaults.

To save simply do:

[[NSUserDefaults standardUserDefaults] setInteger:self.PlayerMoney forKey:@"PlayerMoneySave"];

To read simply do:

self.PlayerMoney = [[NSUserDefaults standardUserDefaults] integerForKey:@"PlayerMoneySave"];

Things are always easier with the right API.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top