목록분류 전체보기 (88)
iOS 개발일지

iOS 앱 개발자 데뷔 과정 72회차 #1. Compositional Layout - Collection View APIs Collection View는 iOS 6에 처음 등장했다. 무엇이 (어떤 데이터가), 어디에 (어떤 레이아웃에), 보여지는지 (어떻게 렌더링 되는지) 의 관점으로 살펴볼 때, 데이터는 인덱스 기반 프로토콜인 UICollectionViewDataSource로 관리되어 있었다. 레이아웃은 UICollectionViewLayout이 있었고, 주로 구체적인 하위 클래스 (Concrete Subclass) 인 UICollectionFlowLayout을 사용하고 있었다. 이후 iOS 13에서 DiffableDataSource, Compositional Layout인 최신 API가 도입이 되었고..

iOS 앱 개발자 데뷔 과정 71회차 #1. Realm Relationship Realm은 다른 RDBMS에서 사용하는 브릿지 테이블이나 조인을 사용하지 않고 Link, EmbeddedObject, LinkingObject를 통해 1:N, N:N 역 관계를 지원하고 있다. - To-Many Relationship (feat. List) Realm 리스트를 활용해, 서로 다른 두 개의 테이블을 연결시켜 일대다 관계를 만들어 봤다. 모델에서 할 일은 여기서 끝! 하지만 여기까지 진행한 후 아래와 같이 DetailTodo에 task를 직접 추가하면 어떻게 될까? 아무리 두 테이블을 연결시켰다고 해도 DetailTodo에 직접 추가한다면 Todo를 통해 접근할 수 없게 된다. DetailTodo에서는 확인할 수..

iOS 앱 개발자 데뷔 과정 70회차 #1. Shell - Shell 이란? 커널은 운영체제의 core한 부분으로, 하드웨어/입출력/시스템 자원을 관리한다. Shell은 사용자가 커널 (OS) 에 명령을 내릴 수 있는 명령어 해석기의 역할을 한다. Shell의 종류는 다양하며, Bourne Shell, Bash, Z Shell 등이 존재한다. MacOS는 Bash Shell을 사용했으나, MacOS 10.15 (Catalina) 부터 Z Sehll을 기본 Shell로 사용한다. Terminal은 Shell에 명령을 입력할 수 있는 인터페이스 (프로그램) 이다. 터미널에 입력하는 각종 명령어는, 실제로는 Shell에 명령을 내리는 명령어이기 때문에 Shell 명령어라고 한다. - Shell 명령어 정리 -..

iOS 앱 개발자 데뷔 과정 69회차 #1. Migration 하드웨어, 소프트웨어, 네트워크 등 넓은 범위에서 사용되고 있는 개념으로, 현재 운영 환경으로부터 다른 운영 환경으로 옮기는 작업을 말한다. 데이터베이스에서는 스키마 버전을 관리하기 위해 마이그레이션을 사용한다. - Schema Version Realm 데이터베이스에서는 컬럼이 추가되거나 삭제될 때, Schema Version을 증가시키기만 하면 자동으로 마이그레이션이 이루어진다. 별도로 스키마 버전 넘버를 지정하지 않으면 realm의 기본값은 0이며, 마이그레이션을 진행 할 때는 항상 상위 버전으로 업데이트 해야한다. 더 복잡하게 스키마를 업데이트 해야 할 경우엔 migrationBlock을 활용해서 수동으로 마이그레이션 업데이트를 해야 한..
iOS 앱 개발자 데뷔 과정 68회차 #1. Remote Notification - ViewController Transition : 푸시를 클릭했을 때 특정 화면으로 전환하기 특정 푸시를 클릭했을 때 특정 화면으로 전환하는 작업에 대해 알아보자. 화면 전환을 위해서는 SceneDelegate의 Window 객체를 통해 현재 사용자가 머물고 있는 앱 최상단 뷰컨트롤러가 무엇인지 파악해야 하고, 화면 계층에 맞게 화면 전환 코드를 구현해줘야 한다. - 최상단 뷰컨트롤러를 판단해주는 메서드와 연산 프로퍼티 예시 extension UIViewController { // 연산 프로퍼티를 활용해 더 간단하게 사용할 수 있음 (선택사항) var topViewController: UIViewController? { ..

iOS 앱 개발자 데뷔 과정 67회차 #1. Firebase Firebase는 구글이 소유하고 있는 모바일 애플리케이션 개발 플랫폼이다. iOS 개발자이지만... Firebase를 활용해 앱에 관련된 정보를 수집하고, 이를 활용해 앱을 개선해볼 수 있다. Firebase 내에는 정말 많은 기능이 있으며, 이 중 아래 세 개의 기능을 적용해봤다. - Analytics https://firebase.google.com/docs/analytics/events?hl=ko&authuser=0&platform=ios 사용자가 앱을 사용한 시간, 클래스 별 조회수, 이벤트 별 조회수 등을 확인할 수 있다. 사용자의 대략적인 위치 (국가) 등도 확인할 수 있지만 특정할 수 없으며, 개인 정보와도 연결되지 않는다. 문서..

순식간에 지나간 3주간의 출시 프로젝트 - API 통신 개발 초기에 API에 정말 많은 시간을 들였다. 쿼리는 왜 이렇게 많은지, API 통신에서의 매개변수 종류도 몰랐던 나에겐 꽤 아찔했던 경험이었다. 이 외에도 통신 실패 시 대응과 hud의 dismiss 시점, 검색 결과가 없을 시 대응, 페이지네이션 등 고려할 점이 많았다. - DB 설계 API 통신을 통해 데이터를 보여주는 것이 주된 기능인 어플이기 때문에 DB 설계는 크게 어렵지는 않았다. Realm Model은 총 두 가지로, Storage와 MainSettings이다. Storage는 저장 버튼을 누를 경우 저장되는 게임에 대한 정보를 담고 있으며, 중복 저장을 허용하지 않기 때문에 pk는 game의 id값이다. Repository에 id를..