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