iOS 개발일지
0731 1차 평가과제 개선점 (4주차) 본문
4주차 - 1차 평가과제 코드 개선
#2. Assignment
- 다마고치 프로젝트 개선하기- 리터럴한 문자열 줄이기
indentifier는 전부 타입 프로퍼티로 초기화해놨지만, StoryboardName과 UserDefaults는 미처 신경쓰지 못했던 것 같다.
한 눈에 보기 좋아졌고, 코드를 작성할 때에도 실수가 적을 것 같아 다음에도 열거형을 더 적극적으로 활용해야겠다.
- 구조체 내에서 타입 프로퍼티/메소드 활용해서 개선하기
이번에 작성해서 사용한 구조체 같은 경우에는 굳이 인스턴스 프로퍼티가 필요하지 않을 것 같아 전부 타입 프로퍼티/메소드로 수정했다.
공통된 값을 사용할 거라면 타입 프로퍼티가 인스턴스를 생성하지 않아도 되니 더 적합한 것 같다.
- 화면 전환 개선
해결중...
- 생명주기 메서드 사용 시, 슈퍼클래스 메서드 먼저 수행하기
블로그에 정리한 기억이 생생한데 이걸 왜 까먹었는지! 바로 한줄 추가했다.
- didSelectRowAt 내부에서 TableView.reloadRows 구현하기
reload는 이름을 변경하고 돌아왔을 때 TableViewCell에 변경된 이름이 바로 반영이 되도록 메서드를 호출했던 것이다.
didSelectRowAt는 클릭했을 때 호출되는 메서드라서 제대로 반영이 안될 것 같은데, 이름이 변경되는 순간을 감지해서 호출할 순 없을까?
...라고 생각했더니! 번뜩 프로퍼티 옵저버가 생각나서 바로 활용해봤다.
이렇게만 하면 didSet이 동작하지 않는데, 동작하지 않는 이유는 RenameViewController에서는 이름에 해당하는 UserDefaults의 값이 변경되었을 뿐, userName 프로퍼티는 변경되지 않기 때문이다.
userName에 UserDefaults의 값이 바뀔 때마다 초기화가 다시 일어날 것이라고 생각했지만, 그렇지 않다.
저 시점에 UserDefaults에 저장되어있던 값으로 초기화되고 userName의 정보는 동결되는 것이다.
그래서 RenameViewController를 pop하기 전에 userName을 초기화하는 코드를 추가하니 didSet은 제대로 호출이 된다.
호출은 되지만... 셀이 갱신되지는 않는다.
reloadRows의 코드가 잘못되었나 싶어 reloadData로도 실행해봤지만 역시 갱신되지 않는다.
조금 더 공부해야겠다ㅠ
- TableView의 셀에 대한 정보를 열거형의 rawValue로 관리하기
기존의 방법으로는, 만약 TableView의 셀의 위치가 바뀔 경우에 코드 수정이 불필요하게 많이 일어날 수 있는 코드였다.
열거형을 활용하면 셀이 추가되거나 위치가 변경되거나 삭제되더라도 이미 작성한 코드는 건드리지 않아도 된다.
- 밥먹기/물먹기 텍스트필드 키보드로 가리지 않게 개선하기
IQKeyboardManager가 안깔려서 코드로 구현해야 하는데, 여기서는 어쩔 수 없이 스택오버플로우 선생님들의 도움을 빌렸다.
# 다마고치 프로젝트 오류
- 이름 변경 후 백버튼을 누르면 SettingTableView의 NavigationBarTitle이 사라짐
'SeSAC iOS 데뷔과정 2기' 카테고리의 다른 글
0802 새싹 22회차 정리 (0) | 2022.08.02 |
---|---|
0801 새싹 21회차 정리 (0) | 2022.08.01 |
0729 새싹 20회차 정리 (0) | 2022.07.29 |
0728 새싹 19회차 정리 (0) | 2022.07.28 |
0727 새싹 18회차 정리 (0) | 2022.07.27 |