본문 바로가기

Swift

(5)
Literal Initializer 만들기 최근 공부하다가 Literal이라는 것을 접하게 되었고 이 Literal이 Swift에서 어떻게 쓰이는 지 알고 적용해보고 싶었다! Literal Initializer 만들기 Literal이란 소스코드의 어떤 값을 대표하는 것입니다. 예를 들어 0은 Integer, 0.0은 Floating-Point, "AAA"는 String과 같이 어떤 값이 주어지면 그 값을 대표하는 것이 Literal입니다. 이 Literal은 Swift에서 Protocol로 제공되고 있습니다. Literal Protocol Integer ExpressibleByIntegerLiteral Floating-Point ExpressibleByFloatLiteral String ExpressibleByStringLiteral Extend..
flatMap() 정리하기. map(), compactMap() 과의 차이 Swift의 고차함수 중 flatMap()이라는 함수가 있다. 이 함수를 공부하면서 비슷한 이름인 map(), compactMap()과 어떤 차이가 있는지도 정리해야겠다. flatMap() 정리하기. map(), compactMap() 과의 차이 flatMap이라는 네이밍은 flatten(평평하게 하다) + map(대응하다)가 합쳐진 의미입니다. 그래서 map의 기능을 하지만 flatten의 속성이 더해진거라고 이해할 수 있겠네요. flatMap()은 3가지 기능이 있습니다. non-nil인 결과들을 가지는 배열을 리턴 주어진 Sequence내의 요소들을 하나의 배열로써 리턴 주어진 Optional이 not-nil인지 판단 후 unwrapping하여 closure 파라미터로 전달 위의 공식문서는 아래에 ..
Swinject로 DI(Dependency Injection)패턴 적용하기 DI에 대해선 많이 들어봤지만 적용은 안하다가 이번 프로젝트를 진행하면서 적용해야겠다는 생각이 들어서 Swift DI 라이브러리인 Swinject로 DI 패턴을 적용하게 됐다! Swinject로 DI(Dependency Injection)패턴 적용하기 DI(Dependency Injection, 의존성 주입)이란 뜻 그대로 의존 객체를 외부에서 생성하여 넘겨주는 것을 의미합니다. 아래와 같은 상황이 있다고 생각해봅시다. // Case 1 class A { var object = B() init() { } } class B { } // Case 2 class A { var object: B init(object: B) { self.object = object } } class B { } Case 1 같은 ..
Objc와 Swift코드를 같이 사용하기. 최근 Objc로 프로그래밍된 프로젝트를 Swift로 바꿀 기회가 생겼다.Objc문법을 알지는 못하지만 어느정도 눈에 익어 Swift로 바꾸는데문제는 이 둘의 코드를 같이 Run하는것 이었다.# Objc와 Swift코드를 같이 사용하기 1. Swift에서 Objc코드 사용하기 Swift에서 Objc코드를 사용하려면 Bridging-Header가 필요하다.이는 Objc파일을 만들때 자동으로 만들어 주기도 하는데실수해서 안 만들었을 경우, 'ProjectName-Bridging-Header.h'로 만들어 주면 된다. 이제 이 파일에 Objc클래스의 Header파일 (ex. ViewController.h)를 import해주면Swift에서 사용이 가능하다 :) Build Setting에서도 이렇게 확인이 가능하다..
UINavigationController를 코드로 구현해보자. Navigation은 앱에 Depth가 존재하는 한 필수적인 요소입니다!Storyboard로 쉽게 구현할 수 있지만 저는 코드로 만드는 것을 좋아해서 코드로 만들어 보겠습니다 :)# UINavigationController를 코드로 구현해보자 위와 같이 간단한 Navigation을 만들어 보겠습니다! 원리만 알면 다른 요소들은 추가하면 되니까 간단하게 구현해보도록 하겠습니다. 먼저 위와 같이 2개의 ViewController를 만들어 주세요. 하나는 부모뷰 (자식으로 이동할 수 있는 버튼 등을 구현해주세요.)하나는 자식뷰 (예제에서는 부모뷰와 구분하기 위해서 하나의 UILabel를 추가했습니다.) iOS의 Navigation Control은 Stack구조로 생각하시면 됩니다. Push로 새로운 자식뷰를 ..