2012-03-30 17 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]; 

這會寫你的默認文件,讓您找回它們下一次。

相關問題