티스토리 뷰
데일리 스크럼
어제 한 일
- 올라온 PR확인
- 이슈 사항 정리 및 PR 리뷰 적용
- 가독성을 위해 라인이 길어지는 경우 자동 줄바꿈에 의존하는 것보다 임의로 줄바꿈을 해주자
- 앱 전체에서 쓰이는게 아닌 일부에서 쓰이는 구조체는 해당 폴더링 내부의 viewModel에서 관리해주자
- 날씨 정보 받아오기 - 더미데이터
- 위치 정보 받아오기 + 위치 레이블 작성
- RunHome화면에서 뷰모델, 컴바인 적용 및 LocationManager 컴바인 적용
오늘 할 일
- 올라온 PR부터 확인
- 특수한 행정구역을 가지는 경우 처리
- 맵킷에 현재 위치 표시
- 지도 랜더링 변경 - 스유 스타일의 랜더링으로는 변경 불가(스유만 이쁜거 내줌)
- 지도 사용자 상호작용 적용 - 정적, 위치 따라가기, 방향에 맞춰 회전
- Running View 뷰모델 적용
- 날씨 API 연결해서 데이터 받아보기
- Running View 이슈 사항 정리
트러블 슈팅
대한민국 행정구역 처리 방법
앱에서 위치 정보를 활용할 때, 행정구역을 처리하는 방식이 필요했다. 특별시, 광역시 단위와 그 아래의 시, 군, 구, 동, 읍, 면 단위를 어떻게 처리할 지 정리할 필요가 있었다.
기존의 행정구역 처리
let state = placemark.administrativeArea ?? "" // 도, 광역시
let city = placemark.locality ?? "" // 시, 군, 구
let district = placemark.subLocality ?? "" // 동, 읍, 면
행정구역을 해당 코드로 처리하게 될 경우 서울특별시는 "서울특별시 서울특별시 XX동"으로 나오게 된다. 처음 기획단계에서 원하던 부분은 "A시(도) B시(구,군) C동(읍,면)" 이었기에 수정이 필요했다.
수정 방법
- CLPlacemark.description에서 "대한민국"이 포함된 부분을 필터링
- 주소를 공백을 기준으로 나눔
- 각 단어가 특정 접미사(Suffix)를 포함하는지 확인해서 행정구역을 분류한다.
private func placemarksToString(_ placemark: CLPlacemark) -> String {
var state: String = "" // 도, 광역시
var city: String = "" // 시, 군, 구
var district: String = "" // 동, 읍, 면
let description: String = String(
placemark
.description
.split(separator: ",")
.filter { $0.contains("대한민국") }
.first ?? ""
)
let components = description.split(separator: " ").map { String($0) }
for component in components {
if component.hasSuffix("특별시") || component.hasSuffix("광역시") || component.hasSuffix("도") {
state = component
} else if component.hasSuffix("시") || component.hasSuffix("군") || component.hasSuffix("구") {
city = component
} else if component.hasSuffix("동") || component.hasSuffix("읍") || component.hasSuffix("면") {
district = component
}
}
return district.isEmpty ? "\(state) \(city)에서" : "\(state) \(city) \(district)에서"
}
CLPlacemark의 데이터를 이용해 대한민국의 행정구역을 자동으로 분류하는 방식을 구현했다.
수정된 사항을 통해 위치 정보를 받을 때, 특별시,광역시,도 단위에서 부터 동,읍,면 으로 세부 분류가 가능하다.
'이스트소프트 부트캠프' 카테고리의 다른 글
| [이스트소프트 부트캠프] 2차 프로젝트 - 3월 17일 (0) | 2025.03.17 |
|---|---|
| [이스트소프트 부트캠프] 2차 프로젝트 - 3월 15일 (0) | 2025.03.16 |
| [이스트소프트 부트캠프] 2차 프로젝트 - 3월 14일 (0) | 2025.03.15 |
