NSUserDefaults сомневается - PullRequest
       13

NSUserDefaults сомневается

0 голосов
/ 23 ноября 2011
#pragma mark SA_OAuthTwitterControllerDelegate
- (void) OAuthTwitterController: (SA_OAuthTwitterController *) controller authenticatedWithUsername: (NSString *) username {
    NSLog(@"Authenicated for %@", username);
    [_btnTwitter setTitle:username forState:UIControlStateNormal];
}

У меня есть этот код для отображения имени пользователя для твиттера, и он работает хорошо, но когда я перехожу на другую страницу и возвращаюсь, название пользователя кнопки исчезает, я знаю, что мы должны установить значение NSUserDefault в viewwillapperдля проверки имени пользователя существует или нет. Но я не знал, как обращаться с 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
    {

    }

это то, как мои 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 ]

3 голосов
/ 23 ноября 2011

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 голосов
/ 23 ноября 2011
0 голосов
/ 23 ноября 2011

Вы правы в том аспекте, который хотите каким-то образом сохранить, и NSUserDefaults будет хорошо работать для этого. Сохраните и прочитайте образцы ниже:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

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

// reading an NSString
NSString *theString = [prefs stringForKey:@"UsersUsername"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...