본문 바로가기

전체 글124

[27일차] Codable 이란? Swift4에서 JSON 데이터를 손쉽게 파싱이 가능한 기술이 나왔다고 한다. 그 기술이 바로 'Codable'이다. Swift 공식 홈페이지에서 말하는 정의는 다음과 같다. "A type that can convert itself into and out of an external representation." 자신을 변환하거나 외부표현(external representation)으로 변환할 수 있는 타입입니다. 여기서 말하는 Decodable, Encodable 이란 무엇일까요? - Decodable : 자신을 외부표현(external representation)에서 디코딩 할 수 있는 타입 - Encodable : 자신을 외부표현(external representation)으로 인코딩 할 수 있는 타.. 2020. 8. 19.
[26일차] URLSession (꼭 알아야 할 개념) 앱이 서버에서 애플리케이션 데이터를 검색하거나, 소셜미디어 상태를 업데이트하거나 원격 저장소 파일을 디스크로 다운로드하는 등, 모바일 애플리케이션의 중심에 있는 HTTP 네트워크 요청은 마법을 일으킵니다. 네트워크 요청에 대한 수많은 요구사항을 지원하기 위해 애플은 HTTP를 통해 콘텐츠를 다운로드, 업로드하기 위한 완성된 네트워킹 API인 URLSession을 제공 합니다. URLSession은 HTTP 요청의 송신과 수신을 담당하는 핵심 객체입니다. 다음 3가지 타입으로 제공되는 URLSessionConfiguration을 사용해서 생성합니다. * URLSessionConfiguration - .default: 디스크 지속(disk-persisted) 전역 캐시, 자격 증명(credential)과 쿠.. 2020. 8. 16.
[25일차] Concurrency 동시성 (sync/Async) * Concurrenty (동시성) - 사용자 인터랙션 처리 (Main Thread에서 처리) - 네트워킹 - 백그라운드에서 파일 다운로드 - 파일 저장하고 읽기 컴퓨터에서는 여러 개의 스레드가 동시에 수행되면서 백그라운드에서 수많은 작업들이 이루어진다. * GCD (Grand Centeral Dispatch) : 해야 할 일들을 GCD로 전달해주면 시스템에서 안전하게 수행될 수 있도록 처리 (Queue FIFO 구조로 처리) * DispatchQueue 1) Main Queue : 메인 스레드에서 작동하는 큐 ex) DispatchQueue.main.async { ... } 2) Global Queue : 시스템에 의해 관리되는 큐 # QoS (Quality of Service) : 큐의 우선순위를 결.. 2020. 8. 15.
[24일차] Network 통신 우리가 사용하는 대부분의 앱 서비스에는 'Network' 통신이 필요하다. 로그인, 장바구니, 결제 등등 서버와의 통신이 필요한 기능의 대부분에 쓰여지는 기술이다. * App + Concurrency (동시성) : 앱 서비스 내에서 네트워크 통신이 이루어지는 과정이라도 동시적으로 사용자 터치 반응에 대한 처리는 이루어져야 한다. * HTTP : 앱과 서버 사이에서 데이터를 주고 받기 위한 네트워크 통신규약 * HTTP Request Method 1. POST : Create 2. GET : Read 3. UPDATE : Update 4. DELETE : Delete * Content-Type : 전달되는 데이터 형식(text/html, application/json, image/png, video/mpe.. 2020. 8. 14.
[23일차] TodoList 추가/삭제 TodoList 샘플 앱 마지막으로 "추가(+) / 삭제 (-)" 기능을 추가하고자 한다. 1) [Today] 옵션 : ON/OFF 토글형식으로 선택값에 따라, 다른 카테고리로 분류 2) [+] 추가 버튼 : Input Text에 입력한 데이터를 목록에 추가 3) [-] 삭제 버튼 : 삭제한 데이터가 Todo.json 파일 내에서도 삭제 처리 2020. 8. 12.
[22일차] InputText 와 소프트 키보드 영역 앱에서 정보를 입력하기 위해서는 InputText와 소프트 키보드가 필요하다. 이번 수업에서는 상태에 따라 소프트키보드가 동적으로 Show/Hide 하는 기능을 구현해보고자 한다. 우선, InputText에 커서가 위치했을 때, 소프트 키보드를 보여주는 코드를 구현한다. 그 다음은, InputText에 입력을 마친 후 소프트키보드 영역을 숨김처리가 필요하다. Tap Gesture Recognizer 이벤트를 처리하는 UI를 추가하여, View 영역에 터치이벤트를 확인한다. 소프트키보드 영역 숨김처리는 resignFirstResponder() 로 처리한다. * resignFirstResponder() : 텍스트필드의 현재 상태를 포기했다는 의미 (키보드가 자동으로 내려가는 효과) 2020. 8. 11.
[21일차] Codable 이란? 실무에서 자주 사용하는 JSON 데이터를 실제로 활용하기 위해서는 파싱이라는 과정이 꼭 필요하다. 하지만, Swift에서는 Codable이라는 것이 이를 자동으로 처리해준다. (매우 간편하고 활용도가 높은 최고!) Codable의 사전적인 의미는 아래와 같다. "A type that can convert itself into and out of an external representation." 자신을 변환하거나 외부표현(external representation)으로 변환할 수 있는 타입입니다. Codable은 Decodable과 Encodable 프로토콜을 준수하는 타입(프로토콜) 이다. - Decodable : 자신을 외부표현(external representation)에서 디코딩 할 수 있는 타입.. 2020. 8. 10.
[20일차] TodoList 앱 만들기 - 1 최초로 만드는 iOS 앱으로 TodoList(할일) 앱을 만들어보고자 한다. 우선 만들기 전에, 강의에서 필요로 하는 개념에 대한 정리를 해보고자 한다. * 데이터 저장 : NSCoding, Property List, Serialization, Core Data, Realm - 데이터가 많을 때 : Core Data, Realm 권장 - Codable(Swift 4) : JSON 데이터를 효율적으로 다룰 때 사용 * Tab Controller 추가 방법 : StroyBorard에서 View 선택 및 Editor -> Embed in -> Tab Controller 선택 * 할일을 추가/수정/삭제하는 클래스(TodoManager)에 대한 함수를 정의해보자. // 여러개의 TodoList 목록을 관리 (To.. 2020. 8. 8.
[19일차] Designated Init vs. Convenience Init * designated initialize : 직접적인 initialize * convenience initialize : 간접적인 initialize * Convenience initialize 사용하는 이유? : initialize 파라미터가 너무 많을 때, 간략히 하고자 사용 ☆ designated vs convenience - DI는 자신의 부모의 DI를 호출해야 함 - CI는 같은 클래스의 이니셜라이저를 꼭 하나 호출해야 함 - CI는 궁극적으로 DI를 호출해야함 위의 예제와 같이 CI를 이용하면 클래스 객체 생성을 간단하게 이용할 수 있다. CI 이용 시, 궁극적으로 DI를 반드시 호출해주어야 한다. 2020. 8. 7.