2012-03-30 39 views
1

我使用下面的代码(从AppDelegate文件)将登录的Facebook用户名保存到NSUserDefaults首选项。该代码检索用户名并将其输出到控制台就好了。当我尝试在另一个视图控制器中做同样的事情时,NSLog输出返回(null)。从NSUserDefaults检索数据 - 在一个视图中工作,但在另一个视图中失败

我错过了什么?谢谢你的帮助。

- (void)request:(FBRequest *)request didLoad:(id)result { 
    if ([result isKindOfClass:[NSDictionary class]]) { 
     NSDictionary* hash = result; 
     NSString *username = (NSString*)[hash valueForKey:@"name"]; 
     [[NSUserDefaults standardUserDefaults] setObject:username forKey:@"Username"]; 
     NSLog(@"%@", username); 
     NSUserDefaults * standardUserDefaults = [NSUserDefaults standardUserDefaults]; 
     NSString *user = [standardUserDefaults stringForKey:@"Username"]; 
     NSLog(@"username from user defs %@",user); 
    } 
}; 

下面是从其他视图控制器不工作代码:

NSUserDefaults * standardUserDefaults = [NSUserDefaults standardUserDefaults]; 
NSString *user = [standardUserDefaults stringForKey:@"Username"]; 
NSLog(@"username from user defs %@",user); 
userNameLbl.text = user; 

这里的日志输出:

username from user defs app delegate my Facebook name 
2012-03-30 13:29:20.564 project V2[63339:15803] (null) 
2012-03-30 13:29:20.565 project V2[63339:15803] username from user defs app delegate (null) 
2012-03-30 13:29:28.620 project V2[63339:15803] username from user defs (null) 
+0

我添加#import“AppDelegate.h”到视图控制器,一切都很好。 – hanumanDev 2012-03-30 12:27:05

回答

2
NSUserDefaults * standardUserDefaults = [NSUserDefaults standardUserDefaults]; 
NSString *user = [[NSUserDefaults standardUserDefaults] stringForKey:@"Username"]; 
NSLog(@"username from user defs %@",user); 
userNameLbl.text = user; 

试试这个(我改变只是一个线)

NSString *user = [[NSUserDefaults standardUserDefaults] stringForKey:@"Username"]; 

编辑 这是我如何保存NSUserDefaults;

NSString *theKeyIWantToSave; 
NSUSerDefaults *defaults=[NSUserDefaults standardUserDefaults]; 
[defaults setObject:theKeyIWantToSave forKey:@"SomeKey"]; 

每当/无论我想找回它

NSString *key=[[NSUserDefaults standardUserDefaults] objectForKey:@"SomeKey"]; 
1

尝试:

[[NSUserDefaults standardUserDefaults] setValue:newStr forKey:@"Username"]; 

设置和:

[[NSUserDefaults standardUserDefaults] valueForKey:@"Username"]; 

得到它。没有进口,没什么!

+0

我已经通过设置NSString * user = [standardUserDefaults objectForKey:@“Username”]来写它了;两次。卫生署! – hanumanDev 2012-03-30 12:43:10

0

一个常见的错误是忘记或者不知道保存您的默认值.. 电话:

[[NSUserDefaults standardUserDefaults] synchronize]; 

这会写你的默认文件,让您找回它们下一次。

相关问题