2017-05-18 5 views
0

다음 형식의 UITextfield가 있습니다. 걸프 국가에서 흔히 볼 수있는 민간 신분증입니다. 그래서 나는 Swift의 UITextfield에서 같은 것을 검증 할 필요가있다.입력 문자열의 유효성 검사는 CivilID입니까?

남북 ID 형식 - N은 숫자, 출생 연도의 YY 마지막 두 자리는, MM 출생 달, DD 출생 날짜가 ..

방법이에 대한 검증을 수행하는 방법을 가르쳐주세요 NYYMMDDNNNNN. 얼마나 빠른에서 "NYYMMDDNNNNN"을 요구하는 내 형식에 대한 동일한 작업을 수행하는

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]; 

을하지만 : 저는 현재 목표 C 코드를 사용하여 출생의 날짜를 검증하고있다.

+0

NSRegularExpression이 트릭을 수행 할 수 있습니다. – Larme

+0

@Larme이 작업을 수행하는 방법은 무엇입니까? –

답변

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”) 
    } 
} 

이 당신을 위해 작동합니다 바랍니다.

+0

나는 생년월일을 비교하고 싶지 않다. 그냥 civicID "113072489656"이 올바른 형식인지 확인해야하며 yyMMdd 형식을 따릅니다. 어떻게하는지 말해줘. –