[내일배움캠프 41일차] 명.노.운 팀 프로젝트 2

NH·2025년 4월 29일

내일배움캠프

목록 보기
42/62
post-thumbnail

🫂 팀 프로젝트 진행!

오늘은 각자 맡은 화면 개발이 완료되어, PR을 확인하고 코드리뷰를 하였다.
그리고 github에 Merge 했고, 컴플릭이 조금 있었지만 해결 가능해서 무사히 마칠 수 있었다.
또 데이터 모델을 어떻게 구성할지 정의했고, 네이버 지도 SDK를 사용하는 법을 공부했다!


🤔 코드 리뷰


🤝 Github Merge

  • 아름다운 곡선들
  • 다행히 Merge 할 때 큰 어려움이 없었다!

📋 데이터 모델 설계

struct User {
  let userID: String // 아이디
  let nickName: String // 닉네임
  let password: String // 비밀번호
  let kickboardID: String // 킥보드 아이디
}

/*
유저 아이디
킥보드ID
이용날짜
운행 시간
운행 거리
이용 요금
*/
struct UseageInfo {
	let userID: String // 아이디
	let kickboardID: String // 킥보드 아이디
	let useageDate: Date // 이용 날짜
	let useageTime: Date // 이용 시간
	let useageDistance: Int // 운행 거리
	let useageAmount: Int // 운행 이용요금
}

/*
킥보드ID
킥보드 이용상태
등록 날짜
총 운행 시간
총 운행 거리
배터리 잔량
킥보드 위치
*/
struct KickboardInfo {
	let kickboardID: String // 킥보드 아이디
	let isRidingKickboard: Bool // 킥보드 이용상태
	let registrationDate: Date // 등록한 날짜
	let totalUseageTime: Date // 총 이용 시간
	let totalUseageDistance: Int // 총 거리
	let kickboardBatteryAmount: Int // 배터리 잔량
	let coordinates: NMGLatLng // 좌표(위도, 경도)
}

🔹 데이터 흐름 정리

킥보드 등록 직후 [킥보드 데이터]

  • 데이터 등록
    • 킥보드 ID
    • 등록 날짜
    • 현재 위치
    • 배터리 잔량
    • 킥보드 이용상태 = false
    • 총 운행시간 = 0
    • 총 운행거리 = 0

킥보드를 대여했을 때 [유저 데이터], [킥보드 데이터]

  • 선택한 킥보드 ID 불러와서 유저 데이터에 저장
  • 킥보드 데이터 업데이트
    • 이용상태 변경 false -> true

킥보드를 사용완료 했을때[유저데이터], [이용정보], [킥보드 데이터]

  • 선택한 킥보드 ID 삭제
  • 이용정보 업데이트
  • 킥보드데이터 이용상태 업데이트
    • 이용정보의 운행 시간 및 운행 거리 값 더하기
    • 킥보드 위치는 유저의 현재 위치로 설정

자신의 이용 현황을 확인할 때 데이터 흐름[이용 내역]

  • 유저 아이디로 조회

등록한 킥보드 내역을 확인할 때 데이터가 나오는 흐름[킥보드 데이터]

  • 모든 킥보드가 나오게 전부 표출

🗺️ 네이버 지도 SDK 기능 분석

🔹 현재 위치 버튼 및 확대 축소 버튼 추가

코드

override func viewDidLoad() {
    super.viewDidLoad()
    
    // 네이버 맵 객체
    let naverMapView = NMFNaverMapView(frame: view.frame)
		
		// 현재 위치 및 확대 축소 버튼 활성화
    naverMapView.showLocationButton = true 
    
    view.addSubview(naverMapView)
}

빌드 후 모습

  • 확대 축소 버튼은 동작!
  • 현재 위치 버튼은 동작 X→ 추가 설정이 필요함

🔹 터치한 곳의 위경도 가져오기

코드

override func viewDidLoad() {
    super.viewDidLoad()
    
    // 네이버 맵 객체
    let naverMapView = NMFNaverMapView(frame: view.frame)
		
		// 현재 위치 및 확대 축소 버튼 활성화
    naverMapView.showLocationButton = true 
    
    view.addSubview(naverMapView)
    
    // 터치 델리게이트 설정
    naverMapView.mapView.touchDelegate = self
}

// 터치 델리게이트
extension ViewController: NMFMapViewTouchDelegate {
    func mapView(_ mapView: NMFMapView, didTapMap latlng: NMGLatLng, point: CGPoint) {
        print("탭: \(latlng.lat), \(latlng.lng)")
    }
}

빌드 후 모습

profile
iOS 개발 블로그

0개의 댓글