我使用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
答案 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”]