#7 UITableViewCell Binding using AirportViewModel - RxSwift MVVM Coordinator iOS App
protocol AirportViewPresentable {
var name: String { get }
var code: String { get }
var address: String { get }
var distance: Double? { get }
var formattedDistance: String { get }
var runwayLength: String { get }
var location: (lat: String, lon: String) { get }
}
extension AirportViewModel {
init(model: AirportModel) {
self.name = model.name
self.code = model.code
self.address = "\(model.state ?? ""), \(model.country)"
self.runwayLength = "Runway Length: \(model.runwayLength ?? "NA")"
self.location = (lat: model.lat, lon: model.lon)
self.distance = 0
}
}
func configure(with model: AirportViewModel) {
nameLabel.text = model.name
distanceLabel.text = model.formattedDistance
countryLabel.text = model.address
lengthLabel.text = model.runwayLength
}
configure
함수강의의 주요 태스크는
_view_presentable
이라는 프로토콜을 만든 뒤, 해당 프로토콜을 따르는 구조체(!)를 뷰 모델로 설정, 해당 뷰 모델을 통해 뷰 컨트롤러의 데이터를 담당하는 것인데, 과연 기존의 클래스를 직접 뷰 모델로 넣는 것과 무엇이 다른 것인지, 그저 프로토콜 지향 프로그래밍의 일종인 것인지 궁금하다.