首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSUserDefaults疑虑

NSUserDefaults疑虑
EN

Stack Overflow用户
提问于 2011-11-23 14:43:45
回答 3查看 286关注 0票数 0
代码语言:javascript
复制
#pragma mark SA_OAuthTwitterControllerDelegate
- (void) OAuthTwitterController: (SA_OAuthTwitterController *) controller authenticatedWithUsername: (NSString *) username {
    NSLog(@"Authenicated for %@", username);
    [_btnTwitter setTitle:username forState:UIControlStateNormal];
}

我有这个代码为推特显示用户名,它工作得很好,但当我导航到另一个页面,回来的标题用户名的按钮消失,我知道我们必须在视图中设置一个NSUserDefault值检查用户名是否存在或not.But我不知道如何处理的nSUserDefault,如果有人有解决这个问题的想法,请帮助我。提前谢谢。编辑:

代码语言:javascript
复制
- (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
    {

    }

这就是我的视图的外观

代码语言:javascript
复制
- (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的样子

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-23 14:58:39

NSUserDefaults使用起来非常简单。它们有点像字典,你设置一个对象和一个键。所以,要做你想做的事情,你可以使用如下代码:

代码语言:javascript
复制
//This just sets up the defaults - similar to allocating a dictionary
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

然后,要在默认设置中设置一个对象,您可以像这样设置一个对象/密钥对:

代码语言:javascript
复制
[defaults setObject:username forKey:@"kTwitterUserName"];

在某个时刻调用这个方法是很重要的:[defaults synchronize];。这将显式保存默认值。因此,您最好在设置用户名键之后立即执行此操作。

然后读取保存的用户名:

代码语言:javascript
复制
 NSString *username = [defaults objectForKey:@"kTwitterUserName"];

您的oAuth方法应该如下所示:

代码语言:javascript
复制
- (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将如下所示:

代码语言:javascript
复制
- (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");
}

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

票数 3
EN

Stack Overflow用户

发布于 2011-11-23 14:47:41

你的观点是正确的,你想以某种方式保存它,而NSUserDefaults在这方面工作得很好。保存和读取样本如下:

代码语言:javascript
复制
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

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

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

Stack Overflow用户

发布于 2011-11-23 15:20:17

http://www.icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/了解更多详细信息

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8238238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档