iOS 캠프 TIL - 2020.12.03 목
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