iOS 캠프 TIL - 2020.12.03 목

Updated:

Computed Property로 조건문 간단하게 하기

회원가입 화면 Step 3 에서는 모든 정보가 입력되고 패스워드가 일치하면 다음 버튼을 활성화 해야한다.

즉, 다음 버튼 활성화 여부를 확인할 때 많은 조건들을 확인해야 한다.

func checkToEnableNextButton() {
    // 조건문이 길고 내용도 이해하기 복잡하다.
    guard idTextFiled.text != nil, passwordTextField.text != nil, introdutionTextView.text != nil, profileImage != nil, passwordTextField.text == checkPasswordTextField.text else {
        nextButton.isEnabled = false
        return
    }
        
    nextButton.isEnabled = true
}

길고 복잡한 조건문이 계속 신경쓰여서 코드 분리할 방법을 고민했다.

Computed Property를 사용해보자.

class ViewController: UIViewController {
    var isValidID: Bool {
        guard let id = idTextField.text else {
            print("idTextField.text == nil")
            return false
        }
        // nil과 isEmpty 둘 다 확인해야한디.
        // 사용자가 텍스트필드에 입력하기 전까지는 nil이지만
        // 입력하고 난뒤에는 지워도 nil이아니라 빈 Strign값이 들어기있기에 nil 체크로 확인할 수 없다.
        guard !id.isEmpty else {
            print("ID를 적지 않음")
            return false
        }
        return true
    }
    // 이외 프로퍼티 생략...
}

func checkToEnableNextButton() {
    // 더 간단해지고 코드 이해도 쉬워졌다.
    guard isValidID, isValidPassword, isValidIntroduction, isValidProfileImage else {
        nextButton.isEnabled = false
        return
    }
        
    nextButton.isEnabled = true
}

더 나은 방법이 있을 수 있겠지만 일단 여기서 만족하고 넘어갔다.

Leave a comment