[swift] Swift MVVM 아키텍처의 실제 적용 사례

MVVM(Modeled-View-ViewModel)은 iOS 애플리케이션을 개발할 때 사용되는 아키텍처 패턴 중 하나입니다. MVVM은 코드의 재사용성과 유지 관리성을 향상시키는데 도움이 되며, 개발자들이 애플리케이션의 동작과 UI를 분리해 구성할 수 있도록 지원합니다.

이번 글에서는 Swift 언어를 사용하여 MVVM 아키텍처를 실제로 적용한 사례를 살펴보겠습니다.

Model

첫 번째로, 모델은 애플리케이션의 데이터와 비즈니스 로직을 담당합니다. 이 예시에서는 사용자 정보를 담은 User 모델을 정의해보겠습니다.

struct User {
    let name: String
    let age: Int
}

View

뷰는 사용자에게 보여질 UI를 구성하는 역할을 합니다. 이 예시에서는 사용자 이름과 나이를 보여주는 뷰를 구현해보겠습니다.

class UserView: UIView {
    @IBOutlet private var nameLabel: UILabel!
    @IBOutlet private var ageLabel: UILabel!

    func configure(with user: User) {
        nameLabel.text = user.name
        ageLabel.text = String(user.age)
    }
}

ViewModel

뷰모델은 뷰와 모델 간의 중간 매개체로서 사용됩니다. 뷰모델은 모델의 데이터를 가공하여 뷰에게 제공하고, 뷰에서 발생하는 이벤트를 처리합니다.

class UserViewModel {
    private let user: User

    init(user: User) {
        self.user = user
    }

    var name: String {
        return user.name
    }

    var age: String {
        return String(user.age)
    }
}

View와 ViewModel 연결

마지막으로, 뷰와 뷰모델을 연결하고 데이터를 전달하는 과정입니다. 이 예시에서는 UIViewController를 사용하여 뷰와 뷰모델을 연결합니다.

class UserViewController: UIViewController {
    @IBOutlet private var userView: UserView!

    private var userViewModel: UserViewModel!

    override func viewDidLoad() {
        super.viewDidLoad()
        let user = User(name: "John Doe", age: 25)
        userViewModel = UserViewModel(user: user)
        userView.configure(with: userViewModel)
    }
}

위의 예시에서 뷰모델은 뷰에 필요한 정보를 제공하는 역할을 합니다. 뷰는 뷰모델의 데이터에 바인딩하여 동적으로 업데이트될 수 있습니다.

결론

MVVM 아키텍처는 Swift를 사용한 iOS 애플리케이션 개발에 유용한 패턴입니다. 이 예시를 통해 실제로 MVVM 아키텍처를 적용하는 과정을 살펴보았습니다. MVVM은 코드의 재사용성과 유지 관리성을 향상시켜 개발자들이 더 효과적으로 애플리케이션을 개발할 수 있도록 도와줍니다.