IOS 14

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

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

느낌대로 만들어본 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

Create CollectionView Header with UICollectionReusableView

UICollectionReusableView를 활용하여 CollectionView의 Header를 만들어보도록 하겠습니다! UICollectionReusableView? 애플의 개발자문서에 따르면 "A view that defines the behavior for all cells and supplementary views presented by a collection view"라고 합니다. 해석을 해보자면 Collection View가 보여줄 Cell들과 Supplementary view들의 행동을 정의해주는 view라고 할 수 있겠습니다! 실제로 UICollectionViewCell도 UICollectionReusableView를 상속받고있습니다. Supplementary view 역시 이 UICol..

iOS 2021.07.21

Observer Pattern

Observer Pattern에 대해서 공부를 해보았습니다. Observe Pattern은 하나의 Object가 다른 Object의 변화를 관찰하는 패턴입니다. Subscriber Subscriber는 Observer의 역할을 하는 친구입니다. 관찰하고 싶은 Object를 관찰하고, 변경이 일어나면 Update를 받습니다. Publisher Publisher는 관찰이 가능한 Object입니다. 다른 Object가 자신을 관찰할 수 있게 해주고, 변경사항을 보내는 역할을 합니다. Value Value는 값의 변경이 일어나는 근본적인 Object입니다. 이들의 관계를 그림으로 표현해보면 아래와 같은 모습입니다. Swift 5.1 부터 이 Observer Pattern을 더 편하게 활용할 수 있는 Combin..

Design Patterns 2021.06.03

Asynchronous Operations Unit Test (URLSession Unit Test)

Unit Test를 공부하던 중에 평소 Model을 만들어 Mock 데이터를 활용해서 Model이 알맞게 만들어졌는지에 대한 Unit Test만 작성하다가, URLSession data task를 잘 가져오는지 확인하려고 Unit Test를 작성하던 도중 그냥 URLSession 만을 사용해서는 Unit Test 도중에 데이터를 잘 받아왔는지 확인하기도 전에 Unit Test가 Success했다고 나오는 현상을 발견했습니다. 그래서 이번 포스팅에서는 비동기 작업을 Testing하는 방법에 대해 알아보겠습니다. 우선 저는 애플의 공식 문서인 'Testing Asynchronous Operations with Expectations' 라는 Article을 참고하여 공부를 해 보았습니다. XCTestExpec..

iOS 2021.01.27