无法设置NSUserDefaults字段

mle*_*s54 5 iphone nsuserdefaults

我在我的应用初始化(第一次)中有以下代码:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *uid=@"1";
[defaults setObject:uid forKey:@"init_val"];
[defaults synchronize];
Run Code Online (Sandbox Code Playgroud)

很久以后在代码中(响应按下按钮)我使用以下方法检查值:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *initVal=[defaults objectForKey:@"init_val"];
Run Code Online (Sandbox Code Playgroud)

initVal总是为零.我已经检查过,init_val在我的设置包中设置与我可以设置和读取的另一个字段完全相同(它们都设置了一个名为"Key"的字段).

Par*_*att 5

@ mlewis54:

您可以尝试此代码.我很确定它会对你有用.

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *uid=@"1";
[defaults setObject:uid forKey:@"init_val"];
[defaults synchronize];
Run Code Online (Sandbox Code Playgroud)

对于检索数据,您应使用以下代码:

NSString *initVal=[[NSUserDefaults standardUserDefaults] valueForKey:@"init_val"];
Run Code Online (Sandbox Code Playgroud)

要么

NSString *initVal=[[NSUserDefaults standardUserDefaults] objectForKey:@"init_val"];
Run Code Online (Sandbox Code Playgroud)

编辑:

如果仍然给出nil,那么您可以使用以下代码:

NSString *initVal=[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] valueForKey:@"init_val"]];
Run Code Online (Sandbox Code Playgroud)

要么

NSString *initVal=[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"init_val"]];
Run Code Online (Sandbox Code Playgroud)

希望这对你有所帮助.