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"]
我正在使用 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"]