NSUserDefault Сомнения в iphone SDKS - PullRequest
0 голосов
/ 12 марта 2012

У меня есть приложение, которое выполняет резервное копирование и восстанавливает заметки в Evernote. Все работает хорошо, но у меня возникают проблемы при выходе и повторном входе в систему с использованием другой комбинации имени пользователя и пароля.

Когда я делюсь своей записью с начальными значениями имени пользователя и пароля, она работает правильно. Однако при выходе из системы и повторном входе с другим именем пользователя / паролем мои заметки отправляются в исходную учетную запись.

У меня есть класс Singleton, который записывает имя пользователя / пароль в NSUserDefaults и SFHFKeychainUtils. Вот метод входа в систему:

 NSError *error = nil;
            NSString *unameever = _txtevernoteUsername.text;

            NSString *pwdever   = _txtevernotepasswrd.text;
            [[NSUserDefaults standardUserDefaults] setObject:unameever forKey:@"usernameevernote"];
            [[NSUserDefaults standardUserDefaults]synchronize];
            [[NSUserDefaults standardUserDefaults] setObject:pwdever forKey:@"passwrdevernote"];
            [[NSUserDefaults standardUserDefaults]synchronize];
            BOOL flag = [SFHFKeychainUtils storeUsername:unameever andPassword:pwdever forServiceName:@"mybibleappever" updateExisting:TRUE error:&error];

Вот метод подключения для отправки имени пользователя / пароля:

- (void) connect {
  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

        //Checks if there is a saved User Name    
        if([defaults objectForKey:@"usernameevernote"]&&[defaults objectForKey:@"passwrdevernote"])
        {

            NSString *usernameever = [defaults objectForKey:@"usernameevernote"];
             NSString *passwever = [defaults objectForKey:@"passwrdevernote"];

        // Returned result from the Evernote servers after authentication
        EDAMAuthenticationResult* authResult =[userStore authenticate:usernameever :passwever : consumerKey :consumerSecret];

Вот метод выхода из системы:

    NSError *error = nil;
                NSString *usernameever = [[NSUserDefaults standardUserDefaults] objectForKey:@"usernameevernote"];
                BOOL flag = [SFHFKeychainUtils deleteItemForUsername:usernameever andServiceName:@"mybibleappever" error:&error];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"usernameevernote"]; 

возникли проблемы с моим кодом. Помогите мне сделать это.

1 Ответ

0 голосов
/ 12 марта 2012

Вот несколько советов:

  • Вы должны вызывать [[NSUserDefaults standardUserDefaults] синхронизировать] один раз, в конце установки значений.

  • Не похоже, что вы удаляете значение standardUserDefaults в выходе из системы, возможно, именно поэтому вы получаете тот же логин / имя пользователя, который сохраняется.

  • Из кодаВы опубликовали, похоже, что вы храните, но никогда не используете значение в SFHFKeychainUtils

...