SWIFT 19

Swift ) Two-Phase Initialization?

이번 포스팅에서는 Swift의 Two-Phase Initialization에 대해서 알아보겠습니다. class SomeSubClass: SomeSuperClass { let someProperty: String init(someProperty: String) { super.init() } } 제가 Two-Phase Initialization을 가장 많이 접할 수 있는 코드는 바로 위와 같이 코드를 작성할 때였습니다. 위의 코드를 작성하면 바로 문구가 하나 뜨는데 Property 'self.someProperty' not initialized at super.init call 이런 문구입니다. 과연 왜 self.someProperty가 super.init 호출 시점에 초기화되어있지 않다고 코드를 빌드조차 ..

Swift 2022.05.27

CoreData ) Core Data stack에 대해서

Core Data stack은 Core Data의 이점을 모두 가져가며 Core Data를 사용하기 위해 필수적으로 알아야 할 부분이라고 생각됩니다. 이번 포스팅에서는 Core Data stack을 이루고 있는 클래스들을 공식문서를 바탕으로 정리해보도록 하겠습니다! 우선 Core Data stack의 이해를 위해 정리해볼 클래스들을 나열해보자면, NSManagedObjectModel NSPersistentStoreCoordinator NSPersistentStore NSManagedObjectContext NSPersistentContainer 이정도가 있겠습니다. 하나하나 알아보도록 하겠습니다. NSManagedObjectModel NSManagedObjectModel, Core Data 앱 개발을 시..

CoreData 2022.05.06

NSFetchRequest with NSPredicate

NSPredicate? Fetch 작업이나, in-memory filtering 작업을 할 때, 검색에 대한 제약 사항을 논리적인 조건들(Logical conditions)로 정의할 수 있는 class입니다. 그 중 대표적인 용도가 CoreData의 NSFetchRequest를 할 때, NSPredicate의 조건에 충족하는 객체들만을 필터링하여 받아올 수 있습니다. NSFetchRequest의 predicate 프로퍼티 그래서 NSFetchRequest의 공식 문서에 가보면, predicate라는 프로퍼티가 있는것을 확인할 수 있습니다. The predicate instance constrains the selection of objects the NSFetchRequest instance is to ..

CoreData 2022.04.12

Type Methods (static func & class func)

이번 포스팅에서는 Type Methods 인 static func 그리고 class func 의 차이점에 대해서 정리해보려고 합니다. Type Methods? 우선 Type Methods에 대해 간단하게 설명해보자면, Type에서 호출 되는 methods를 말하는데, 여기서 Type은 Classes, Structures, Enumerations가 될 수 있습니다. Instance methods는 Type의 Instance가 가지고 있는 methods를 호출한다고 하면, Type methods는 Type 자체가 가지고 있는 methods를 호출하는 것입니다. static이라는 키워드를 func 앞에 붙이면서 선언할 수 있고, Classes의 경우에는 class 키워드를 static 대신에 사용할 수 있습니..

Swift 2022.03.23

[RxSwift] ObserverType.swift 둘러보기

ObserverType Observer란 '관찰자' 라는 뜻을 가지고 있습니다. 무엇을 관찰하는 관찰자! 게임 '스타크래프트'의 옵저버는 상대의 동향, 전략 등을 관찰하려는 목적으로 사용을 하고 있는데, RxSwift 에서의 Observer는 Observable sequence를 관찰하기 위해 사용합니다. ObserverType을 한번 보겠습니다. public protocol ObserverType { associatedtype Element func on(_ event: Event) } ObserverType 프로토콜 위의 코멘트를 읽어보면 Observable sequence에 대한 push-style iteration을 지원한다고 적혀있습니다. 정확하게 이해하지는 못했지만, 이해해본 바로는 Obser..

RxSwift 2022.02.14

[RxSwift] ObservableType.swift 파일을 열어보자!

