在标签中保存分数并在应用打开时加载

时间:2011-09-26 21:02:37

标签: iphone xcode ipad nsuserdefaults

我在我的iOS应用程序上设置了“点击计数器”,因此用户将知道他执行了多少次操作。我正在使用NSUserDefaults,因为我无法在应用程序打开时加载它。

首先我创建了一个存储数字的UILabel,并在每次用户点击它时增加它:

 - (IBAction) increaseScore {
self.currentScore = self.currentScore + 1;
currentScoreLabel.text = [NSString stringWithFormat: @"%ld", self.currentScore];

 // Saving:

  NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
  [defaults setObject:currentScoreLabel.text forKey: @"Score"];
  [defaults synchronize]; }

这很正常,每次点击按钮时标签都会增加+1。不确定它是否正确保存,因为当我关闭应用程序再次打开时,它不会加载,标签会回到零:

- (void)viewDidLoad {
   [super viewDidLoad];

currentScoreLabel.text = [[NSUserDefaults standardUserDefaults] stringForKey: @"Store"];
}

任何想法???

1 个答案:

答案 0 :(得分:1)

看起来你有一个错字。在您的increaseScore方法中,您为关键字“Score”设置了一个对象,而在您的viewDidLoad中,您正在尝试获取关键字“Store”的字符串。无赖,但我总是试图设置一个静态的NSString,他们正在使用这些键,因为这个原因。例如:

static NSString* kScoreKey = @"Score";

这样你打电话

[defaults setObject:currentScoreLabel.text forKey:kScoreKey];

currentScoreLabel.text = [[NSUserDefaults standardUserDefaults] stringForKey:kScoreKey];