-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feat] #191 - 위치선택 지도에서 선택 기능 추가 #205
The head ref may contain hidden characters: "#191-\uC704\uCE58\uC120\uD0DD"
Conversation
xcode 14.3 버전에서 생기는 에러 수정을 위한 코드
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생 많으셨습니다~~ 🔥🔥🔥🔥
CombineCocoa
는 처음 보네요
UI 되게 깔끔하게 짜신 거 대박 멋지십니다 👍
중간에 보였던 오타와, 궁금했던 점 위주로 달았고, 고민하셨던 부분에 살짝 이해가 부족하여 추가 질문 남겼습니다.
얼른 코드 리뷰 반영하고, 머지 돼서 직접 코드 돌려서 보고 싶네요 ㅎㅎ
또한 긁어오셨던 부분은 조금 어려워서, 대면 또는 회의할 때 설명해 주시면 좋을 것 같아요!! 😅
...Runnect-iOS/Network/Dto/CourseDrawingDto/ResponseDto/KakakoAddressSearchingResponseDto.swift
Outdated
Show resolved
Hide resolved
Runnect-iOS/Runnect-iOS/Presentation/CourseDrawing/Views/LocationSelectView.swift
Show resolved
Hide resolved
Runnect-iOS/Runnect-iOS/Global/Extension/UIKit+/UIGestureRecognizer+.swift
Outdated
Show resolved
Hide resolved
Runnect-iOS/Runnect-iOS/Presentation/CourseDrawing/VC/DepartureSearchVC.swift
Outdated
Show resolved
Hide resolved
do { | ||
let responseDto = try result.map(TmapAddressSearchingResponseDto.self) | ||
self.updateData(model: responseDto.toDepartureLocationModel(latitude: latitude, longitude: longitude)) | ||
} catch { | ||
print(error.localizedDescription) | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분에 do~catch
인 것 처럼 다른 부분도 do-catch 사용 하셨는데
어떠한 에러를 잡아서 처리하기 위해 사용 하셨는지 궁금합니다 ! 🤔
또는 어떠한 에러가 발생하는 경우가 생길까요? 🙋♂️
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
파싱하는 부분에서 에러가 생길 수 있어서
여태 모든 서버 통신 함수는 do~catch 를 사용한 것 같고
저 또한 그대로(죄송합니다😇) 사용했는데요
다른 VC에서도 확인해보니 파싱 실패시 print(error.localizedDescription)
로 print를 찍어주는걸로만 예외처리를 해온 것 같네요
근데 이렇게 되면 사실상 예외처리를 한게 의미가 없어진다고는 생각합니다
이번 기능 연결하고 네트워크 쪽 리팩토링 진행해보고 싶은데 그때 또 코드리뷰 갈겨주십쇼..
예리한 질문 덕분에 저도 생각을 다시 해봤네요 꾸벅꾸벅
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
없는 곳도 있지만, 동시에 do-catch
사용하는 부분이 있었는데요!
"그냥 코드들을 읽어보다가 여기는 없는데, 여기는 있네?
" 라고 과거에 생각해 보다가 마침 소진님이 사용하시는 거 보고 궁금하여 질문을 해본 거였습니다 ㅎㅎ
저도 중복 되는 부분도 리팩토링 할 생각이 있는데, 2차 업데이트 끝나고 여유있으면 같이 작업해보아요
~ 💪💪
// | ||
// BaseView.swift | ||
// Runnect-iOS | ||
// | ||
// Created by Sojin Lee on 2023/09/25. | ||
// | ||
|
||
import UIKit | ||
import SnapKit | ||
|
||
protocol BaseViewProtocol { | ||
func setDelegate() | ||
func setUI() | ||
func setLayout() | ||
} | ||
|
||
class BaseView: UIView, BaseViewProtocol { | ||
// MARK: - Initializer | ||
|
||
override init(frame: CGRect) { | ||
super.init(frame: frame) | ||
|
||
setDelegate() | ||
setUI() | ||
setLayout() | ||
} | ||
|
||
@available(*, unavailable) | ||
required init?(coder _: NSCoder) { | ||
fatalError("init(coder:) has not been implemented") | ||
} | ||
|
||
// MARK: - Setup Methods | ||
|
||
func setDelegate() { } | ||
|
||
func setUI() { } | ||
|
||
func setLayout() { } | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오.. 리팩터링할때 정말 유용할 것 같습니다 👍👍👍
Runnect-iOS/Runnect-iOS/Presentation/CourseDrawing/VC/DepartureSearchVC.swift
Outdated
Show resolved
Hide resolved
지도 선택 | 검색 | 현재 위치 설정 하는 경우는 세 개의 파일에서 사용되기 때문에 싱글톤으로 수정하였습니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
싱글톤 굿 잡 👍
final class SelectedInfo { | ||
static let shared = SelectedInfo() | ||
var type: SelectedType = .other | ||
|
||
private init() {} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
굿잡
do { | ||
let responseDto = try result.map(TmapAddressSearchingResponseDto.self) | ||
self.updateData(model: responseDto.toDepartureLocationModel(latitude: latitude, longitude: longitude)) | ||
} catch { | ||
print(error.localizedDescription) | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
없는 곳도 있지만, 동시에 do-catch
사용하는 부분이 있었는데요!
"그냥 코드들을 읽어보다가 여기는 없는데, 여기는 있네?
" 라고 과거에 생각해 보다가 마침 소진님이 사용하시는 거 보고 궁금하여 질문을 해본 거였습니다 ㅎㅎ
저도 중복 되는 부분도 리팩토링 할 생각이 있는데, 2차 업데이트 끝나고 여유있으면 같이 작업해보아요
~ 💪💪
/// 현재 위치 | 검색 | 지도에서 선택 중 분기처리를 해주기 위함 | ||
enum SelectedType { | ||
case other | ||
case map | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
확실히 깔끔쓰 하네요
let documents: [Document] | ||
|
||
func toDepartureLocationModel(latitude: Double, longitude: Double) -> DepartureLocationModel { | ||
let roadName = self.documents[0].roadAddress.buildingName ?? "내가 설정한 출발지" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@513sojin
여기는 코드를 보면 중간에 옵셔널일 경우가 없어서 그냥 없애거나 중간에 옵셔널 타입을 넣어야겠습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
생각해보면 아무 것도 안온다고 해도 nil이 아니라 빈 문자열이 오겠네요 ... 조언 감사합니당 !! 근데 요 친구 어차피 사용 안해서 없애줄게요 ㅎ.ㅎ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
네네 제가 없앨게요~~
🌱 작업한 내용
자잘한 수정 사항
🌱 PR Point
기존의 코스 그리기 화면은
위치 검색 -> 해당 위치에 마커 찍음 -> 코스 그리기 화면
의 순서로 진행되는데지도에서 선택한 경우
위치 검색 -> 해당 위치에 마커 찍기
가 아니라위에는 마커를 띄워만 두고, 실제로 코스를 그리는 화면에서 마커를 찍게 됩니다
결론 : 지도에서 선택한 경우는 분기처리가 필요했다 !! 입니다.
따라서 크게 두 가지 경우로 나누어 생각했습니다
현재 위치에서 시작하기
에서 진입 | 검색으로 진입지도에서 선택하기
로 진입고민했던 부분
이 코드를 검색 화면에 넣어두고 3개의 파일에서 사용했는데
여러 개의 파일에서 사용하기 때문에 더 상단에 넣어야할 것 같다는 고민을 마주했답니다 ..
결론적으로는 코드 업로드와 관련된 네트워크 파일에 넣으려고 하는데 어떤가요 ?!
📸 스크린샷
RPReplay_Final1699878718.2.mov
📮 관련 이슈