-
Notifications
You must be signed in to change notification settings - Fork 15
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] #391 - 솝마디 메인 뷰 화면 전환 및 데이터 바인딩 #393
Conversation
- 주어진 날짜가 없다면 오늘 날짜를 사용
- bindOutput에서 클로저로 resultModel 전달 - 클로저 내부에서 vc 생성시 model 주입 - resultVC의 view에서 setData로 바인딩
- /fortune이 마지막인 경우 DailySoptuneCoordinator 실행 - /word가 마지막인 경우 DailySoptuneCoordinator 실행 - 추후 home/fortune으로 변경될 것을 고려하여 AppCoordinator에 flow 추가
|
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.
수고하셨어용 짱짱걸
dateFormatter.timeZone = TimeZone(identifier: "Asia/Seoul") | ||
- parameters: | ||
- dateString: 변경하고자 하는 dateformat을 입력합니다. ex. "HH:mm" | ||
|
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.
🫶🏻
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 리뷰 한번씩은 달아주는게 예의인 것 같아서 별거 없지만 몇가지 남겨봅니다..
나중에 시간날 때 확인해보세요~!
*/ | ||
|
||
public func setDateFormat(date: String? = nil, from before: String? = nil, to after: String) -> String { | ||
let dateFormatter = DateFormatter() |
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.
Swift의 DateFormatter
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.
헉 그동안 init 작업의 오버헤드는 고민해보지 않았던 것 같아요 감사합니다 !!
@@ -26,7 +26,7 @@ public func setDateFormat(date: String? = nil, from before: String? = nil, to af | |||
dateFormatter.timeZone = TimeZone(identifier: "Asia/Seoul") | |||
|
|||
if let dateString = date, | |||
let inputFormat = before { | |||
let before = before { |
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.
요거 아마 이름 같으면 if let before { }
로 축약 가능할거에요
.subscribe(output.todayFortuneResult) | ||
.withUnretained(self) | ||
.sink { _, resultModel in | ||
self.onReciveTodayFortuneButtonTap?(resultModel) |
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에도 코멘트 남겼었는데 다음과 같이 써야 됩니당
.withUnretained(self)
.sink { owner, resultModel in
owner.onReciveTodayFortuneButtonTap?(resultModel)
}
@@ -70,24 +71,32 @@ extension DailySoptuneResultContentView { | |||
self.addSubviews(soptuneLogoImage, dateLabel, contentLabel) | |||
|
|||
soptuneLogoImage.snp.makeConstraints { make in | |||
make.top.equalToSuperview().inset(32) | |||
make.top.equalToSuperview().inset(32.adjustedH) |
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.
궁금증!
혹시 adjusted를 쓰는 이유가 있을까요~? 저는 개인적으로 기기에 따라 간격이 비례했으면 좋겠다는 디자인 요구사항이 없다면 이걸 사용하지 않거든요.
(정말 그냥 호기심에 질문 드리는거에요!)
public struct DailySoptuneWordDeepLink: DeepLinkExecutable { | ||
public var name = "word" | ||
public var children: [DeepLinkExecutable] = [] | ||
public var isDestination = true |
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.
요거 아마 여기서 true로 지정할 필요 없을거에요.
딥링크 URL이 어떤 형식으로 오는지 모르겠지만 예를 들어 다음과 같이 온다면,
url = "home/soptune-main/soptune-detail"
가장 마지막 path인 soptune-detail에 대응되는 DeepLinkExecutable 구현체에 isDestination를 true로 바꿔주는 로직이 있어요. (DeepLinkParser의 makeDeepLinkList 메서드를 참고해주시길)
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 요약
🌱 작업한 브랜치
🌱 PR Point
📌 참고 사항
setDateFormat 메소드 수정
dateString
,기존 포맷
,변경 포맷
을 인자로 받음.바꾸고자 하는 dateString이 없는 경우 오늘 날짜를 사용함.
데이터 바인딩
딥링크
DailySoptuneDeepLink
에서 dailySoptuneCoordinator.start()를 실행하게 됩니다.📸 스크린샷
📮 관련 이슈