0

私は2つのページを持っています:

ログインページとサインアップページ:

ログインページでは、以下を使用して情報を取得し、失敗または成功の応答をユーザーに渡します。

- (void)login:(UIButton *)sender
{
    [self.appDel.api loginWithEmail:self.email.text
                           password:self.password.text
                  completionHandler:^(id response, NSError *error) {
                      if (error) {
                          NSLog(@"ERROR: %@", error);
                      } else {
                          if ([[response objectForKey:Status] isEqualToString:Success]) {
                              self.currentUser = [response objectForKey:kResponseUser];
                              self.currentUserProfile = [response objectForKey:Profile];
                              [self.presentingViewController dismissViewControllerAnimated:YES completion:NULL];
                          } else {
                              NSLog(@"FAIL: %@", response);
                              [[[UIAlertView alloc] initWithTitle:@"Login Failed"
                                                          message:[response description]
                                                         delegate:nil
                                                cancelButtonTitle:@"OK"
                                                otherButtonTitles:nil] show];
                          }
                      }
                  }];
}

ログインページにこれを使用して、ユーザーが2つの必要なtexfieldを入力しないか、一方をもう一方を空にしてログインを押すと、失敗メッセージが表示されます。

ただし、サインアップの場合、テキストフィールドが空のときにプログラムがクラッシュし、サインアップをクリックします。これをどのように変更すればよいですか:

-(void)signUp:(UIButton *)sender
{
    [self.api signup:self.Email.text
                                   password:self.Password.text
                       confirmationPassword:self.ConfirmPassword.text
                                  firstName:self.FirstName.text
                          completionHandler:^(id response, NSError *error) {
    if (error) {
        NSLog(@"ERROR: %@", error);
    } else {
        if ([[response objectForKey:Status] isEqualToString:Success]) {
        self.appDel.theNewUser = [response objectForKey:User];
        self.appDel.theNewUserProfile = [response objectForKey:Profile];
            [self.presentingViewController dismissViewControllerAnimated:YES completion:NULL];
        } else {
            NSLog(@"FAIL: %@", response);
            [[[UIAlertView alloc] initWithTitle:@"SignUp Failed"
                                        message:[response description]
                                       delegate:nil
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil] show];
        }
    }
}];

}
4

1 に答える 1

0

サインアップメソッド(またはより良いのは、APIクラス)で、nil値と空の値を検出します。現在の問題は、辞書にnil値を挿入していることです。

コードを使用した例を次に示します。値の長さのいずれかがゼロに等しいかどうかを確認し、等しい場合は、少しエラーをログに記録します。

-(void)signUp:(UIButton *)sender
{

    if ([[[self Email] text] length] == 0 ||
        [[[self Password] text] length] == 0 ||
        [[[self ConfirmPassword] text] length] == 0 ||
        [[[self FirstName] text] length] == 0) {

        // add an error alert here?

        NSLog(@"Hold on there!  You haven't filled everything in.");

        return;

    }

    [self.api signup:self.Email.text
                                   password:self.Password.text
                       confirmationPassword:self.ConfirmPassword.text
                                  firstName:self.FirstName.text
                          completionHandler:^(id response, NSError *error) {
    if (error) {
        NSLog(@"ERROR: %@", error);
    } else {
        if ([[response objectForKey:Status] isEqualToString:Success]) {
        self.appDel.theNewUser = [response objectForKey:User];
        self.appDel.theNewUserProfile = [response objectForKey:Profile];
            [self.presentingViewController dismissViewControllerAnimated:YES completion:NULL];
        } else {
            NSLog(@"FAIL: %@", response);
            [[[UIAlertView alloc] initWithTitle:@"SignUp Failed"
                                        message:[response description]
                                       delegate:nil
                              cancelButtonTitle:@"OK"
                              otherButtonTitles:nil] show];
        }
    }
}];

}
于 2013-02-25T18:37:23.530 に答える