안녕하세요. 개발하는 정주입니다.
오늘은 Sign Up 코드 리뷰를 받은 것에 대해 포스팅하려고 합니다.
결과는 오토 레이아웃에서 한 곳 실수를 해서 Fail을 받았습니다. 기준이 엄격하긴 한 듯 하나 이해 못 하는 이유는 아니었기에 수정하여 추가 결제, 재제출하였습니다.
이에 대해 자세히 알아보겠습니다.
목차
Fail을 받은 이유
Fail이 난 가장 큰 이유는 SafeArea를 고려하지 않은 오토 레이아웃 적용이었습니다. 모든 곳에선 아니고 한 부분이 그랬네요. 세로 모드일 때는 SuperView와 SafeArea의 좌우 영역이 같기 때문에 상관없지만 가로로 회전시킬 경우 차이가 나기 때문에 화면 3의 Birth Label의 오른쪽이 잘리는 문제가 생겼습니다.
따라서 스토리보드에서 오토 레이아웃을 다시 잡으며 해당 문제는 해결하였습니다.
추가로 https://wit.nts-corp.com/2019/10/24/5731 글을 추천해주셨는데요. SafeArea에 대한 레이아웃 처리를 자세히 다루었으니 참고하시면 좋을 듯합니다.
조언 내용
부스트 코스의 코드 리뷰는 유료로 진행되지만 프로젝트의 모든 코드를 하나하나 코멘트해주십니다.
따라서 조언을 받은 수정 사항도 함께 공유합니다.
이미지를 저장할 땐 UIImage가 아닌 Data를 사용한다.
저는 UserInfomation 구조체의 profileImage를 UIImage? 형으로 선언하였습니다.
구현을 하면서도 UIImage로 하는 게 맞는가에 대한 의문이 있어 주석으로 질문을 드렸습니다.
이에 대한 답변은 "No"였습니다.
이미지를 저장하고 불러올 때는 UIImage보다는 Data형을 사용한다고 합니다.
// 저장할때
if let pngRepresentation = image.pngData() {
UserDefaults.standard.set(pngRepresentation, forKey: key)
}
// 불러올때
if let imageData = UserDefaults.standard.object(forKey: key) as? Data, let image = UIImage(data: imageData) {
// use image
}
UserDefault에 나오는 예시를 첨부해주셨는데요. 이미지에서 pngData()를 얻어 Data형으로 저장을 하고 이 Data를 기반으로 UIImage를 생성하여 불러오는 것을 새로 알았습니다.
NavigationController를 사용하라
NavigationController를 사용하지 않은 것도 지적 대상 중 하나였습니다.
해당 프로젝트는 A -> B -> C로 진행이 되며 B -> A, C -> B, C -> A로 진행되는 시나리오도 존재합니다.
이렇게 순차적으로 진행되는 프로젝트에서는 NavigationController로 하기 적절하다고 합니다.
따라서 NavigationController를 추가하고 Modal로 present 한 것을 push로 변경해주었습니다. push로만 변경하면 상단에 내비게이션 바와 Back Button이 생기는데요. 이는 스토리보드의 NavigationController 속성에서 보이지 않도록 설정해주었습니다.
view.window?.rootViewController?.dismiss(animated: true, completion: nil)
Root View로 돌아가는 방법도 이전에는 위 코드처럼 dismiss를 이용해주었는데요. unwind segue를 이용하여 변경해주었습니다.
마무리 잡담
오늘은 코드 리뷰 코멘트 적용에 대해 포스팅을 하였습니다. 수정한 후 21,000원을 추가 결제하여 다시 코드 리뷰를 신청하였는데요. 이번에는 Pass가 뜨기를 기원합니다.
감사합니다!
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.