-
Notifications
You must be signed in to change notification settings - Fork 150
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
만국박람회 [STEP 2] Jiseong, Ari #118
Conversation
- 테스트에 필요한 Asset 파일 추가
- 옵셔널이 아닌 에러나 데이터를 반환할 수 있도록 개선 - 에러처리에 따른 JSONError 타입 추가
- 파싱 실패시 사용자에게 보여줄 Alert을 extension으로 추가
- CategoryPrefix 타입 생성 - Exposition 타입의 연산 프로퍼티(numberFormatter) 추가 - Label의 접두어 Fontsize 변경 메소드 추가
- titleLabel에서 특정 구간에서 newLine을 할 수 있도록 수정
- 기존 커스텀 셀의 IBOutlet 이름을 수정 - 네비게이션 바의 타이틀을 수정 - 필요없는 주석 제거 - parsing() 메소드 구현 - UITableViewDataSource를 활용하여 TableView를 구성
- 네비게이션바 타이틀 설정 - 전달받은 데이터를 통해 UI 업데이트
- mainVC와 listVC에서 파싱할 때 파라미터로 전달했던 FileName을 새로 생성한 타입으로 대체
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.
@leeari95 @yim2627
안녕하세요, 아리, 지성!
고민했던점 잘 읽어보았습니다! 구현의 이유들이 잘 나타나있어서 코드 이해에 도움이 많이 되었습니다!
설정이 쉽지 않았을텐데 xib 를 활용하여 재사용성을 높힌 점 매우 칭찬드립니다! 👏
궁금했던 것 / 조언을 얻고 싶은 점
xib를 활용하여 커스텀 셀을 구현하였는데 셀에 들어갈 요소들을 설계할 때 ios14부터 사용되는 contentConfiguration을 사용해야되나? 라는 의문점이 들었습니다.
iOS14 부터 사용가능한 contentConfiguration 은 커스텀 클래스가 아닌 기본 제공되는 셀을 쓸 때 사용가능한 걸로 알고 있습니다.
따라서 지금처럼 커스텀 클래스를 만든 상황이라면 어차피 사용할 수가 없네요!
화면간 데이터 전달을 할 때 현업에서는 어떤 방식으로 하시는지가 궁금합니다.
저희는 prepare 메소드를 활용하여 데이터 전달을 하였는데, TableView의 Delegate 메소드에서 바로 데이터를 넘겨주기도 하는 것 같던데 어떤 것이 적절한지 잘 판단이 서질 않습니다.
둘 다 가능하니 쓰고싶은 것 쓰시면 될 것 같아요!
한 화면에 Segue가 tableView만이 아니라 여러 곳에 다수 존재한다면 tableView에서의 이동은 tableViewDelegate에서 해주면 좀 더 명확해질 수 있겠네요!
셀을 터치하는 시점에 데이터를 NextViewController의 프로퍼티를 활용하여 전달해주고 있습니다.
이 부분을 프로퍼티를 활용하지 않는 다른 좋은 방법이 떠오르지가 않습니다.
화면에서 데이터를 주고받을 때 찌루루는 보통 어떤 방법으로 주고받는지 궁금합니다.
nextViewController에 setModel(_ model: Model) 과 같이 세터메서드를 하나만들어서 이용해보는 건 어떨까요?
저도 자주사용하는 방법입니다.
그러면 NextViewController의 프로퍼티는 setModel메서드 내에서만 접근하므로 private 으로 지정할 수 있겠어요!
함수형 프로그래밍 방식으로 설계해보려 하였는데 저희가 짠 코드가 함수형 프로그래밍이라고 하기 적합한지 궁금합니다.
우선 아리와 지성이 생각하기에 함수형 프로그래밍으로 짰다고 생각하는 곳이 어느 부분이고, 왜 그렇게 생각하셨는지 구체적으로 말씀해주시면 좀 더 이야기가 잘 될 것 같아요!
MainViewController 내부에 있는 setUpView() 메소드가 조금 방대하다고 느껴지는데 리팩토링을 하고 싶은데 좋은 방법이 떠오르지가 않습니다. 찌루루의 조언이 필요합니다!
제가 보기에는 딱 적절해보입니다! 이부분을 더 분리하기는 어려울 것 같아요! 이미 UI 구성하는 역할 한가지만 하고 있어서 충분해보입니다!
|
||
extension UIViewController { | ||
func showAlert(message: String) { | ||
let cancelAction = UIAlertAction(title: "OK", style: .default) |
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.
title 은 OK인데 변수명은 cancelAction인 이유가 따로 있나요?
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.
잘못된 네이밍이였습니다 okAction
으로 수정하였습니다.
@@ -0,0 +1,21 @@ | |||
import XCTest | |||
|
|||
class JSONParesTests: XCTestCase { |
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.
JSONParseTests 오타인거 같아요!
|
||
class ItemListViewController: UIViewController { | ||
private var items = [ExpositionItem]() | ||
@IBOutlet private weak var itemListTableVIew: UITableView! |
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.
i 가 대문자네요!
return cell | ||
} | ||
|
||
private func configure(of cell: ItemTableViewCell, by item: ExpositionItem) { |
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.
이 메서드도 ItemTableViewCell 내에 선언된다면 cell 의 프로퍼티들을 외부에서 알지못해도 UI 설정이 가능하겠네요!
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.
네 뷰컨에서 굳이 해줄 필요없이 커스텀 셀 클래스 내부에서 해줘도 되겠단 생각이들어 코드를 옮긴 후 뷰컨에서 호출해주는 방식을 사용하였습니다 😁
} | ||
} | ||
|
||
extension ItemListViewController { |
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.
전반적으로 extension으로 영역을 잘 나눠주셔서 가독성이 좋네요!
func test_Decode_파리만국박람회() { | ||
let exposition = JSONParse<Exposition>.decode(fileName: "exposition_universelle_1900") | ||
|
||
XCTAssertEqual(exposition?.visitors, 48130300) |
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.
Result Type으로 바꾸면서 테스트함수를 미처 보지 못한것같습니다 🥲
수정하였습니다.
- ItemDetailViewController에 setModel() 메소드 추가 - ItemListViewController에서 데이터 전달 시 메소드를 통해 전달할 수 있도록 수정 - 오타 수정시 적용되지 않았던 IBOutlet 연결 부분 재연결해주어 수정
찌루루! 피드백 감사합니다! 확인해주시고 머지 부탁드리겠습니다. 😁 🙏🏻 개선 사항
|
- IBOutlet 프로퍼티에 접근제어 추가 - configure 메소드를 private으로 수정하고 setModel로 데이터를 넘겨받도록 수정
@jae57
@lee_ari95 @yim2627
안녕하세요. 찌루루!☺️
STEP 2가 무사히 마무리되서 PR 보내드립니다.
저희가 STEP 3에서 진행해야 할 오토 레이아웃도 최대한 할 수 있는 만큼 시도해보았습니다.
추가적으로 부족한 점은 STEP 3에서 마저 채워나가도록 하겠습니다.
혹시 이 외에 저희가 놓친 부분이나 부족한 부분이 있다면 번거롭더라도 한번 더 짚어주신다면 감사하겠습니다. 🙏🏻
고민했던 것
궁금했던 것 / 조언을 얻고 싶은 점
저희 조는 cell의 커스텀 클래스를 활용해 UI요소들을 아울렛 변수로 연결해주고 들어갈 데이터를 설계해주는 방식으로 하였는데, 이 부분이 최신 ios 버전에선 적합하지 않은 것인지 궁금합니다.
저희는 prepare 메소드를 활용하여 데이터 전달을 하였는데, TableView의 Delegate 메소드에서 바로 데이터를 넘겨주기도 하는 것 같던데 어떤 것이 적절한지 잘 판단이 서질 않습니다.
화면에서 데이터를 주고받을 때 찌루루는 보통 어떤 방법으로 주고받는지 궁금합니다.
이번 피드백도 잘부탁드립니다! 😊