전체 글

 iOS developer.
· iOS/Swift
joined 함수를 정리해봅니다. 시퀸스가 들어있는 배열일 때, 하나의 시퀸스로 이어주는 함수입니다. String도 Charactor의 시퀸스라고 볼 수 있고, 정수 배열 해당이 됩니다. String일 때와 그 이외의 배열일 때가 약간 다릅니다. String 배열의 joined String의 배열의 joined 함수의 정의는 아래와 같습니다. 매개변수로 seperator가 있고 생략했을 때는 ""가 기본으로 적용됩니다. String의 배열에 joined를 적용하면 아래처럼 이어집니다. let someAlmonds = ["HoneyButter", "Wasabi", "Corn", "Buldak", "MintChoco"] let joinedAlmonds = someAlmonds.joined() print(jo..
· iOS/Swift
CustomStringConvertible 프로토콜은 객체를 String으로 변환해서 표현하고 싶을 때 사용하는 프로토콜로, 주로 print()함수를 통해 출력할 때 유용합니다. 정의를 보면 description 계산 프로퍼티를 구현하도록 되어 있는 것을 확인할 수 있습니다. 예제에서는 Point 구조체를 CustomStringConvertible 프로토콜을 구현하여, print()함수 호출시 출력할 String을 정의해주었습니다. 사실 구조체는 CustomStringConvertible을 구현하지 않아도 어느 정도 String으로 변환해서 보여줍니다. 아래는 Almond 구조체입니다. print했을 때, 객체의 타입과 프로퍼티 값들을 보여줍니다. struct Almond { var name: Strin..
· iOS/Swift
이번 포스팅에서는 zip 함수를 정리해봅니다. Summary에서는 Sequence프로토콜을 따르는 두 개의 기본 시퀀스로 구성된 쌍의 시퀀스를 만들도록 되어 있습니다. 여기서 시퀸스 프로토콜은 '요소에 대한 순차적이고 반복적인 액세스를 제공하는 유형'으로 친숙한 배열에 이에 해당합니다. 아래는 예시입니다. let someAlmonds = ["Honey Butter", "Wasabi", "Corn", "Buldak", "Mint Choco"] let someNumbers = [0, 1, 2, 3, 4] let newSequence = zip(someAlmonds, someNumbers) for item in newSequence { print(item) } // 출력 //("Honey Butter", 0)..
· iOS/Swift
1급 객체(First class citizen)와 고차함수(고계함수) 프로그래밍 언어에서 1급 객체란 아래의 조건을 충족시키면 됩니다. 1. 변수나 데이터에 할당 할 수 있어야 한다. 2. 객체의 매개변수로 넘길 수 있어야 한다. 3. 객체의 반환값으로 리턴 할수 있 swifty-cody.tistory.com 이전에 썼던 고차함수 글에 이어서, Swift 표준 라이브러리에서 지원하는 고차함수인 filter, reduce, map을 정리해보겠습니다. 이 고차함수들은 컨테이너 타입(Array, Dictionary, Set, ...)에 구현되어 있는 제네릭 함수입니다. 우리가 주로 for문을 돌면서 어떤 결과를 추려낼 때 하던 작업을 이 함수들로 대체할 수 있습니다. // 예시로 사용할 컨테이너 let som..
· iOS/Swift
Equatable Equatable은 두개의 값이 동일한 값인지 아닌지 비교를 하기 위해서 따라야하는 프로토콜입니다. 이 프로토콜을 따르는 타입의 인스턴스는 == 나 != 연산자로 같은지, 같지 않은지 판단할 수 있게 됩니다. Swift 표준 라이브러리의 대부분의 기본 타입들(Int, Double, Float, String, Bool, ...)은 이 프로토콜을 따르고 있습니다. 기본 타입들이 아닌 클래스, 구조체도 해당 프로토콜을 따르면 비교연산자를 통해서 같은지, 아닌지 판단할 수 있게 됩니다. Equatable 프로토콜을 살펴보면 static func ==(lhs: Self, rhs: Self)->Bool 함수를 구현함으로써 해당 프로토콜을 쓸 수 있게 되어 있습니다. lhs는 ==의 왼쪽에, rhs..
· iOS/Swift
stride는 시작값(from)에서부터 끝값을 포함(through)하거나, 미포함(to)할 때까지 지정한 양(by)만큼 늘어나는 시퀸스를 반환하는 제네릭 함수입니다. // stride(from:to:by)는 to를 포함하지 않음 for i in stride(from: 0, to: 5, by: 1) { print(i) // 0, 1, 2, 3, 4 } // stride(from:through:by)는 through를 포함 for i in stride(from: 0, through: 5, by: 1) { print(i) // 0, 1, 2, 3, 4, 5 }
· iOS/Swift
서브스크립트는 콜렉션 타입(Array, Dictionary, Set), 시퀸스 등 집합의 인스턴스에서 특정 항목에 쉽게 접근할 수 있게 해주는 문법입니다. 우리가 평소에 자연스럽게 사용하던 배열 인스턴스의 특정 항목에 접근하기 위해 사용하는 someArray[index], Dictionary에서의 someDictionary[key] 과 같은 문법이 서브스크립트입니다. 서브스크립트를 통해 추가적인 메서드 필요없이 특정 값을 할당하거나 가져올 수 있습니다. 그리고 하나의 타입에 여러 서브스크립트를 정의하고, overload도 가능. 매개변수도 하나가 아니라 여러개를 받도록 정의할 수 있습니다. 서브스크립트의 작성 서브스크립트를 선언하는 방법은 계산프로퍼티를 선언하는 것과 유사합니다. subscript(ind..
· iOS/Swift
Swift의 열거형(enumeration, enum)에 대해서 작성해봅니다. 열거형은 유사성을 가진 값들을 공통된 타입으로 선언해서, 형 안정성(type-safety)을 보장하는 코드를 작성할 수 있게 해줍니다. rawValue와 관련값을 가질 수 있고, 일급객체이기 때문에 계산프로퍼티, 함수를 작성할 수 있고 초기화를 지정하거나 확장도 가능합니다. 열거형의 기본 문법 열거형의 기본 문법은 아래와 같습니다. 열거형은 타입 정의와 같기 때문에 네이밍을 파스칼표기법으로 해주고, case문에는 카멜표기법으로 해줍니다. enum SomeEnum { case someCase case anotherCase case otherCase } 사용 예. enum Almond { case honeyButter case wa..
얼마전 애플에서 3년간 업데이트 되지 않은 어플을 앱스토어에서 퇴출시키겠다는 통보를 했다는 뉴스가 있었는데요. 해당 통보 이후 많은 개발자들이 항의를 한 모양입니다. 그래서 정책을 수정해서 3년간 업데이트를 하지 않은 어플 중, 12개월 간 최소 다운로드 임계점을 넘지 않은 앱들에 한해서 앱스토어에서 퇴출시킨다는 이메일 안내를 하고 통보 후 30일 내에 업데이트를 하라고 한 것을 90일로 변경한다고 합니다. Clarifying criteria & new timing extension for App Store Improvements process - Latest News - Apple Developer User trust in quality apps is the basis for all we have do..
· iOS/Swift
Swift 5.0부터 도입된 Result타입에 대해 정리해봅니다. Result타입은 실패가 가능한 작업을 할 때 기존에 성공시 원하는 데이터를, error발생시 Error를 throw하는 문법 대신에 Result타입을 던지도록 되어 있는 문법입니다. 이걸 도입한 이유는 기존에 error를 처리하던 throw방식에 몇가지 문제가 있었기 때문입니다. 기존 throw, do, try, catch 문법 Result타입을 보기 전에 먼저 기존의 throw문법을 보겠습니다. 아몬드를 주문하는 예제입니다. enum AlmondOrderError: Error, CaseIterable { case invalidSelection // 잘못된 선택 case lackOfMoney // 예산 부족 case outOfStock ..
애플, 오래된 앱 퇴출한다…개발자들 '반발' (사진=픽사베이) 애플이 일정 기간 업데이트를 실시하지 않은 애플리케이션(이하 앱)을 대상으로 단속에 나섰다.23일(현지시간) IT 전문매체
· iOS/Swift
제네릭 Generic은 단어의 뜻이 '포괄적인, 통칭의'라는 의미입니다. 단어의 의미처럼 제네릭은 타입에 종속적이지 않도록 Swift 코드를 좀 더 유연하고, 재사용 가능한 함수 및 코드를 작성할 수 있도록 도와주는 요소입니다. Swift 표준 라이브러리에서 기본 제공하는 swap 함수를 예시로 들 수 있습니다. Swift의 기본 swap함수가 없다고 가정하고, 두 Int값을 inout 매개변수로 받아서 해당 원본값을 서로 바꿔주는 함수를 작성한다고 한다면, // a, b 두 개의 Int값을 바꾸려는 함수 func swapTwoInts(_ a: inout Int, _ b: inout Int) { let temporaryA = a a = b b = temporaryA } var intOne = 3 var ..
SwiftyCody
 iOS.dev