所以我有一个应用程序,允许你在首页上放置标题和作者,然后你点击回车,它将进入应用程序的实际功能。我想用NSUserDefaults保存数据,这样当他们点击回车按钮时,它会保存 * AND 进入下一个视图。我已将它设置为storybord已进入下一个视图,但是当我使用此代码时:
-(IBAction)enter:(id)sender {
titleString = [[NSString alloc] initWithFormat:[title text]];
[title setText:titleString];
NSUserDefaults *titleDefault = [NSUserDefaults standardUserDefaults];
[titleDefault setObject:titleString forKey:@"stringkey"];
authorString = [[NSString alloc] initWithFormat:[author text]];
[title setText:authorString];
NSUserDefaults *authorDefault = [NSUserDefaults standardUserDefaults];
[authorDefault setObject:authorString forKey:@"stringkey2"];
}
按下按钮时总会崩溃。我已经定义了所有NSStrings等等,所以我看不出问题所在。我也加载了:
title.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"stringkey"];
author.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"stringkey2"];
在viewdidload下,我可以帮助解决为什么这不起作用?
答案 0 :(得分:1)
只需优化您的-enter:
方法:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:title.text forKey:@"stringkey"];
[defaults setObject:author.text forKey:@"stringkey2"];
[defaults synchronize]; // this will store them instantly!
对于崩溃:您能否向我们提供确切的崩溃日志?也许你的Button链接到一个未知的选择器......
答案 1 :(得分:0)
首先,有几个问题:here,here。首先尝试搜索,至少让人们知道为什么你找到的重复问题不适合你。
其次,我认为您可能会因添加synchronize
而受益。使用此:
titleString = [[NSString alloc] initWithFormat:[title text]];
[title setText:titleString];
NSUserDefaults *titleDefault = [NSUserDefaults standardUserDefaults];
[titleDefault setObject:titleString forKey:@"stringkey"];
[titleDefault synchronize];
authorString = [[NSString alloc] initWithFormat:[author text]];
[author setText:authorString];
NSUserDefaults *authorDefault = [NSUserDefaults standardUserDefaults];
[authorDefault setObject:authorString forKey:@"stringkey2"];
[authorDefault synchronize];
我还将[title setText:authorString];
行更改为[author setText:authorString];
。但是,我认为将NSString
分配给文本字段的值然后将文本设置回您创建的字符串的值的方式有点多余。我没有必要。无论如何,希望这会有所帮助。