테이블뷰의 동작 과정과 활용을 학습하기 위해 연락처를 관리하는 앱을 구현해 보았습니다. 이 과정에서 백지 상태에서부터 프로젝트 초기 구성하기, 스토리보드 없이 programmatic 하게 구현하기, MVC 패턴에 대한 이해, delegate, dataSource, 의존성 주입 등의 키워드를 가지고 학습 및 적용해 보았습니다.
- 테이블 뷰 활용하기
- 백지 상태에서 프로젝트 초기 구성하기
- 스토리보드 없이 프로젝트 구성하기
- MVC 패턴의 이해
- delegate, dataSource 패턴 학습
- 의존성 주입 학습
- Unicode 에 대한 이해
- 타입의 캡슐화/은닉화
- extension 활용하여 기본 타입에 커스텀 메서드 적용하기
- programmatic 한 오토레이아웃 적용해보기
- protocol 및 typealias 활용하기
Contact.swift
- Contact 구조체
- property : 이름, 전화번호, 나이
Contacts.swift
- Contacts 모델 클래스
- property: 기초데이터, 정렬배열
- method: 정렬된 연락처 반환, Contact 정렬, 필터링, 배열, 추가, 삭제, 변경, JSON 파일 로드
ContactsProtocol.swift
- delegation 을 위한 프로토콜
ContactsTableView.swift
- 연락처 테이블 뷰 클래스
ContactsAdditionModalView.swift
- 연락처 추가 모달 화면 뷰 클래스
ContactsNavigationBar.swift
- 연락처 리스트 화면 내비게이션 바 뷰 클래스
ContactsTableViewCell.swift
- 연락처 테이블 뷰 셀 커스텀 클래스
ContactListViewController.swift
- 연락처 뷰 컨트롤러
- ContactsApproachable 로 정렬된 연락처 받아오는 기능 위임받음
ContactsAdditionModalViewController.swift
- 새 연락처 뷰 컨트롤러
- ContactsManageable 로 연락처 추가/변경/삭제 기능 위임받음
- 유효성 검사 메서드
UIViewControllerExtension.swift
- 알럿 기능
공식 문서에 익숙해지고 UIKit 에 빈번하게 나타나는 여러 패턴들에 익숙해졌다는 점이 이번 프로젝트를 통해 얻은 가장 큰 수확 중 하나입니다. 모르는 내용이 나오더라도 검색을 통해 키워드르 얻고 공식 문서를 확인하여 해결할 수 있을 것이라는 자신감을 작게나마 얻게 되었습니다. MVC 패턴이라든가 의존성 주입, 책임과 역할의 분배 등 개발 철학에 관련한 부분들에 대해서도 여러 인사이트를 얻을 수 있었습니다. 앞으로 해당 키워드들에 대한 더 깊은 공부를 통해, 트레이드오프가 필요한 상황에서 근거를 가지고 의견을 교환할 수 있도록 성장하고자 합니다.