使用 NSUserDefaults 保存和检索 UILabel 值
Posted
技术标签:
【中文标题】使用 NSUserDefaults 保存和检索 UILabel 值【英文标题】:Saving and Retrieving UILabel value with NSUserDefaults 【发布时间】:2011-05-18 17:44:31 【问题描述】:我试图将 UILabel
值保存到 NSUserDefaults
。我用这个代码做了IBAction
:
-(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";
我做错了什么以及如何检索结果?
编辑
使用此代码,我会在日志中显示结果。我采取了同样的行动。
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
【问题讨论】:
您的日志语句在哪里?请提供那部分代码。 您在哪里以及如何显示结果? 您发布了设置 userdefault 的代码,类似地发布了您使用 nsuserdefault 打印结果值的地方 我不知道如何显示来自 NSUserDefaults 的结果。查看编辑后的代码。 【参考方案1】:您的代码看起来正确,因此问题可能不是您发布的函数,而是包含您的NSLog
的代码。您可能会以错过第一次设置时的方式记录该值。
【讨论】:
【参考方案2】:你的日志语句应该是
NSLog(@"%@",[[NSUserDefaults 标准用户默认值] objectForKey:@"result"]);
这应该是在您在 NSUserDefaults 中设置对象之后。
【讨论】:
第二次按下后仍然显示正确的结果。你能帮我从 NSUserDefaults 中检索结果吗?我不知道是什么代码以及我把它放在哪里。 您正在使用“result”键将标签值保存在 NSUserDefaults 中。要从 NSUserDefaults 取回它的值,您需要编写 [[NSUserDefaults standardUserDefaults] objectForKey:@"result"]。但是在获取值之前,我希望值是设置好的。您正在设置单击按钮的值。因此,当您第一次单击该按钮时,我的猜测是不会在 NSUserDefaults 中设置您的值。你的日志语句在你的 saveData 中吗? 我需要把代码放在哪里来检索值?在 MyAppDelegate.m 中?是的,Log 语句在 saveData 中。【参考方案3】:将它添加到 appDelegate 中的 applicationDidFinishLaunching 或 viewController 的 init 方法中(你必须创建一个):
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if(prefs == nil)
[prefs setObject:@"anything" forKey:@"result"];
[prefs synchronize];
【讨论】:
以上是关于使用 NSUserDefaults 保存和检索 UILabel 值的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSUserDefaults 保存数组会使应用程序崩溃
保存到 NSUserDefaults 的字典总是返回 nil
使用 NSKeyedArchiver 将 NSMutableArray 保存到 NSUserDefaults