RxSwift의 ObservableType.swift 파일을 열어보았습니다! ObservableConvertibleType.swift public protocol ObservableType: ObservableConvertibleType { ObservableType 옆에 ObservableConvertibleType이 붙어있어서 먼저 확인해보겠습니다. public protocol ObservableConvertibleType { associatedtype Element func asObservable() -> Observable } ObservableConvertibleType이라는 프로토콜입니다. 코드를 열어보면 위의 코멘트에서도 알 수 있지만, Type that can be converted to ..

RxSwift 2022.02.08

Iterator Pattern?!

ReactiveX 홈페이지에 들어가보면 바로 확인할 수 있는 이 단어! Iterator pattern? 그게 뭘까 하는 마음에 찾아보았습니다. Iterator pattern? Object-Oriented Programming에서 Iterator Pattern은 Iterator가 Container(Collection)을 순회(traverse)할 수 있게 해주고, 그 Container의 요소들에 접근(access)할 수 있게 해주는 디자인 패턴입니다. Iterator : Iterator란 프로그래머로 하여금 container(collection)나 특정 list들을 순회(traverse)할 수 있게 해주는 객체입니다. Container라는 용어는 현재 Collection이라는 단어로 바뀌어야 한다고 Wiki..

Design Patterns 2022.02.04

Sequence

Iterator 패턴에 대해 공부를 하다보니, Sequence라는 녀석에 대한 공부가 필요한 것 같아서 빠르게 애플 공식문서를 보고 공부해보았습니다 ㅎㅎ! protocol Sequence Sequence 프로토콜은 어떤 요소들에 대한 순차적(Sequential), 반복적(Iterated) 접근을 제공하는 타입입니다. Sequence? Sequence는 한번에 접근할 수 있는 값들의 목록을 말합니다. Sequence의 요소들을 반복적으로 접근하는 가장 대표적인 방법은 for-in 루프가 있습니다. 이 Sequence 프로토콜을 채택하면, Sequence 에 대한 순차적인 접근(Sequential access)을 위해 이미 기본적으로 구현되어 있는 수많은 operation들에 접근할 수 있는 능력이 생긴다고..

Swift 2022.01.28

느낌대로 만들어본 TabBar, Navigation Coordinator

최근에 Coordinaotr 패턴에 대해 알아보다보니 흥미가 생겨서 좀 더 복잡한 구조에서의 Coordinator 패턴을 어떻게 구성할지에 대해 고민을 해보았습니다. 많은 앱에서 사용되고, 저의 N행시인 앱에서도 사용중인 UITabBarController와 UINavigationController를 Coordinator 패턴을 활용하여 구성해보는 포스팅이 되겠습니다. 만들고 싶은 프로젝트의 형태는 아래와 같습니다! 이런 형식의 프로젝트입니다. TabBarController 가 제일 상단에 위치하고, 하나의 탭 마다 UINavigationController들이 존재합니다. 1. SceneDelegate 이 프로젝트에서는 Storyboard를 사용하지 않았습니다. 그렇기 때문에 SceneDelegate 에서..

Design Patterns 2022.01.27

Coordinator Pattern 연습 1

Coordinator Pattern을 연습해 보았습니다. 우선 Coordinator 라는 영어 단어의 의미를 생각해 보았습니다. 가장 눈에 들어왔던 의미는 '진행자'였습니다. View Controller들 사이의 흐름에 대한 구조를 구성하기 위한 즉, "View Controller들 사이에 진행자인 Coordinator가 View Controller의 흐름을 컨트롤 해주는구나!" 정도로 이해중입니다. Raywenderlich의 Coordinator Pattern 자료에는 Router라는 녀석도 함께 나오는데 간단하게 정리해보자면, Router : Router는 어떤 View Controller를 보여줄지 모르지만, View Controller를 어떻게(How) 보여줄지에 대한 정의를 하는 녀석입니다. C..

Design Patterns 2022.01.25