简体   繁体   English

iPhone SDK中的NSUserDefault疑问

[英]NSUserDefault Doubts in iphone sdks

I have an application that backs up and restores notes to Evernote. 我有一个可以备份笔记并将笔记恢复到Evernote的应用程序。 Things are working well, but I'm having trouble when logging out and logging back in as a different Username and Password combination. 一切工作正常,但是以不同的用户名和密码组合注销并重新登录时遇到麻烦。

The first time I share my note with the initial values for Username/Password, it works correctly. 我第一次与用户名/密码的初始值共享笔记时,它可以正常工作。 However, logging out and back in with a different Username/Password posts my notes to the original account. 但是,使用其他用户名/密码注销并重新登录后,我的笔记就会发布到原始帐户中。

I have a Singleton class which writes the username/password to the NSUserDefaults and SFHFKeychainUtils. 我有一个Singleton类,它将用户名/密码写入NSUserDefaults和SFHFKeychainUtils。 Here is the login method: 这是登录方法:

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

Here is the connect method for sending the username/password: 这是发送用户名/密码的连接方法:

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

Here is the log out method: 这是注销方法:

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

any problem with my code..please help me to do this. 我的代码有任何问题..请帮助我做到这一点。

Here are some tips: 这里有一些提示:

  • You only have to call [[NSUserDefaults standardUserDefaults]synchronize] once, at the end of setting your values. 设置值结束时,只需调用一次[[NSUserDefaults standardUserDefaults] synchronize]。

  • It doesn't seem like you're deleting the standardUserDefaults value in the logout, which might be why you are getting the same login/user persisting. 似乎您没有在注销中删除standardUserDefaults值,这可能就是为什么您保持相同的登录名/用户的原因。

  • From the code you posted it looks like you're storing but never using the value in SFHFKeychainUtils 从您发布的代码来看,您似乎正在存储,但从未使用SFHFKeychainUtils中的值

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM