我有一个UITextfield,格式如下。这是我们通常在海湾国家看到的民事身份证。所以我需要在Swift的UITextfield中验证相同的内容。
民事身份证格式 - NYYMMDDNNNNN其中N为数字,YY为出生年份的最后两位数字,MM出生月份,DD出生日期..
请告诉我如何对此进行验证。我目前正在使用目标c代码验证出生日期:
NSString *dateFromTextfield = @"07/24/2013";
// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM/dd/yyyy"];// here set format which you want...
NSDate *date = [dateFormat dateFromString:dateFromTextfield];
但是如何对我在swift中需要“NYYMMDDNNNNN”的格式做同样的事情。
答案 0 :(得分:0)
首先,允许你的文本字段输入只是数字并给出限制,在你的情况下需要12个字符,所以给12个字符限制 - 下面是代码 -
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)
}
之后,只需验证用户出生日期和输入出生日期是否正确,如下所示提交按钮操作 -
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”)
}
}
希望它对你有用。