NSUserDefault怀疑iphone sdks

时间:2012-03-12 15:22:45

标签: iphone ios evernote

我有一个备份和恢复笔记到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 :(得分:0)

以下是一些提示:

  • 您只需在设置值时调用[[NSUserDefaults standardUserDefaults] synchronize]一次。

  • 您似乎没有在注销中删除standardUserDefaults值,这可能就是您获得相同登录/用户持久性的原因。

  • 从您发布的代码看起来您​​正在存储但从未使用SFHFKeychainUtils中的值