Objective c textfield验证方法obj c

Objective c textfield验证方法obj c,objective-c,numbers,uitextfield,Objective C,Numbers,Uitextfield,我有一个带有两个文本字段和一个按钮的视图 在“clickOnDoneButton”功能中,我必须执行以下功能:我必须验证插入第一个文本字段的pin是否与插入第二个文本字段的pin相同。 我必须用“checkValidityPin”功能验证pin是否正确,我无法正确实现它。 要实现的逻辑是:我检查用checkValidityPin输入的第一个“pin”,如果正确,我用第二个“pin”进行检查,该“pin”必须相同 我想我迷失在无法继续下去的功能中了 @property (nonatomic

我有一个带有两个文本字段和一个按钮的视图

在“clickOnDoneButton”功能中,我必须执行以下功能:我必须验证插入第一个文本字段的pin是否与插入第二个文本字段的pin相同。 我必须用“checkValidityPin”功能验证pin是否正确,我无法正确实现它。 要实现的逻辑是:我检查用checkValidityPin输入的第一个“pin”,如果正确,我用第二个“pin”进行检查,该“pin”必须相同

我想我迷失在无法继续下去的功能中了

    @property (nonatomic, strong) id delegate;
@property (nonatomic, weak) IBOutlet UIButton *confirmButton;
@property (weak, nonatomic) IBOutlet InputTextView *insertPin;
@property (weak, nonatomic) IBOutlet InputTextView *verifyPin;
@property (nonatomic, strong) NSString* stringInserted;

- (IBAction) clickOnDoneButton:(id)sender;


- (IBAction) clickOnDoneButton:(id)sender{
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            NSString * errorMessage = @"";

            if(!self.insertPin || [self.insertPin isEqual:[NSString string]]) {
                self.insertPin = self.stringInserted;
//                [self.insertPin redrawWithInputLength:0];
    //            self.titleLabel.text = NSLocalizedString(@"INSERT_NEW_PIN", nil);
//                [self setTextAnimated:NSLocalizedString(@"INSERT_NEW_PIN", nil)];
//                self.keyboard.confirButton.enabled = NO;
                self.stringInserted = [NSString string];
            } else if(!self.verifyPin || [self.verifyPin isEqual:[NSString string]]) {
                if (![self.stringInserted isEqualToString:self.insertPin]){
                    if([self checkValidityPin:self.stringInserted]){
                        self.verifyPin = _stringInserted;

//                        [self.fieldView redrawWithInputLength:0];
    //                    self.titleLabel.text = NSLocalizedString(@"REINSERT_NEW_PIN", nil);
//                        [self setTextAnimated:NSLocalizedString(@"REINSERT_NEW_PIN", nil)];
//                        self.keyboard.confirButton.enabled = NO;
                        self.stringInserted = [NSString string];
                        NSLog(@"TEST4");
                    }
                    else{
                        errorMessage = NSLocalizedString(@"WRONG_PIN_FORMAT", nil);
                        NSLog(@"TEST2");

                    }
                } else {
                    errorMessage = NSLocalizedString(@"NEW_PIN_EQUALS_OLD", nil);
                    NSLog(@"TEST3");

                }
            }

            else if([self.verifyPin isEqual:self.stringInserted]) {
                NSLog(@"TEST");
            }
            else {
//                [self.fieldView redrawWithInputLength:0];
                self.stringInserted = [NSString string];
                self.insertPin = nil;
                self.verifyPin = nil;
                NSLog(@"TEST1");

//                [self setTextAnimated:NSLocalizedString(@"INSERT_OLD_PIN", nil)];
                //            self.keyboard.confirButton.enabled = NO;
                errorMessage = NSLocalizedString(@"PIN_NOT_EQUALS", nil);
            }

            //Show Error
//            if([errorMessage length]>0){
//                [self showError:errorMessage];
//            }

        }];
}

-(BOOL) checkValidityPin:(NSString*)pin{
    NSString *regex1 = @"^(01234|12345|23456|34567|45678|56789)$";
    NSString *regex2 = @"^(98765|87654|76543|65432|54321|43210)$";
    NSString *regex3 = @"^([0-9])\\1*$";

    BOOL testPassed1 = [PRUtility validateRegularExpression:regex1 forString:pin];
    BOOL testPassed2 = [PRUtility validateRegularExpression:regex2 forString:pin];
    BOOL testPassed3 = [PRUtility validateRegularExpression:regex3 forString:pin];

    return !(testPassed1 || testPassed2 || testPassed3);
}

