전체 글 45

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

Swift ) What is AnyObject?

최근에 공부를 하면서 AnyObject의 정확한 의미를 알지 못해 겪은 오류가 있어, 이번에 확실히 이해하고 넘어가기 위해 AnyObject에 대해서 알아보겠습니다. protocol MyViewControllerDelegate { func someFunction() } class MyViewController: UIViewController { weak var delegate: MyViewControllerDelegate? // Error! } 에러의 내용은 다음과 같습니다. 'weak' must not be applied to non-class-bound 'MyViewControllerDelegate'; consider adding a protocol conformance that has a class..

Swift 2022.04.06

Swift ) URL에 한글이 들어갈때? (addingPercentEncoding)

URL에 한글이 들어가면? let stringURL = "https://joonswift.com/user/준스" print(URL(string: stringURL)) // nil String 타입의 stringURL에 제일 마지막 부분에 "준스" 라는 한글이 있습니다. 이 String을 URL로 변환하면, nil을 리턴하게 됩니다. Percent Encoding & URI 우선 PercentEncoding에 앞서 URI(Uniform Resource Identifier)에 대해서 알아보겠습니다. A Uniform Resource Identifier(URI) is a unique sequence of characters that identifies a logical or physical resource u..

Swift 2022.03.29

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

iOS ) Firestore 와 UITableView를 활용한 Paging 기능

최근 Firestore를 활용하면서 Paging기능을 구현할 일이 생겨 블로그 포스팅으로 정리해보려고 합니다. 우선, 첫째로 Firestore에서 데이터를 받아온 후 다음 Query를 저장. 둘째, Paging을 시작하는 시점. 셋째, 상태값 (isPaging, isLastPage) 관리. 저는 이렇게 3가지를 이번 기능을 구현하면서 중점적으로 생각했던것 같습니다. Firestore Firebase 공식 문서에서는 쿼리 커서로 데이터 페이지화 라는 섹션에서 구현 방법을 확인할 수 있습니다. 간단히 정리하면 start(), startAfter() 메서드와 limit() 메서드를 적절히 활용하여 구현할 수 있었습니다. 바로 코드로 확인해보겠습니다. Firestore Paging 구현 final class F..

iOS 2022.03.07

[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