Overview

프로젝트 인원 및 개발 파트

  • 3명
  • K회원가입, 연락처, 앨범, 마이페이지의 모든 화면과 기능을 맡아 개발했으며, DB를 담당했습니다.

프로젝트 기간

  • 2018.12 ~ 2019.06

배운 점

  • Realm 사용법(Hashable, Primary Key, Filter 등)
  • 연락처를 가져오고 필터링 하는 방법
  • 영상의 재생 시점을 컨트롤하는 방법
  • MVC 패턴으로 협업하기 수월하게 폴더 구조잡는 방법
  • Git으로 협업하는 방법
  • DB 구조 잡는 방법
  • UITableView 커스터마이징

어려웠던 점

  • DB 설계
    • 특별히 난이도가 있었던 부분을 맡아서 하지 않았기 때문에 어려웠던 부분이 크지 않으나, DB 설계를 처음 했기 때문에 DB 설계 부분에서 어려움을 많이 겪었다.
    • 다행히 같이 개발하는 선배 개발자가 상세히 체크를 해줘서 이 부분에서 많이 배울 수 있었다.
  • 다중 비교 로직
    • DB와 관련된 부분으로 단말의 연락처를 가져와 서버와 동기화시켜 업데이트하는 부분의 로직을 만드는 것이 힘들었다.
    • 연락처를 동기화하는 시점에 단말에서 삭제된 연락처를 DB에서 삭제하고, 변경된 연락처의 경우 DB에 반영하고, 새로 추가된 경우 DB에 새로 추가하고, 이 모든 연락처가 리얼 360에 가입된지 확인하고 가입 여부를 업데이트해야 했다.
    • 처음에는 삭제된 연락처, 변경된 연락처, 새로 생성된 연락처를 알아내기 위해 각각 2중 for문을 돌렸는데 연락처가 1만건 이상인 경우 엄청난 시간이 소요되는 문제로 인해 간헐적으로 앱이 죽기까지 했다.
    • 2중 for문으로 1대1 비교를 할 수 밖에 없는 Array대신 중복된 값을 저장할 수 없는 Set의 차집합, 교집합 등의 메서드를 이용해 시간이 많이 소요되는 부분을 크게 줄일 수 있었다.

사용 라이브러리

  • Alamofire
  • Crashlytics
  • Fabric
  • Firebase/Core
  • Firebase/Messaging
  • GoogleAnalytics
  • GVRKit
  • Kingfisher
  • RealmSwift
  • Toast-Swift