Сохранение / загрузка данных с помощью NSUserDefaults (cocos2d iphone) - PullRequest
0 голосов
/ 12 июня 2011

У меня есть сцена Upgrades, где пользователь может обновить различные атрибуты игры, и я хочу, чтобы эта информация была сохранена. Например, когда пользователь тратит 1000 очков, чтобы обновить магазин на 5, я хочу, чтобы эта информация была сохранена для следующего запуска приложения. Мне сказали, что NSUserDefaults - хороший способ сделать это. Правильный ли это способ сохранения / загрузки mag int?

-(void)plusFiveMag:(id)sender {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:NSNumber numberWithInt:mag forKey:@"mag"];
    mag += 5; 
}   
-(void)viewDidLoad {
    [super viewDidLoad];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:NSNumber numberWithInt:mag forKey:@"mag"];
}

Ответы [ 2 ]

4 голосов
/ 12 июня 2011

Использование аксессоров делает все это намного проще.Использование аксессоров означает, что вам никогда не придется беспокоиться о том, как mag хранится внутри, поэтому вы можете прозрачно хранить его в NSUserDefaults, а не в ivar.

@property (nonatomic, readonly, assign) NSUInteger mag;

NSString * const kMagDefaultsKey = @"mag";

- (NSUInteger)mag {
  return [[NSUserDefaults standardUserDefaults] integerForKey:kMagDefaultsKey];
}

- (void)setMag:(NSUInteger)value {
  [[NSUserDefaults standardUserDefaults] setInteger:value forKey:kMagDefaultsKey];
}

- (void)addFiveToMag:(id)sender {
  self.mag = self.mag + 5;
}
0 голосов
/ 12 июня 2011

Храните его так:

-(void)plusFiveMag:(id)sender {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setInteger:mag forKey:@"mag"];
    mag += 5; 
} 

Чтобы получить его, вам нужно использовать:

-(void)viewDidLoad {
    [super viewDidLoad];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    int mag = [defaults integerforKey:@"mag"];
}
...