TIL - 2024.04.22 월요일

· 성취/개선/학습한 내용 🏆

 오늘은 SwiftUI에서 Wrapper라 불리는 방법으로 ViewModifier를 활용해 각종 뷰 객체를 만드는 방법을 학습했다. 이 방법을 사용하면 코드가 더 깔끔해지고 미리 정의해 둔 스타일을 적용하는 것이라 더 빠르게 뷰를 구현할 수 있었다. (지금까지 내가 해온 건 SwiftUI가 아니라고 느껴질 정도였다...)

 또 새로운 프로젝트를 진행하면서 Map을 사용해야 하는 일이 있는데, 내가 원하는 기능이 있어서 Naver Map을 사용하게 되었다. 그러나 Naver Map은 Cocoa Pod으로만 설치가 가능하다. 처음 설치를 하는 과정에서 시간을 좀 많이 소비했고, 자세하게 나와있지 않은 도큐먼트 때문에 이것저것 시도를 해보느라 좀 시간을 많이 사용했다. 여기서 내가 얻은 것을 좀 공유해 보자면 Naver Map의 View에는 2가지 종류가 있다. NMFMapView, NMFNaverMapView가 있는데, NMFMapView가 가장 기본적인 맵 류라고 생각하면 되고, NMFNaverMapView가 NMFMapView를 상속받아 기본적인 맵 뷰 위에 현 위치로 이동, 확대/축소 버튼 등 여러 기능들을 추가해 둔 브라고 생각하면 된다. 그래서 맵 뷰를 구현할 땐 NMFNaverMapView로 구현을 하면 여러 기능도 사용하면서, NMFMapView 접근이 가능하다.

let naverMapView = NMFNaverMapView()

// NMFMapView의 프로퍼티에 접근하기
naverMapView.mapView.positionMode = .direction //이런식으로 접근해주기
  • SwiftUI
    • ViewModifier
      • Wrapper
    • ViewBuilder
  • Cocoa Pod
  • Naver Map API
    • NMFMapView vs NMFNaverMapView

· 어려웠던 내용 😵😵‍💫

  • 회원가입 로직을 만들고, 서버에 회원가입 할 때 기입한 정보를 보냈다. 그러나 계속해서 핸드폰 번호가 서버로 가지질 않는 이슈가 발생했다. 알고보니 제이슨으로 인코딩할 때, 스네이크케이스로 쿼리를 바꿔주는 코드 때문이었다. 서버에서는 "phoneNum"으로 데이터를 넘겨줘야 하는데 스네이크케이스로 바꾸니 "phone_Num"으로 데이터가 가게 되어 서버에서 이를 받질 못하였던 것이었다.
//기존 코드
encoder.keyEncodingStrategy = .convertToSnakeCase 
//바뀐 코드
encoder.keyEncodingStrategy = .useDefaultKeys

 

해결 방법으로는 위 처럼 바뀐 코드로 바꾸거나 필요 없다면 제거해 주면 된다. 이것 때문에 거의 3시간을 사용했다. ㅜㅜ

 

'# TIL (Today I Learned)' 카테고리의 다른 글

TIL - 2024.04.24 수요일  (0) 2024.04.24
TIL - 2024.04.23 화요일  (0) 2024.04.23
TIL - 2024.04.19 금요일  (0) 2024.04.19
TIL - 2024.04.18 목요일  (0) 2024.04.18
TIL - 2024.04.17 수요일  (0) 2024.04.17