문제

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