본문 바로가기

iOS

(115)
[iOS] [Swift] The Swift Language Guide - 1. 기본 연산자 (Basic Operators) 기본 연산자 (Basic Operators) Swift 에서는 프로그래밍 언어에서 통상적으로 이용하는 +, -, /, % 와 같은 산술연산자와 더불어 &&, || 과 같은 논리 연산자, 그리고 a..
[iOS] [Swift] Enumerations Enumerations 열거형은 서로 연관있는 값들을 그룹지어 정의할 수 있도록 해줍니다. 이를 통해 우리의 코드 내에서 Type-Safe 한 방법으로 해당 값들을 사용할 수 있도록 해줍니다. Swift의 Enum은 String, Character 등 다양한 값들을 넣을수 있도록 더욱 유연한 기능을 제공합니다. Enumeration Syntax 열거형은 enum 키워드를 통해 정의합니다. enum SomeEnumeration { // enumration definition goes here } 이번엔 동서남북 방향에 대한 열거형은 정의해보겠습니다. enum CompassPoint { case east case west case south case north } 열거형 내 정의된 값(east, west, ..
[iOS] RIBs - Tutorial 2 RIBs - Tutorial2 안녕하세요 오늘은 이전에 진행했던 RIBs - Tutorial1에 이어 2편을 진행해보고자 합니다! 그럼 바로 시작하도록 할께요! 이전 튜토리얼에서 우리는 로그인 폼을 갖는 LoggedOut RIB을 가지는 앱을 빌드해봤었는데요, 이번 튜토리얼에서는 거기서 더 나아가 로그인 이후 게임 필드를 보여주는 것 까지 진행해보도록 할께요. 이번 튜토리얼의 주요 목표는 아래와 같습니다. child RIB과 parent RIB의 커뮤니케이션. parent Interactor의 결정에 따른 child RIB Attach/Detach View를 가지지 않는 View-less 구조의 RIB 생성 Project Structure 이전 튜토리얼에서 우리는 Root RIB과 LoggedOut RI..
[iOS] RIBs - Tutorial 1 RIBs - Tutorial1 이전에 RIBs란 무엇인지 RIB은 어떻게 구성되는지 간단히 살펴보았습니다. 이제는 Uber에서 제공하는 Tutorial을 해보며 보다 자세히 살펴보도록 할게요. 이번 튜토리얼의 목표는 다양한 RIB에 대한 이해를 목표로 합니다. 또한 그들이 어떻게 상호작용 하며 통신을 하는지 살펴볼꺼에요! 프로젝트를 열고 아무것도 하지 않았으나 AppDelegate의 didFinishLaunchingWithOptions에서 에러가 발생합니다..ㅜㅜ 코드를 살펴보자니 앱의 main window 객체를 생성하고 RootBuilder 객체를 생성하여 launchRouter라는 변수에 초기화합니다. 그리고 launchRouter.laucnh(from:) 실행 부분에서 LaunchRouting 에..
[iOS] RIBs? RIBs 오늘은 RIBs에 대하여 공부를 해보려고 합니다. 그동안 Swift 관련 커뮤니티 등에서 익히 들었는데 공부는 처음 하게 되었습니다. RIBs 란 무엇인지 간단히 알아보고 RIBs framework를 만든 Uber에서 제공하는 Tutorial을 진행해보며 감을 익혀보려고 합니다. 그러면 본격적으로 RIBs 가 무엇인지 알아보도록 하죠! RIBs는 Cross-Platform Mobile Architecture framework라고 합니다. (공식 레포지토리를 살펴보면 android와 iOS 디렉토리가 별개로 제공되고 있습니다.) RIBs는 RIB이란 단위의 복수형을 의미하며 RIB은 Router, Interactor, Builder의 약자라고 하며 이 세 가지 컴포넌트가 해당 Architectur..
[iOS] [Swift] JSON Parsing with Codable JSON Parsing with Codable 최근 JSON Parsing에 대한 이해가 완벽하지 않다는 것을 깨닫고 이번 기회에 다시 복습하며 정리한 내용을 기록하고자 오랜만에 쓰는 포스트입니다. JSON to Codable 앱을 구현하다 보면 네트워킹 작업이 필수불가결하며 서버에서 가져오는 데이터는 대부분 JSON 포맷을 따릅니다. 따라서, 해당 데이터를 가공하여 우리 iOS 앱에 보여주기 위해서는 Swift를 통해 JSON을 다뤄야 합니다. 친절한 Apple은 이를 위해 Codable 이라는 프로토콜을 제공하며 이를 통해 더욱 간편하게 JSON을 다룰 수 있도록 합니다. Codable 프로토콜은 Encodable & Decodable 조합의 typealias입니다. 그러면 이를 이용하여 JSON 파..
[iOS] [Swift] POP - 프로토콜의 다형성 프로토콜과 다형성 다형성은 하나의 일관된 인터페이스를 통하여 여러 타입과 상호작용을 할 수 있게 해줍니다. var myPerson: Person myPerson = SwiftProgrammer(firstName: "Jungsu", lastName: "YEO", birthDate: birthDateProgrammer) myPerson = FootballPlayer(firstName: "Dan", lastName: "Marino", birthDate: birthDatePlayer) 위 예시에서는 PersonProtocol 타입의 변수를 하나 갖습니다. 다형성은 다양한 타입들을 personProtocol 프로토콜을 따르는 타입의 인스턴스면 변수에 대입할 수 있도록 해줍니다. 연관 타입과 프로토콜 프로토콜을 정..
[iOS] [Swift] POP - 프로토콜 시작 프로토콜 시작 본 문서는 프로토콜지향 프로그래밍 서적을 참고하여 작성된 내용입니다. 객체지향 프로그래밍을 기반으로 개발을 하고 있다면 인터페이스 라는 개념에 익숙할 것 입니다. 객체지향 방식으로 설계를 진행하는 경우에는 보통은 클래스 구조와 객체가 어떻게 상호작용을 하는지에 중점을 두고 설계를 시작합니다. 객체란 프로퍼티 형태로 속성에 관한 정보를 가지며, 객체에 기대하는 속성과 행위(메소드)가 무엇인지 애플리케이션에게 전달해주는 청사진이 없다면 객체를 생성할 수 없습니다. 대부분의 객체지향 언어들은 이러한 청사진을 클래스 형태로 부릅니다. 즉, 클래스는 객체의 프로퍼티와 행위를 단일 타입으로 캡슐화하는 구성체입니다. 이러한 객체지향 방식의 패러다임과 프로토콜지향 방식 패러다임은 큰 차이가 있습니다. 프..