Validation for input string is CivilID or not?

后端 未结 1 1729
半阙折子戏
半阙折子戏 2021-01-26 10:02

I have got a UITextfield with the following format . It is a Civil ID which we usually get to see in Gulf Countries. So I need to validate the same in my UITextfield in Swift.

相关标签:
1条回答
  • 2021-01-26 10:41

    First, allow your textfield input is digit only and give limit as well, in your case 12 character needed so give 12 characters limit - below is the code -

    func textField(_ textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
    {
         let currentCharacterCount = textField.text?.characters.count
    
         if (range.length + range.location > currentCharacterCount!){
              return false
         }
         let newLength = currentCharacterCount! + string.characters.count - range.length
    
         let allowedCharacters = CharacterSet.decimalDigits
         let characterSet = CharacterSet(charactersIn: string)
    
         return newLength <= 12 && allowedCharacters.isSuperset(of: characterSet)
    }
    

    After that just validate whether user date of birth and entered date of birth is correct or not on submit button action like below -

    func submitBtnTapped() 
    {
        //Let say your civicID is like below
        let civicID = "113072489656"
    
        var birthDate = String(civicID.characters.prefix(7))
        birthDate.remove(at: birthDate.startIndex)
    
        let userBirthDate =  "07/24/2013"
    
        let formatter = DateFormatter()
        formatter.dateFormat = "MM-dd-yyyy"
        let date = formatter.date(from: userBirthDate)
        print("\(String(describing: date))")
    
        formatter.dateFormat = "yyMMdd"
        let actualBirthDate = formatter.string(from: date!)
        print(actualBirthDate)
    
        if birthDate == actualBirthDate
        {
             print("true")
        }else {
             print(“false”)
        }
    }
    

    Hope it will work for you.

    0 讨论(0)
提交回复
热议问题