使用NSUserDefaults保存/加载数据(cocos2d iphone)

时间:2011-06-11 20:53:27

标签: iphone load cocos2d-iphone save nsuserdefaults

我有一个升级场景,用户可以升级游戏的不同属性,我希望保存这些信息。例如,当用户花费1000点来将mag升级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 个答案:

答案 0 :(得分:4)

使用访问器使这一切变得如此简单。使用访问器意味着您永远不必担心内部存储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;
}

答案 1 :(得分:0)

像这样存储:

-(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"];
}