목록SeSAC iOS 데뷔과정 2기 (72)
iOS 개발일지

iOS 앱 개발자 데뷔 과정 40회차 #1. Checklist - Codable (Encodable & Decodable) JSON과 같은 외부 표현과의 호환성을 위해 데이터 유형을 인코딩 및 디코딩할 수 있는 프로토콜이다. JSON 뿐만 아니라 디스크에 데이터 저장, 네트워크 연결 등을 통한 API 통신 등의 작업에서는 데이터가 전송되는 동안 중간 형식 (intermediate format) 으로 데이터를 인코딩 및 디코딩해야 하는 경우가 많은데, Swift 표준 라이브러리에서는 Codable을 통해 데이터 인코딩 및 디코딩에 대한 표준화된 접근 방식을 제공하고 있다. JSON ➡️ Struct 데이터 변환에 디코딩을 사용하고, Struct ➡️ JSON 데이터 변환에 인코딩을 사용한다. Seriali..

iOS 앱 개발자 데뷔 과정 8주차 마무리 - Diary App - 다이어리 앱 마무리 진행 - 3개의 탭 (달력, 검색, 설정) 으로 이루어진 탭바 컨트롤러로 앱 구성 검색 화면의 테이블뷰는 달력 화면 하단의 테이블뷰와 셀의 구성이 같기 때문에, 따로 파일을 만들지 않고 그대로 가져와 사용했다. 탭바를 구현하기 위해 우선 탭바 컨트롤러를 만들고, 탭바로 보여줄 뷰컨트롤러를 설정했다. class TabBarController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() configureTabBarController() } func configureTabBarController() { let firstVC = HomeVie..

iOS 앱 개발자 데뷔 과정 39회차 #0. Memo - Realm 관련 코드 분리 (Repository) 프로젝트를 진행하며 Realm에 관련된 코드가 많아졌다. 이 코드를 전부 메인 뷰컨트롤러에서만 관리하기에는 가독성이 안좋고, 사용성도 좋지 않다. 따라서 Repository 형식으로 코드를 분리하고 관리하는 것이 좋다. extension을 이용한 방법과, class를 이용해 인스턴스로 접근하는 방법 등 여러 방법이 있다. protocol을 활용하면 코드를 하나하나 읽어보지 않더라도 어떤 기능을 하는 메서드가 있는지 보기 쉽다. - FSCalendar 오픈소스 라이브러리인 FSCalendar를 활용해 달력을 띄우고, 날짜별 이벤트를 관리할 수 있다. collectionView기반이기 때문에 retur..

iOS 앱 개발자 데뷔 과정 38회차 #0. Memo - 파일앱 (UIDocumentPickerViewController) 을 활용한 백업 압축 라이브러리를 활용해 압축 파일을 생성하고, 생성한 파일을 UIActivityController로 전달 백업의 순서는 크게 백업할 파일의 위치 확인 ➡️ 파일 압축 ➡️ 압축한 파일을 저장/UIActivityView 띄우기 의 3단계로 볼 수 있다. do-catch 를 통해 간단하게 얼럿만 보여주도록 작성했지만, 여러 에러 상황에 대응할 수 있도록 코드를 작성하는 것이 중요하다. 여기까지 구현하고 백업 버튼을 누르면, 아래처럼 해당 경로에 설정한 이름으로 zip 파일이 생성된다. - 파일앱 (UIDocumentPickerViewController) 을 활용한 복구..

iOS 앱 개발자 데뷔 과정 37회차 #0. Memo - App Sandbox 미국에서 어린 아이의 안전을 위해 모래통 (sandbox) 에서만 놀도록 하는데서 유래한 보안 모델이다. iOS는 앱 하나당 전부 Sandbox화 되어있어, 다른 앱에 대한 접근이 불가능하다. - Bundle Container 앱의 번들로 파일, info.pilist, Resource 등을 그룹화 Compile Source(.swift) 가 바이너리 형태의 실행 파일로 변환 - Data container ( = AppData 폴더) Documents 개발자가 접근 가능한 디렉토리는 Documant, Library, tmp, System Data 이므로 Document의 서브디렉토리를 통해 관리 사용자가 앱을 통해 생성한 문서,..

iOS 앱 개발자 데뷔 과정 36회차 #0. Memo - Property Observer 를 활용한 reloadData #1. Checklist - Realm Update SwipeActionsConfigurationForRowAt 메서드를 통해 Realm 데이터를 업데이트 할 수 있다. - Realm Filter, Sort Filter : https://www.mongodb.com/docs/realm/sdk/swift/crud/filter-data/#operators-1 참고 Sort : https://www.mongodb.com/docs/realm/sdk/swift/crud/read/#sort-query-results 참고 필터는 위처럼 활용할 수 있는데, 검색하고자 하는 String 값은 작은 따옴..

iOS 앱 개발자 데뷔 과정 35회차 #0. Memo - Realm Table 설계 1. Schema 설정 [MongoDB Documentation] 참고 테이블과 컬럼의 구조를 설계하고, 저장될 데이터의 타입과 옵셔널 여부에 대한 특성을 각 컬럼에 부여한다. 컬럼 중 하나를 Primary Key로 설정하며 보통 ID에 대한 컬럼을 별도로 지정한다. 2번 사진 참고 2. Schema에 맞게 Realm Model 설계 3. Primary Key 설정 별도 (String, Int) 로 설정하거나, UUID / Object를 사용할 수 있다. 2번 사진 참고 - Realm Create 1. import RealmSwift No Such Module 에러가 발생할 경우, 빌드하면 해결된다. 2. Realm 파일..

iOS 앱 개발자 데뷔 과정 7주차 마무리 #2. Assignment - Netflix Code Base로 연습하기 - BaseViewController, BaseView, CostomView 등을 활용해서 코드 베이스로 UI 구성 - Code Base tapGestureRecognizer 구현 BaseViewController에서 구현하고 호출하면 상속받은 클래스들은 별도의 작업 없이 제스쳐를 사용할 수 있다. 여기서 tapGestureRecognizer.cancelsTouchesInView = false 가 중요하다!! 기본값은 true인데, false로 바꿔주지 않을 경우 didSelectItemAt과 같은 터치가 작동하지 않는다. - 재생버튼을 누를 경우, 얼럿을 통해 LoginViewContro..