2011-11-23 87 views
0
#pragma mark SA_OAuthTwitterControllerDelegate 
- (void) OAuthTwitterController: (SA_OAuthTwitterController *) controller authenticatedWithUsername: (NSString *) username { 
    NSLog(@"Authenicated for %@", username); 
    [_btnTwitter setTitle:username forState:UIControlStateNormal]; 
} 

我有這個代碼來顯示twitter的用戶名,它效果很好,但是當我導航到另一個頁面並回來按鈕的標題用戶名消失時,我知道我們必須設置一個NSUserDefault值在viewwillapper檢查用戶名是否存在,但我不知道如何處理nSUserDefault,如果有人有想法解決這個問題,請幫助我。 在此先感謝。 編輯:NSUserDefaults疑惑

- (void)viewWillAppear:(BOOL)animated{ 
    //Sets up the NSUserDefaults 
    //Sets up the NSUserDefaults 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    //Checks if there is a saved User Name  
    if([defaults objectForKey:@"kTwitterUserName"]) 
     NSString *username = [defaults objectForKey:@"kTwitterUserName"]; 
     [_btnTwitter setTitle:username forState:UIControlStateNormal]; 
    else 
    { 

    } 

這是我的viewWillAppear中如何lokks 和

- (void) OAuthTwitterController: (SA_OAuthTwitterController *) controller authenticatedWithUsername: (NSString *) username { 
    NSLog(@"Authenicated for %@", username); 
    [_btnTwitter setTitle:username forState:UIControlStateNormal]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:username forKey:@"kTwitterUserName"]; 
    [defaults synchronize]; 
    } 

這是我twitermethod看起來像

回答

3

NSUserDefaults的使用非常簡單。它們有點像字典,你設置了一個對象和一個鍵。那麼該怎麼做你想做,你可以使用類似以下內容:

//This just sets up the defaults - similar to allocating a dictionary 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

然後在你的默認設置對象,您可以設置一個目標/鍵對這樣的:

[defaults setObject:username forKey:@"kTwitterUserName"]; 

在某些時候調用此方法很重要:[defaults synchronize];。這明確地保存了默認值。所以你可以在設置用戶名密鑰後立即執行。

然後讀取保存的用戶名:

NSString *username = [defaults objectForKey:@"kTwitterUserName"]; 

您的OAuth方法應該是這樣的:

- (void) OAuthTwitterController: (SA_OAuthTwitterController *) controller authenticatedWithUsername: (NSString *) username { 
    //Any thing else you want to do - NSLogs, etc. 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:username forKey:@"kTwitterUserName"]; 
    [defaults synchronize]; 
} 

所以你viewWillAppear會是這個樣子:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    //Sets up the NSUserDefaults 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    //Checks if there is a saved User Name  
    if([defaults objectForKey:@"kTwitterUserName"]) { 
     NSString *username = [defaults objectForKey:@"kTwitterUserName"]; 
    } else 
     //Do something else because there is no saved username 
     NSLog(@"no username saved"); 
} 

設如果您需要澄清,我會在評論中知道。

+0

看起來很正確,但它的評論很難閱讀。這應該爲你做。但一定要將'@「用戶名」''更改爲'用戶名'。 – Andrew

+0

'用戶名'僅僅是我用來向你展示它如何工作的一個例子,對於你的具體情況,使用'username'作爲對象。 – Andrew

+0

太好了。樂意效勞。看看我剛剛添加到我的答案的新部分,這應該更明確 – Andrew

0

你在正確的方面,你會想保存這不知何故,和NSUserDefaults將正常工作。保存並閱讀樣本如下:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

// saving an NSString 
[prefs setObject:@"username" forKey:@"UsersUsername"]; 

// reading an NSString 
NSString *theString = [prefs stringForKey:@"UsersUsername"]; 
+0

但上面的代碼的已被放於viewwillapperar方法? – ICoder

+0

你有嗎?謝謝... – ICoder

+0

無論何時您檢索用戶名,您都可以保存上面顯示的用戶名。然後,只要你想訪問它再次閱讀它,即 - 在viewWillAppear中,你可以閱讀它,如上所示,並分配任何NSString或UI元素文本。 – Brayden