如果只写代码,很容易迷路。试着先用“普通语言”写,然后填写代码

例如:

  • 获取每个输入的字符串

  • 输入的pin是否为空?如果是这样,请通知用户(更新用户界面),不要进行任何其他检查

  • 输入的两个字符串是否相同?如果没有,请通知用户(更新用户界面),不必进行任何其他检查

  • 字符串相同,因此请验证输入的pin

  • pin的格式有效吗?如果没有,请通知用户(更新用户界面),不要做任何其他事情

  • 引脚匹配并已验证,因此继续执行下一步

  • 以下是填写的代码:

    - (IBAction)clickOnDoneButton:(id)sender {
    
        // 1. get each entered string
        NSString *insertPinString = [_insertPin text];
        NSString *verifyPinString = [_verifyPin text];
    
        // 2. is the entered pin empty?
        if ([insertPinString length] == 0) {
            // inform user he didn't enter a pin
            // update error label or show alert, whatever
    
            NSLog(@"No Pin Entered");
    
            // don't bother with anything else
            return;
        }
    
        // 3. are both entered strings the same?
        if (![insertPinString isEqualToString:verifyPinString]) {
            // inform user the pins don't match
            // update error label or show alert, whatever
    
            // probably clear both fields
            _insertPin.text = _verifyPin.text = @"";
    
            NSLog(@"Pin Mismatch");
    
            // don't bother with anything else
            return;
        }
    
        // 4. strings are the same, so validate entered pin
        BOOL bValid = [self checkValidityPin:insertPinString];
    
        // 5. if invalid pin entered
        if (!bValid) {
            // inform user it's an invalid pin format
            // update error label or show alert, whatever
    
            // probably clear both fields
            _insertPin.text = _verifyPin.text = @"";
    
            NSLog(@"Invalid Pin");
    
            // don't bother with anything else
            return;
        }
    
        // 6. pins match and have been validated so we can proceed with next step
        NSLog(@"Successful pin entry!");
    
    }
    

    如果只写代码,很容易迷路。试着先用“普通语言”写,然后填写代码

    例如:

  • 获取每个输入的字符串

  • 输入的pin是否为空?如果是这样,请通知用户(更新用户界面),不要进行任何其他检查

  • 输入的两个字符串是否相同?如果没有,请通知用户(更新用户界面),不必进行任何其他检查

  • 字符串相同,因此请验证输入的pin

  • pin的格式有效吗?如果没有,请通知用户(更新用户界面),不要做任何其他事情

  • 引脚匹配并已验证,因此继续执行下一步

  • 以下是填写的代码:

    - (IBAction)clickOnDoneButton:(id)sender {
    
        // 1. get each entered string
        NSString *insertPinString = [_insertPin text];
        NSString *verifyPinString = [_verifyPin text];
    
        // 2. is the entered pin empty?
        if ([insertPinString length] == 0) {
            // inform user he didn't enter a pin
            // update error label or show alert, whatever
    
            NSLog(@"No Pin Entered");
    
            // don't bother with anything else
            return;
        }
    
        // 3. are both entered strings the same?
        if (![insertPinString isEqualToString:verifyPinString]) {
            // inform user the pins don't match
            // update error label or show alert, whatever
    
            // probably clear both fields
            _insertPin.text = _verifyPin.text = @"";
    
            NSLog(@"Pin Mismatch");
    
            // don't bother with anything else
            return;
        }
    
        // 4. strings are the same, so validate entered pin
        BOOL bValid = [self checkValidityPin:insertPinString];
    
        // 5. if invalid pin entered
        if (!bValid) {
            // inform user it's an invalid pin format
            // update error label or show alert, whatever
    
            // probably clear both fields
            _insertPin.text = _verifyPin.text = @"";
    
            NSLog(@"Invalid Pin");
    
            // don't bother with anything else
            return;
        }
    
        // 6. pins match and have been validated so we can proceed with next step
        NSLog(@"Successful pin entry!");
    
    }