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