Swift

Swift

[Swift] Codable - Decoding 방법

이전 포스트는 Codable의 Encodable에 대해 알아 보았습니다. 이번 포스트는 Codable의 Decodable에 대해 알아보도록 하겠습니다. Decodable JSON 데이터를 디코딩 하는 방법에 대해 알아보도록 하겠습니다. Decodable을 이용하면 JSON을 쉽게 처리할 수 있습니다. # 디코딩 방법 decode 메서드는 두개의 파라미터가 필요합니다. 첫번째 파라미터는 디코딩할 타입을 정의한다. 반드시 Decodable이나 Codable 프로토콜을 채택해야됩니다. struct Person: Codable { var name: String var age: Int var birthDate: String var address: String? } 두번째 파라미터에는 json이 저장되어있는 dat..

Swift

[Swift] Codable - Encoding 방법

이번 포스트는 Codable의 Encodable에 대해 알아 보도록 하겠습니다. 먼저 애플의 문서를 확인해보면 💡 A type that can convert itself into and out of an external representation. 외부 표현으로 변환하거나 외부 표현으로 변환할 수 있는 유형이라고 하는데 쉽게 이야기하자면, 자신을 외부 표현으로 인코딩할 수 있고, 자신을 외부 표현으로 부터 디코딩할 수 있다는 이야기입니다. 주로 JSON을 이용할 때 사용되기 때문에 외부 표현을 JSON데이터로 생각하면 더 쉽게 이해가 될것 같습니다. public typealias Codable = Decodable & Encodable Codable은 Encodable과 Decodable로 이루어져 있습..

Swift

[Swift] 2. 예제로 알아보는 함수의 합성(Composition)

합성(Composition)에 관해 알아보도록 하겠습니다. 이전 글 순수함수(Pure Function), Functional Programming in Swift [Swift] 1. 순수함수, Pure Function (Functional Programming in Swift) 순수 함수(Pure Function)에 관해 알아보도록 하겠습니다. 함수형 프로그래밍 Funtional Programming은 함수를 중심으로 Side-Effect가 없도록 프로그래밍을 하는 것을 말합니다. 여기서 말하는 함수는 순수함수를.. jinnify.tistory.com 함수의 합성이란 함수의 반환값이 다른 함수의 파라미터로 사용되는 것을 말합니다. 생각해보면 Composition이 되기 위해서는 함수의 반환값이 받아들이는..

Swift

[Swift] Swift Style Guide 정리

raywenderlich/swift-style-guide를 바탕으로 개인적으로 정리가 필요한 부분을 추가하며 작성하였습니다 :] raywenderlich/swift-style-guide The official Swift style guide for raywenderlich.com. - raywenderlich/swift-style-guide github.com 개인적인 정리를 목적으로 작성한 것이어서 번역에 오류가 많지만, 최대한 이해되는 방향으로 작성하였습니다! Updated for Swift 4.2 Naming 기술적이고 일관된 명칭은 소프트웨어를 더 쉽게 읽고 이해할 수 있게 한다. API Design Guide에 설명된 Swift 명명 규칙을 사용하십시오. 몇 가지 핵심 요인은 다음과 같은 것들이..

Swift

[Swift] 1. 순수함수, Pure Function (Functional Programming in Swift)

순수 함수(Pure Function)에 관해 알아보도록 하겠습니다. 함수형 프로그래밍 Funtional Programming은 함수를 중심으로 Side-Effect가 없도록 프로그래밍을 하는 것을 말합니다. 여기서 말하는 함수는 순수함수를 말합니다. 순수함수 (Pure Function) input : 어떠한 함수에서 외부의 데이터를 직접적으로 사용하지 않고, 파라미터로 받습니다. output : input값에 의해 output이 결정되기 때문에 외부의 값들이 변경되더라도 함수 자체에는 외부에 영향을 받지 않기 때문에 Side-Effect가 없다는 것입니다. var name = “jinShine” func getName() -> String { return name } 위에 getName함수는 외부에 있는..

Swift

[Swift] 문자열 다루기

