IOS

    [Swift] JSONDecoder 사용하여 JSON 데이터 파싱하기

    JSONDecoder란? JSONDecoder는 JSON 데이터를 Swift는 객체로 파싱하도록 도와주는 Decoder이다. JSONDecoder 사용하기 JSONDecoder을 이용해 JSON을 Swift 객체로 파싱하기 위해서는 다음의 과정이 필요하다 Decodable을 상속 받는 struct 생성하기 Decodable에 저장된 데이터를 파싱하기 Decodable struct 만들기 Decodable 객체를 만들기 위해서는 JSON이 무엇인지 이해해야 한다. JSON이 무엇인지 모른다면 먼저 아래의 글을 통해 JSON이 무엇인지 알고보자. [JSON] JSON은 무엇인가? JSON이란 JSON(JavaScript Object Notation) 은 데이터를 키(key)-값(value) 쌍으로 만들어 저..

    [Swift] 함수형 프로그래밍 알아보기 : 클로저(Closures), 일급객체

    [Swift] 함수형 프로그래밍 알아보기 : 클로저(Closures), 일급객체

    스위프트와 함수형 프로그래밍 스위프트는 함수형 프로그래밍을 지원하는 프로그래밍 언어이다. 함수형 프로그래밍에서는 함수가 일급객체가 된다. 일급객체란 변수를 뜻한다. 즉, 함수를 기존 변수들처럼 주고 받을 수 있는 것이 바로 함수형 프로그래밍이다. 함수를 변수로 바꿀 수 있으면 코드가 매우 간결해지고 직관적이 된다. 자 그러면 함수형 프로그래밍에서 함수를 어떻게 변수로 주고 받는지를 살펴보자. 우리가 2개의 숫자를 더하거나 곱하는 앱을 만든다고 해보자. 우리가 변수로 함수를 쓰지 못한다고 할 때 다음과 같이 코드를 만들 수 있다. func calculator(number1: Int, number2: Int, operation: String) -> Int { switch (operation) { case "..

    [Swift] protocol이란 무엇인가?

    [Swift] protocol이란 무엇인가?

    protocol이란? protocol은 타입으로 Swift의 class나 struct의 행동(func)을 정의하는 역할을 한다. *Java, Kotlin, Dart, C#의 interface와 같은 역할을 한다. 보통 프로그래밍에서의 protocol(프로토콜)이라 함은 프로그램(컴퓨터) 간에 데이터를 교환 방식을 정의하는 규칙을 말한다. 즉, 프로토콜은 코드 구현이 없는 규칙일 뿐이다. 따라서 프로토콜을 사용하는 프로그램에서 프로토콜을 보고 구현을 한다. Swift에서도 마찬가지로 protocol은 행동을 정의하기만 할뿐 구현을 하지 않는다. protocol의 특징 protocol은 행동을 정의한다. protocol은 타입이다. protocol은 행동을 정의한다 예를 들어 Shop protocol이 있다..

    [iOS Assets] Custom Color에 Dark Mode를 지원하는 방법

    [iOS Assets] Custom Color에 Dark Mode를 지원하는 방법

    iOS Custom Color 1. Assets 에서 + 버튼을 누른 후 Color Set을 누른다. 2. Appearance- Any, Light, Dark로 변경한다. 3. 아래 창이 나오면 Dark를 클릭한다. 4. Dark Color의 RGB 값을 조절해서 Dark모드일 때 보여질 색상을 설정한다. 5. Label의 Color 탭에서 위 커스텀 Color을 가져올 수 있다. 다른 Color 리소스와 가져오는 방법이 같다.

    [Swift] Struct와 Class의 차이는 무엇인가?

    [Swift] Struct와 Class의 차이는 무엇인가?

    Struct와 Class의 차이 Struct와 Class는 데이터 저장 방식, 가변성(Mutability), 상속 측면에서 다르다. 첫 째, Struct는 그 자체로 값으로 저장이 되지만 Class는 변수에 객체에 대한 주소값을 저장한다. 둘 째, Struct는 기본적으로 Immutable하지만 Class는 Mutable하다. 때문에 Struct의 내부 변수값을 바꾸기 위해서는 mutating이라는 강제로 mutability를 부여하는 접두어를 붙여야 한다. 셋 째, Struct는 상속이 불가능하지만, Class는 상속이 가능하다. 이는 불변성의 연장선으로 볼 수 있다. 데이터 저장 방식 struct의 데이터는 그 자체가 값으로 저장이 된다. 따라서 기존 struct가 새로운 struct에 할당되면 기존..

    [Swift] struct 내부에서 변수값 변경하기

    [Swift] struct 내부에서 변수값 변경하기

    struct의 immutability struct는 한 번 생성자를 초기화하면 struct 내부에서는 var 로 선언되더라도 프로퍼티의 값을 바꿀 수 없게된다. 예를 들어 아래와 같이 struct Person에 addAge를 하는 코드를 넣어본 후 실행해보자. struct Person { let name: String var age: Int let temperature: Float init(_name: String, _age: Int, _temperature : Float) { name = _name age = _age temperature = _temperature } func addAge() { age += 1 } } 아래와 같이 age가 immutable 하다는 warning이 뜬다. 이유는 초기화..

    [Swift] struct 한 번에 정리하기

    [Swift] struct 한 번에 정리하기

    struct란? struct는 클래스의 특별한 형태로, 데이터를 저장하기 위해 만들어지는 특별한 클래스이다. struct를 사용해 여러 변수들을 결합해 하나의 타입을 만들 수 있다. *자바의 POJO나 코틀린의 data class와 같다. struct만들기 struct는 다음 세가지 원칙을 이용해 만들어진다. struct에서 결합되는 변수들은 property라 부른다. struct 내부에 func을 넣을 수 있다. 생성자를 사용해 struct를 초기화 할 수 있으며 커스텀 생성자는 init()함수를 이용해 만들 수 있다. 위 세가지를 적용하면 Struct는 다음과 같이 만들어진다된다. 각 변수(property)에 이름을 부여할 수 있어 가독성이 좋아진다. struct StructName { let pro..

    [Swift 제어문] switch case 사용해 다중 조건 처리하기

    [Swift 제어문] switch case 사용해 다중 조건 처리하기

    switch case문 이란? switch case 문은 많은 분기를 처리하기 위해 만들어진 문법이다. switch 문의 필요성 if else 문으로 다양한 조건을 처리하려면 else if 를 무한 반복해야 하는데 이는 가독성을 매우 떨어트린다. if value == "A" { print("value is A") } else if value == "B" { print("value is B") } else if value == "C" { print("value is C") } ... 프로그래밍은 가독성이 매우 중요하므로, 분기가 4개 이상인 상황에서는 다음과 같이 switch case 문을 사용해 분기를 처리하는 것이 좋다. let value = "Hello Swift" switch(value){ case..

    [Swift 제어문] if 문 다루는 방법 한 번에 정리하기

    [Swift 제어문] if 문 다루는 방법 한 번에 정리하기

    if문이란? if문이란 제어구조의 일종으로 조건을 만족하면 if문제 종속된 블록을 수행하고 조건을 만족하지 못하면 수행을 하지 않도록 하는 프로그래밍 문법을 뜻한다. Swift의 if문 Swift의 if문은 다음의 구조를 따른다. if부터 '{' 전까지 괄호 없이 Condition을 써야 하며, '{ }' 로 감싸진 블록에 수행할 함수를 넣는다. if Condition { Block } 예를 들어 다음과 같이 사용할 수 있다. let value = "DBlog" if value == "DBlog" { print("value is DBlog") } 위 코드를 수행하면 결과는 다음과 같다. else if 문 사용해 여러 조건 만들기 여러 조건을 사용하려면 를 치려면 else if 문을 사용하면 된다. 앞에 ..

    [Swift] Optional을 다루는 다양한 방법 : nil 다루기

    [Swift] Optional을 다루는 다양한 방법 : nil 다루기

    Optional을 다루는 것이 필요한 이유 nil 이 가능한 타입을 다루기 위해서 Swift는 Optional을 사용한다. 하지만 Optional로 값이 오게 되면 Optional로 감싸여 있어 그 안에 있는 값을 사용하기 위해서는 Optional을 제거해야 한다. 이번 글에서는 다음의 dictionary를 사용해 Optional 타입의 변수가 들어왔을 때 어떻게 처리해야하는지에 대해 알아볼 것이다. let dictionary : [String : Int] = ["A" : 0, "B" : 1, "C" : 2] ! 을 이용한 옵셔널 강제 제거 첫 째로 !을 이용해 Optional을 강제 제거하는 방법이 있다. 예를 들어 아래와 같이 dictionary에서 값이 Optional로 오는 상황을 가정해보자. d..