1

このコードを使用して、テキスト フィールドが空かどうかを確認します。最初は機能しますが、テキスト フィールドの値を変更するとアラートが機能しません。

   -(void)sendclick {
        NSString *msg;
        if(firstnametextfield.text==NULL) {
            msg=@"enter first name";
            NSLog(@"%@",firstnametextfield.text);
        }
        else if(lastnametextfield.text==NULL) {
            msg=@"enter last name"; 
            NSLog(@"%@",lastnametextfield.text);
        }

       else if(emailtextfield.text==NULL) {
             msg=@"enter email address";
            NSLog(@"%@",emailtextfield.text);
        }

       else if(companytextfield.text==NULL) {
            msg=@"enter company name";
            NSLog(@"%@",companytextfield.text);
        }

       else if(phonetextfield.text==NULL) {
            msg=@"enter phone numper"; 
            NSLog(@"%@",phonetextfield.text);
        }
     else {
        msg=@"register success fully";
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:msg delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
        [alert show];
        [alert release];
     }

    }
4

7 に答える 7

3

このコードについて考慮すべき点がいくつかあります。

  1. 他の人が指摘しているように、これは空の文字列をチェックする正しい方法ではありません。
    を。まず、割り当てられていない文字列をチェックしたい場合は、 をチェックし、 をチェックする必要がありnilますNULL
    b. 次に、文字列を割り当てることもできますが、文字がないため、空の文字列かどうかも確認する必要があります。
    c. 通常、ビジネス ロジックに関する限り、nil の文字列と空の文字列の間に違いはないため、通常はこれらの条件の両方をチェックし、同じことを行う必要があることに注意してください。
    d. これを行う最も簡単な方法は、単純lengthに文字列をチェックすることです。メッセージが送信された場合、これは機能しますnilオブジェクトの場合は 0 を返し、文字を含まない実際の文字列の場合も 0 を返します。

    したがって、次のようなチェックが代わりに機能します。

    if([firstnametextfield.text length] == 0)
    
  2. 通常、フォームの検証のために、このようにテキスト フィールドの値を直接チェックすることは望ましくありません。これは、特定の状況 (テキスト フィールドがテーブル ビュー セル内にあり、画面の外にスクロールする場合など) では、テキスト フィールドを使用できず、テキスト フィールドに保存されているデータにアクセスできないためです。

代わりに、テキスト フィールドのデリゲートをビュー コントローラーに設定し、次の関数を実装して、テキストが入力された直後にテキストを収集する必要があります。

- (void)textFieldDidEndEditing:(UITextField *)textField {
    if (textField == firstnametextfield) {
        // Store the first name in a property, or array, or something.
    }
}

次に、入力した情報を検証する準備ができたら、上記の #1 の手法を使用して、実際のテキスト フィールド値自体ではなく、保存した値を確認します。

于 2012-09-04T15:02:56.633 に答える
1
- (BOOL)isEmptyOrNull:(NSString*)string {
    if (string) {
        if ([string isEqualToString:@""]) {
            return YES;
        }
        return NO;
    }
    return YES;
}


-(void)sendclick {
    NSString *msg;
    if([self isEmptyOrNull:firstnametextfield.text]) {
        msg=@"enter first name";
        NSLog(@"%@",firstnametextfield.text);
    }
    .....
    .....
    .....
于 2012-09-04T14:43:26.017 に答える
1

テキスト フィールドの値を と比較しないでくださいNULL。むしろ、と比較してください@""。空白文字もトリミングできます。

[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
于 2012-09-04T14:24:34.730 に答える
0
   -(void)sendclick 
    {
        if ([self ControlValidation]==YES)
        {

 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sucess" message:@"Registration done successfully" delegate: nil  cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert  show];
        }
    }
    -(BOOL)ControlValidation
    {
        if ([self isEmpty:firstnametextfield.text ]==YES)

        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sorry" message:@"First Name is    empty" delegate: nil  cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert  show];
            return NO;
        }
        if ([self isEmpty:lasttnametextfield.text ]==YES)

        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sorry" message:@"Last Name is empty" delegate: nil  cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert  show];

            return NO;
        }
        return YES;
    }


    -(BOOL)isEmpty:(NSString *)str

    {
        if (str == nil || str == (id)[NSNull null] || [[NSString stringWithFormat:@"%@",str] length] == 0 || [[[NSString stringWithFormat:@"%@",str] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0)
        {
            return YES;

        }

        return NO;
    }
于 2014-12-24T12:20:09.220 に答える
0

使ってみて

if([lastnameTextField.text isEqualToString:@""])
{
 msg = @"Enter last name";
 NSLog(@"%@",lastnametextfield.text);
}

これは、NSString が空かどうかを確認する方法です。

于 2012-09-04T14:40:25.740 に答える