Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 保存用户名&;首次登录后的密码,不再询问_Iphone_Objective C_Cocoa Touch - Fatal编程技术网

Iphone 保存用户名&;首次登录后的密码,不再询问

Iphone 保存用户名&;首次登录后的密码,不再询问,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我正在开发一个ios应用程序,我需要输入公司代码和accesscode才能登录。在第一次使用访问码登录之后,我们不希望在打开应用程序时再次请求访问码。我的意思是我需要保存首选项 我的代码在这里 - (IBAction)loginClicked:(id)sender { @try { if([[txtsecurecode text] isEqualToString:@""] || [[OrganizationCode text] isEqualToString:@""] ) {

我正在开发一个ios应用程序,我需要输入公司代码和accesscode才能登录。在第一次使用访问码登录之后,我们不希望在打开应用程序时再次请求访问码。我的意思是我需要保存首选项

我的代码在这里

- (IBAction)loginClicked:(id)sender {

@try {

    if([[txtsecurecode text] isEqualToString:@""]  || [[OrganizationCode text] isEqualToString:@""] ) {
        [self alertStatus:@"Please enter Access code" :@"Login Failed!":0];
    } else {
        NSString *post =[[NSString alloc] initWithFormat:@"txtsecurecode=%@ @&password=%@",[txtsecurecode text],[OrganizationCode text]];
        NSLog(@"PostData: %@",post);
        NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
        NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://mycompany.com/AccountService/security/ValidateAccess?accesscode=%@&companycode=%@&type=1", txtsecurecode.text, OrganizationCode.text]];


        [[ NSUserDefaults standardUserDefaults] setValue:OrganizationCode forKey:@"OrganizationCode"];
        [[ NSUserDefaults standardUserDefaults] setValue:txtsecurecode forKey:@"txtsecurecode"];
        [[NSUserDefaults standardUserDefaults] synchronize];

        txtsecurecode = [[NSUserDefaults standardUserDefaults] objectForKey:@"txtsecurecode"];
        OrganizationCode = [[NSUserDefaults standardUserDefaults] objectForKey:@"OrganizationCode"];

       // NSString *num = [[NSUserDefaults standardUserDefaults] stringForKey:@"txtsecurecode"];

        NSString *responseData = [[NSString alloc]initWithData:[NSData dataWithContentsOfURL:url] encoding:NSUTF8StringEncoding];

        if([responseData isEqualToString:@""]){
            [self alertStatus:@"Please enter valid Access Code" :@"Login Failed !" :0];
        }
        else
        {

        responseData = [responseData stringByReplacingOccurrencesOfString:@" "" " withString:@""];
        responseData = [responseData stringByReplacingOccurrencesOfString:@"\\" withString:@""];

        NSString* encodedString = [responseData stringByReplacingPercentEscapesUsingEncoding:
                                   NSUTF8StringEncoding];

        NSLog(@"Response ==> %@" ,encodedString);

         UIWebView *webView;
         webView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0, 320, 470)];
         webView.backgroundColor = [UIColor clearColor];
         webView.opaque = NO;
         [webView setDelegate:self];

        NSString* urlTwo = [[encodedString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
                            stringByReplacingOccurrencesOfString:@"%22" withString:@""];

        NSURL *url2;

            if([urlTwo hasPrefix:@"http://"]){
                url2 = [NSURL URLWithString:urlTwo];
            }else{
                url2 = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@" , urlTwo]];
            }

        NSLog(@"url2:%@", url2);

        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url2];              

        [webView loadRequest:requestObj];

        [[self view] addSubview:webView];

    }
    }

}

@catch (NSException * e) {
    NSLog(@"Exception: %@", e);
    [self alertStatus:@"Login Failed." :@"Login Failed!" :0];
}
}

我使用了NSUserDefaults方法来保存登录凭据,但它不起作用。凭据未保存,应用程序再次请求凭据

OrganizationCode
不是一个字符串,您可以通过以下方式将其作为字符串获取:

OrganizationCode = [[NSUserDefaults standardUserDefaults] stringForKey:@"OrganizationCode"];
您需要使用
objectForKey:
来代替,请尝试:

OrganizationCode = [[NSUserDefaults standardUserDefaults] objectForKey:@"OrganizationCode"];

还有一件事,OrganizationCode看起来像是一个类的名称,而不是一个对象的实例,您确定您使用它的方式正确吗?

要存储:登录按钮:

-(IBAction)Login:(id)sender
{
    if (success) {

        NSUserDefaults *status=[NSUserDefaults standardUserDefaults];
        [status setObject:@"LOGGING" forKey:@"STATUS"];

        // GO TO NEXT FUNCTION ??
    }

}
-(void)load_view
{
    NSUserDefaults *status=[NSUserDefaults standardUserDefaults];
    NSString *status_str=[status objectForKey:@"STATUS"];

    if ([status_str isEqualToString:@"LOGGING"]) {
         // GO TO NEXT SUCCESS FUNCTION 
    }
    else
    {
         // GO TO Login View

    }
}
获取:验证按钮:

-(IBAction)Login:(id)sender
{
    if (success) {

        NSUserDefaults *status=[NSUserDefaults standardUserDefaults];
        [status setObject:@"LOGGING" forKey:@"STATUS"];

        // GO TO NEXT FUNCTION ??
    }

}
-(void)load_view
{
    NSUserDefaults *status=[NSUserDefaults standardUserDefaults];
    NSString *status_str=[status objectForKey:@"STATUS"];

    if ([status_str isEqualToString:@"LOGGING"]) {
         // GO TO NEXT SUCCESS FUNCTION 
    }
    else
    {
         // GO TO Login View

    }
}
试试这个

成功登录后,将其保存在NSUserDefaults中

    NSUserDefaults *status=[NSUserDefaults standardUserDefaults];
    [status setObject:@"1" forKey:@"Login"];
下次只检查

       NSUserDefaults *objUserDefaults = [NSUserDefaults standardUserDefaults];       
       NSString *strSuccess=[objUserDefaults objectForKey:@"Login"];

       if ([strSuccess isEqualToString:@"1"]) {
                 // just push the next view.
        }
        else {
             // open login screen
        }
下一选项,如果您关心安全性

编辑

.h文件

  NSUserDefaults *objUserDefaults;
   @property (nonatomic,retain) NSUserDefaults *objUserDefaults;
.m文件

    @synthesize objUserDefaults;
您第一次登录的方法是在响应中写入此内容\

  objUserDefaults = [NSUserDefaults standardUserDefaults]
  [objUserDefaults setObject:@"1" forKey:@"Login"];

   and when you required for login check then

   NSString *strSuccess=[objUserDefaults objectForKey:@"Login"];

   if ([strSuccess isEqualToString:@"1"]) {
             // just push the next view.
    }
    else {
         // open login screen
    }

问题是什么?对不起,在完成问题之前,它是意外提交的@AntonioMGIn我的应用程序需要输入accesscode才能登录。首次使用访问码登录后,我们不希望再次请求访问码。。我的意思是我需要保存首选项@AntonioMGthen在运行应用程序时使用默认值。但是您决定显示或跳过登录页面的代码在哪里。如果您没有将任何控制语句放在那里,当然,每次我更新代码并运行应用程序时,它都会显示出来,获取logcat as MOBILE[15599:907]-[NSUserDefaults setObject:forKey:]:尝试插入类“UITextField”的非属性值“”。请注意,属性列表中的字典和数组也必须只包含属性值。它的简单方法是取NSUserDefaults的全局对象并选中它,它是1还是否?您可以用代码Samir指导我。对我来说太晚了,因为我需要在今天之前提交到iTunes。很抱歉再次问你。。我将通过粘贴发送代码给你。请编辑并发送给我。成功登录后没有更多代码。。。登录成功后,我需要通过web视图加载url