iOS9和XCode 7中的NSUserDefaults不返回值

时间:2016-01-22 17:53:26

标签: ios nsuserdefaults

我使用NSUserDefaults来检索值。例如用户名。

我创建了一个 constants.h 文件,将其添加到我的viewcontroller中

#import "constants.h"

在constants.h中 - 用户名定义为

#define USERNAME @"Monty Python"  

然后在我的viewDidLoad中,我尝试读取像这样的值

  NSString *userName = [[NSUserDefaults standardUserDefaults] stringForKey:USERNAME];

但是userName总是nil / null - 我的其他键也是如此。

NSUserDefaults如何知道使用我的Constants.h文件?我的代码是否在正确的位置'?为什么我的值总是为零 - 在调试器和NSLog中?

THX

2 个答案:

答案 0 :(得分:5)

  

NSUserDefaults如何知道使用我的Constants.h文件?

它没有。两者之间没有任何联系,任何期望有一个是错误的。您的 Constants.h 文件在代码中配置了一些全局变量,作为全局变量可用于其他代码(假设代码导入该文件)。 NSUserDefaults是一种在磁盘上保存和检索键值对 .plist 文件的方法。对于完全不同的目的,它们是完全不同的东西。

在您的代码中,您使用 Constants.h 文件作为向代码提供要在NSUserDefaults中使用的的名称的方法。这是一个很好的做法!但这与这些键对应的如何首先将导入 NSUserDefaults无关。

设置"默认默认设置" (即,要保存在NSUserDefaults中的每个键值对的初始值) - 如果这是您尝试执行的操作 - 通过非常早期运行的代码并调用registerDefaults:

答案 1 :(得分:2)

NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];

保存:

  

[currentDefaults setObject:@“Jon”forKey:@“myName”];

获得:

  

[currentDefaults objectForKey:@“myName”]