[swift] Swift PromiseKit과 유효성 검사

소개

이 포스트에서는 Swift PromiseKit을 사용하여 비동기 작업을 처리하고, 유효성 검사 방법에 대해 알아보겠습니다.

Swift PromiseKit이란?

PromiseKit은 Swift에서 비동기 작업을 다루기 위한 라이브러리입니다. 이를 통해 콜백헬(callback hell)을 피하고, 코드를 읽기 쉽고 유지보수하기 쉽게 작성할 수 있습니다.

유효성 검사

애플리케이션 개발 중에는 사용자의 입력이나 데이터 유효성을 검사하는 경우가 많습니다. 예를 들어, 사용자의 비밀번호가 최소한의 요구사항에 부합하는지 확인하는 경우입니다. PromiseKit을 이용하여 유효성 검사를 처리하는 방법은 다음과 같습니다.

비밀번호 유효성 검사 예제

import PromiseKit

func validatePassword(password: String) -> Promise<Bool> {
    return Promise { seal in
        // 비밀번호 유효성 검사 로직 진행
        if password.count < 8 {
            seal.reject(ValidationError.passwordTooShort)
        } else if !password.contains("@") {
            seal.reject(ValidationError.passwordNoSpecialCharacter)
        } else {
            seal.fulfill(true)
        }
    }
}

enum ValidationError: Error {
    case passwordTooShort
    case passwordNoSpecialCharacter
}

validatePassword(password: "1234567")
    .done { isValid in
        print("비밀번호 유효성 검사 성공")
    }
    .catch { error in
        if let validationError = error as? ValidationError {
            switch validationError {
            case .passwordTooShort:
                print("비밀번호는 최소 8글자 이상이어야 합니다.")
            case .passwordNoSpecialCharacter:
                print("비밀번호는 특수문자(@)를 포함해야 합니다.")
            }
        }
    }

위의 예제에서는 validatePassword라는 함수를 만들어서 비밀번호의 유효성을 검사합니다. 이 함수는 비동기 작업을 수행하므로 Promise<Bool>을 반환합니다.

만약 비밀번호가 8글자 미만이라면 passwordTooShort 에러를, 비밀번호에 특수문자가 없다면 passwordNoSpecialCharacter 에러를 reject합니다. 그 외의 경우에는 비밀번호가 유효하다는 것을 fulfill합니다.

결과적으로, 이 코드는 validatePassword 함수를 호출하고, 비동기 작업이 완료되면 해당 결과에 따라 다른 동작을 수행합니다. 유효성 검사가 성공하면 “비밀번호 유효성 검사 성공”을 출력하고, 실패하면 해당 에러에 따라 적절한 메시지를 출력합니다.

정리

Swift PromiseKit을 사용하면 비동기 작업을 효율적이고 간결하게 처리할 수 있습니다. 유효성 검사와 같은 작업에서도 PromiseKit을 사용하면 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다.