2011-05-18 76 views
0

我试图将UILabel值保存到NSUserDefaults。我做IBAction与此代码:使用NSUserDefaults保存并检索UILabel值

-(IBAction)saveData:(id)sender { 
    NSString *resultString = label.text; 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setObject:resultString forKey:@"result"]; 
    [prefs synchronize]; 

} 

然后,我用Touch Up Inside它连接到按钮。 什么日志显示后,我按下了按钮:

result = 0; 

当我第二次按下,然后它的作品。

result = "28.34"; 

什么我做错了,我怎么能检索结果?

EDIT

有了这个代码我显示结果的日志。我采取了同样的行动。

NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]); 
+0

哪里是你的日志语句?请提供该部分代码。 – 2011-05-18 17:47:30

+0

你在哪里以及如何显示结果? – 2011-05-18 17:50:39

+0

我不知道如何显示NSUserDefaults的结果。看编辑的代码。 – 2011-05-18 18:06:15

回答

0

你的代码看起来正确的,所以这个问题可能不是您发布的功能,而是包含您NSLog的代码。您可能会以第一次设置时错过的方式记录该值。

0

你的日志的说法应该是

的NSLog(@ “%@”,[[NSUserDefaults的 standardUserDefaults] objectForKey:@ “结果”]);

这应该在NSUserDefaults中设置对象后。

+0

第二次按下后仍然显示正确的结果。你能帮我从NSUserDefaults检索结果吗?我不知道什么代码和我把它放在哪里。 – 2011-05-18 18:30:59

+0

您正在使用键“result”将标签值保存在NSUserDefaults中。为了从NSUserDefaults中取回它的值,你需要编写[[NSUserDefaults standardUserDefaults] objectForKey:@“result”]。但在获得价值之前,我希望价值已经确定。您点击按钮即可设置该值。因此,当你第一次点击按钮时,你的值不会被设置在NSUserDefaults中,这是我的猜测。你的日志语句是否在你的saveData中? – 2011-05-18 18:42:00

+0

我需要把代码检索值?在MyAppDelegate.m中?是的,Log语句在saveData中。 – 2011-05-19 04:17:54

0

中的appDelegate或在的viewController init方法添加到您的applicationDidFinishLaunching(你必须创建一个):

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
if(prefs == nil) 
{  
[prefs setObject:@"anything" forKey:@"result"]; 
    [prefs synchronize]; 
} 
+0

什么也没有发生 – 2011-05-20 14:49:31