2

我在 .m 文件中有一段代码,如下所示:

- (IBAction)btnLogin:(UIButton *)sender 
{

    NSString *strURL = [NSString stringWithFormat:@"http://www.myworkingdomain.com/fn_checkLogin2.php?name=%@&pass=%@", self.email.text, self.password.text];

    // to execute php code
    NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];

    // to receive the returend value
    NSString *strResult = [[[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding]autorelease];


    if ([strResult isEqualToString:@"0"]) {
        UIStoryboard *loginFailStoryBoard = [UIStoryboard storyboardWithName:@"loginFailStoryboard" bundle:nil];
        UIViewController *initialFailLogin = [loginFailStoryBoard instantiateInitialViewController];
        initialFailLogin.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentModalViewController:initialFailLogin animated:YES];
        //NSLog(@"%@", strResult); 
    } else {
        UIStoryboard *memberMenuBoard = [UIStoryboard storyboardWithName:@"memberMenuStoryboard" bundle:nil];
        UIViewController *initialMemberMenu = [memberMenuBoard instantiateInitialViewController];
        initialMemberMenu.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentModalViewController:initialMemberMenu animated:YES];
        //NSLog(@"%@", strResult);
    }

    NSLog(@"%@", strResult);


}
@end

我试图确定一个人是否输入了正确的电子邮件和密码,然后转到下一个视图。我的'strResult'日志中有 ,它表明 php 脚本可以正常工作。现在看来,if..else由于部分原因,该语句不起作用[strResult isEqualToString:@"0"]

有人可以建议我应该在哪里更改以更正此问题,以便当会员使用正确的密码登录时,他可以进入会员视图?

谢谢

4

1 回答 1

0

@dan 主线程是显示所有 UI 元素的地方。如果您在主线程上启动连接,您的 UI 将变得无响应,直到连接被解决(无法按下按钮,无法滚动等......)为了避免您应该使用另一个线程。还有其他方法可以做到这一点,但下面的代码应该可以在不阻塞用户界面的情况下做到这一点。

    NSString *loginString =[NSString stringWithFormat:@"fn_checkLogin2.php?name=%@&pass=%@", self.email.text, self.password.text];

    NSURL *url = [NSURL URLWithString:@"http://www.myworkingdomain.com/"];
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url ];

    [urlRequest setTimeoutInterval:30.0f];
    [urlRequest setHTTPMethod:@"POST"];
    [urlRequest setHTTPBody:[loginString dataUsingEncoding:NSUTF8StringEncoding]];

    NSOperationQueue *queue= [[NSOperationQueue alloc] init];

    [NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
        if ([data length]>0 && error==nil) {
            NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"HTML = %@",html);
        }
    }
     ];

因此,如果返回数据,您可以做一些事情,如果连接失败,您可以做其他事情而不会阻塞您的 UI。

于 2013-03-19T14:27:41.137 回答