오늘은 MVVM 패턴에 대해서 배웠는데, 사실 아직 잘 모르겠습니다...
일단 이해한 대로 MVVM 패턴에 대해 한 번 써보려 합니다..!
MVVM 패턴이란 디자인을 Model, ViewModel, View로 나누는 것을 말합니다.
이렇게 나누는 이유는, UI와 실제 코드를 분리하여 로직과 디자인 간의 상호 영향을 줄여 개발을 편하게 만들기 위함입니다.
View는 UI를 맡고, Model엔 로직이 들어있고, ViewModel이 이 사이에서 중개자가 됩니다. 상사맨을 보는 것 같습니다..
이렇게 돌아가는 것 같습니다..
왜이렇게 배우는 게 힘들까? 했더니 원래 혼자서 간단한 걸 만들때는 적용을 안하는게 더 쉬울 수 있다고 합니다.
Apus 동아리에서 진행하는 팀 프로젝트의 제가 맡은 부분입니다! 아직 완성된 건 아니지만요..
.padding(someValue)등 디자인을 위한 함수는 대체로 생략하고 올렸습니다.
<Model>
import Foundation
struct ProcessLocation {
private let availableDistance = 50.0
private let gaepoLatitude = 37.48815449911871
private let gaepoLongitude = 127.06476621423361
static func haversineDistance(la1: Double, lo1: Double, la2: Double, lo2: Double, radius: Double = 6367444.7) -> Double {
<...중략...>
}
/* 위도 경도를 두 세트 받아서 거리를 구해주는 공식입니다. 출처는 요기 <https://github.com/raywenderlich/swift-algorithm-club/tree/master/HaversineDistance>
무한한 감사를 올립니다.. */
func getDistanceFromCluster(lat userLatitude: Double, lon userLongitude: Double) -> Double {
return ProcessLocation.haversineDistance(la1: gaepoLatitude, lo1: gaepoLongitude,
la2: userLatitude, lo2: userLongitude)
}
func isNear(lat userLatitude: Double, lon userLongitude: Double) -> Bool {
if ProcessLocation.haversineDistance(la1: gaepoLatitude, lo1: gaepoLongitude,
la2: userLatitude, lo2: userLongitude) > availableDistance {
return false
} else {
return true
}
}
}