簡體   English   中英

從NSUserDefaults檢索數據 - 在一個視圖中工作,但在另一個視圖中失敗

[英]Retrieving data from NSUserDefaults - works in one view but fails in another

我使用下面的代碼(來自AppDelegate文件)將登錄的Facebook用戶名保存到NSUserDefaults首選項。 代碼檢索用戶名並將其輸出到控制台就好了。 當我嘗試在另一個視圖控制器中執行相同的操作時,NSLog輸出返回(null)。

我錯過了什么? 謝謝你的幫助。

- (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)
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"];

嘗試:

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

用於設置和:

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

得到它。 沒有進口,沒有!

一個常見的錯誤是忘記或不知道保存默認值。呼叫:

[[NSUserDefaults standardUserDefaults] synchronize];

這會將您的默認值寫入文件,以便您下次檢索它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM