2014-02-01 4 views
0

Im работает над игрой BlackJack, и у меня возникли проблемы с поиском правильного способа сохранения и загрузки имени с именем PlayerMoney с использованием NSNumbers и NSUserDefaults.Сохранение и загрузка NSNumber

Вот как Im пытается загрузить значения

-(void)createSceneContents { 


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

и здесь, где я пытаюсь сохранить его

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

, прежде чем я добавил линию

self.PlayerMoney = PlayerMoneyLoad; 

Saving был но при загрузке игры «NSNumber PlayerMoneyLoad» не передаст значение «int PlayerMoney». Теперь, когда я добавил эту строку, когда игра сохраняется, кажется, что она выбирает случайное число где-то около 150000000, любая помощь ценится.

ответ

0

Чтобы получить NSNumber в int, используйте следующий код:

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

Таким образом, вы можете конвертировать NSNumber в int.

+0

Спасибо, я думаю, что сейчас у меня это работает. – nick

+0

Использование 'NSNumber' не требуется. См. Мой ответ. Тем не менее, используйте современный синтаксис. Первая строка может быть просто: 'NSNumber number = @ 10;'. Или с переменной она будет: 'NSNumber number = @ (self.PlayerMoney);'. – rmaddy

0

Вы делаете это с трудом. Прочтите документы для NSUserDefaults.

Чтобы сохранить просто сделать:

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

Чтобы читать просто сделать:

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

вещи всегда легче с правом API.

Смежные вопросы