[kotlin] MVVM 아키텍처에서의 데이터 유효성 검사 방법

MVVM(Mode-View-ViewModel) 아키텍처는 안드로이드 앱에서 데이터와 UI를 분리하기 위해 많이 사용됩니다. 데이터 유효성 검사는 사용자가 입력한 데이터가 유효한지 확인하는 중요한 단계입니다. MVVM 아키텍처에서 데이터 유효성 검사를 어떻게 수행하는지 알아보겠습니다.

데이터 유효성 검사를 위한 모델 클래스

MVVM 아키텍처에서는 뷰 모델(ViewModel)이 데이터와 UI를 연결시키는 역할을 수행합니다. 사용자의 입력 데이터가 저장되는 모델 클래스에는 해당 데이터의 유효성을 검사하기 위한 로직이 포함되어야 합니다.

data class User(val username: String, val email: String) {
    fun isValid(): Boolean {
        // 유효성 검사 로직을 포함
        return username.isNotBlank() && email.isValidEmail()
    }
}

fun String.isValidEmail(): Boolean {
    // 이메일 유효성 검사 로직을 포함
    // 정규식 또는 안드로이드 SDK의 Patterns.EMAIL_ADDRESS.matcher() 메서드 사용 가능
}

위의 예시에서 User 클래스에는 isValid 메서드가 포함되어 사용자 이름과 이메일이 유효한지 확인합니다. 이메일 유효성 검사에는 isValidEmail 확장 함수를 사용하였습니다.

뷰 모델에서 데이터 유효성 검사 수행

뷰 모델에서 입력 데이터의 유효성을 검사하고 결과에 따라 UI 상태를 업데이트합니다. 이때 LiveData를 사용하여 데이터의 변경을 감지하고 UI에 반영합니다.

class UserViewModel : ViewModel() {
    val username = MutableLiveData<String>()
    val email = MutableLiveData<String>()
    val isValid = MediatorLiveData<Boolean>()

    init {
        isValid.addSource(username) { isValid.value = isDataValid() }
        isValid.addSource(email) { isValid.value = isDataValid() }
    }

    private fun isDataValid(): Boolean {
        return User(username.value.orEmpty(), email.value.orEmpty()).isValid()
    }
}

위의 예시에서 UserViewModel 클래스는 MediatorLiveData를 사용하여 입력 데이터의 유효성을 검사하고 그 결과를 isValid에 반영합니다.

데이터 유효성 검사를 UI와 연결

마지막으로 UI와 뷰 모델을 연결하고 데이터 유효성에 따라 UI를 업데이트합니다. 여기서는 데이터 바인딩 라이브러리를 사용하여 뷰 모델의 데이터와 뷰를 연결합니다.

<layout>
   <data>
       <variable name="viewModel" type="UserViewModel"/>
   </data>
   <LinearLayout>
       <EditText
           android:text="@={viewModel.username}"
           ... />
       <EditText
           android:text="@={viewModel.email}"
           ... />
       <Button
           android:enabled="@{viewModel.isValid}"
           ... />
   </LinearLayout>
</layout>

위의 XML 레이아웃에서 EditTextButton 요소는 UserViewModel의 데이터와 isValid 상태와 양방향으로 연결되어 있습니다.

MVVM 아키텍처에서의 데이터 유효성 검사는 이렇게 간단하게 수행될 수 있습니다. 유효성 검사 로직을 모델 클래스에 추가하고, 뷰 모델에서 검사를 수행하여 UI와 연결하게 되면 사용자 입력 데이터의 유효성을 쉽게 관리할 수 있습니다.

참고 자료


위의 포스트에서는 MVVM 아키텍처에서 데이터 유효성 검사를 수행하는 방법에 대해 살펴보았습니다. 데이터 유효성을 검사하는 모델 클래스를 만들고, 뷰 모델에서 해당 로직을 수행하며, UI와 연결하여 사용자 입력 데이터의 유효성을 관리하는 방법을 알아보았습니다.