iOS9 和 XCode 7 中的 NSUserDefaults 没有 return 值

NSUserDefaults in iOS9 and XCode 7 does not return values

我正在使用 NSUserDefaults 检索值。比如用户名。

我已经创建了一个 constants.h 文件添加了我的 viewcontroller 像这样

#import "constants.h"

在constants.h - 用户名定义为

#define USERNAME @"Monty Python"  

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

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

但是用户名总是 nil/null - 我的其他键也是。

NSUserDefaults 如何知道使用我的 Constants.h 文件?我的代码查找正确 'location' 吗?为什么我的值在调试器和 NSLog 中始终为零?

感谢

How does NSUserDefaults know to use my Constants.h file?

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

在您的代码中,您使用 Constants.h 文件作为向您的代码提供 键 [=26] 名称的方式=] 在 NSUserDefaults 中使用。这是很好的做法!但这与对应于这些键的 values 如何首先获得 into NSUserDefaults 无关。

设置 "default defaults" 的方法(即,将每个 key-value 对的初始值保存在 NSUserDefaults 中)——如果这是你想要做的——是通过代码很早就运行并调用 registerDefaults:.

NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];

节省:

[currentDefaults setObject:@"Jon" forKey:@"myName"];

获得:

[currentDefaults objectForKey:@"myName"]