0

所以我有一个应用程序,它可以让你在首页输入标题和作者,然后你按 Enter 键,它将进入应用程序的实际功能。我想用 NSUserDefaults 保存数据,这样当他们单击 enter 按钮时,它会保存它*进入下一个视图。我已经用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 下,我可以就为什么这不起作用提供一些帮助吗?

4

2 回答 2

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!

对于崩溃:您能否向我们提供确切的崩溃日志?也许你的按钮链接到一个未知的选择器......

于 2012-07-12T20:21:37.910 回答
0

首先,关于这个有几个问题:这里这里。尝试先四处搜索,至少让人们知道为什么您发现的重复问题对您不起作用。

其次,我认为您可能会从添加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];. 但是,我确实认为将NSStrings 分配给文本字段的值然后将文本设置回您创建的字符串的值的方式有点多余。我不明白需要。无论如何,希望这会有所帮助。

于 2012-07-12T20:18:44.400 回答