我在我的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"];
}
任何想法???
答案 0 :(得分:1)
看起来你有一个错字。在您的increaseScore方法中,您为关键字“Score”设置了一个对象,而在您的viewDidLoad中,您正在尝试获取关键字“Store”的字符串。无赖,但我总是试图设置一个静态的NSString,他们正在使用这些键,因为这个原因。例如:
static NSString* kScoreKey = @"Score";
这样你打电话
[defaults setObject:currentScoreLabel.text forKey:kScoreKey];
和
currentScoreLabel.text = [[NSUserDefaults standardUserDefaults] stringForKey:kScoreKey];