0

ログインするには会社コードとアクセスコードを入力する必要があるという点で、1つのiOSアプリを開発しています。アクセスコードを使用して初めてログインした後、アプリケーションを開いたときに再度アクセスコードを要求することはできません。つまり、設定を保存する必要があります。

そして私のコードはここにあります

- (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 メソッドを使用してログイン資格情報を保存しましたが、機能していません。資格情報が保存されていません。再びアプリが資格情報を要求しています。

4

3 に答える 3

0

OrganizationCodeは文字列ではなく、次のように文字列として取得しています。

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

代わりに使用する必要がありますobjectForKey:。それを試してください:

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

また、OrganizationCode は、オブジェクトのインスタンスではなく、クラスの名前のように見えます。正しい方法で使用していますか?

于 2013-05-03T11:06:56.030 に答える
0

保存するには: ログインボタン:

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

    }
}
于 2013-05-03T11:11:32.953 に答える