스위프트에서 문자열을 다루는 방법에 대해서 알아 보겠습니다. 문자열 다루기 문자열 길이 /* 문자열 길이 -> count */ var strTest: String = "안녕하십니까?" print(strTest.count) // 7 문자열 안의 문자 /* 문자열 안의 문자 문자열 안에 들어있는 문자를 확인 할때는 [] 대괄호 안에 숫자대신 스위프트에선 Index객체를 넣어 줍니다. 첫번째 문자의 위치 : 문자열.startIndex 마지막 문자 뒤의 위치 : 문자열.endIndex */ var subFirst = strTest[strTest.startIndex] // 안 var subLast = strTest[strTest.index(before: strTest.endIndex)] // ? prefix와 s..

Swift

[Swift] 고차함수(2) - map, flatMap, compactMap

고차함수(Higher-order-function)중 map, flatMap, compactMap에 대해 알아 보겠습니다. map map은 배열 내부의 값을 하나씩 mapping한다고 생각하면 쉽게 다가올껍니다. 각 요소에 대한 값을 변경하고자 할때 사용하고, 그 결과들을 배열의 상태로 반환합니다. Declaration func map(_ transform: (String) throws -> T) rethrows -> [T] Example let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"] names.map { $0 + "'s name" } // ["Chris's name", "Alex's name", "Ewa's name", "Barry's name",..

Swift

[Swift] 고차함수(1) - forEach, filter, reduce

고차함수(Higher-order-function)중 forEach, filter, reduce에 대해 알아 보겠습니다. forEach for-in과 동일하게 각각의 Element들을 호출 합니다. Declaration func forEach(_ body: (Int) throws -> Void) rethrows Example let array = [1,2,3,4,5] for num in array { print(num) } //1 //2 //3 //4 //5 array.forEach { print($0) } //1 //2 //3 //4 //5 차이점 forEach에서는 break, continue 구문을 사용할 수 없고, return을 통해서 빠져나갈 수 있습니다. (continue처럼 동작함) for-i..

Swift

[Swift] 프로토콜 지향 프로그램 - 2 (델리게이션 및 프로토콜 설계)

델리게이션 및 프로토콜 컴포지션에 대해 알아 보겠습니다. 델리게이션 델리게이션은 어느 한 타입의 인스턴스가 다른 인스턴스를 대신해서 동작하는 상황에 잘 맞는다. 동작을 위임하는 인스턴스는 델리게이트 인스턴스의 참조를 저장하고 있다가 어떠한 동작이 발생하면 델리게이팅 인스턴스는 계획된 함수를 수행하기 위해 델리게이트를 호출 합니다. 예제 프로토콜 구현 protocol DisplaynameDelegate { func displayName(name: String) } 델리게이트를 사용하는 Person구조체 struct Person { var displaynameDelegate: DisplayNameDelegate var firstName = "" { didSet { displaynameDelegate.disp..

Swift

[Swift] 프로토콜 지향 프로그램 - 1 (프로토콜이란)

Protocol-Oriented-Programming을 알아볼텐데 먼저 Protocol의 개념에 대해 알아보도록 하겠습니다. 프로토콜이란 프로토콜 정의 스위프트2를 소개하면서 세계 최초의 프로토콜지향 프로그래밍 언어라고 애플은 발표했다. 이런 이유로 프로토콜이 프로토콜지향 프로그램잉의 전부일 것이라고 생각할 수도 있으나, 이는 잘못된 생각이다. 프로토콜지향 프로그래밍은 단지 프로토콜뿐만이 아니라 더 많은 것을 포함하고 있습니다. 타 언어의 인터페이스와 유사하지만, 프로토콜은 대부분의 객체지향 언어에 있는 인터페이스보다 실제로는 훨씬 더 강력합니다. 그럼 프로토콜의 기초부터 시작해볼까요. 프로토콜 정의 프로토콜 정의를 위해서는 protocol키워드를 사용한다. protocol MyProtocol { //프..

jinnify
'Swift' 카테고리의 글 목록