2012-03-30 3 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

答えて

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

が、私は1つだけ変更し(これを試してみてくださいライン)

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

EDIT これはNSUserDefaultsに物事を保存する方法です。

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

そして、いつでも/私はそれを

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

てみ取得したいwhereever:設定とするために

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

を:

それを取得するための
[[NSUserDefaults standardUserDefaults] valueForKey:@"Username"]; 

。輸入なし、何もない!

[[NSUserDefaults standardUserDefaults] synchronize]; 

これはあなたのデフォルトは、あなたが彼らに次の時間を取得できるようにファイルに書き込めます:

+0

私はNSString * user = [standardUserDefaults objectForKey:@ "Username"]を設定することでそれを書きました。二度。ドゥー! – hanumanDev

0

よくある間違いは... コールを忘れたり、デフォルト設定を保存するために知っていません。