NSUserDefaults怀疑

时间:2011-11-23 06:43:45

标签: iphone twitter nsuserdefaults sharing

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

我有这个代码用于显示twitter的用户名,它运行良好,但是当我导航到另一个页面然后回来时按钮的标题用户名消失了,我知道我们必须在viewwillapper中设置一个NSUserDefault值来检查用户名是否存在。但我不知道如何处理nSUserDefault,如果有人有想法解决这个问题,请帮助我。 提前致谢。 编辑:

- (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
    {

    }

这就是我的观点 和

- (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];
    }

这就是我的twiter方法看起来像

3 个答案:

答案 0 :(得分: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");
}

如果您需要任何澄清,请在评论中告诉我。

答案 1 :(得分:0)

你想要以某种方式保存这个方面是正确的,NSUserDefaults可以正常工作。保存和阅读样本如下:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

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

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

答案 2 :(得分:-1)