본문 바로가기

iOS

(65)
[Swift] No5. Subscription, Cancellable 개념 뿌수기!!! | Combine 안녕하세요. 이번 포스트는 Combine에서 Cancellable과 Subscription에 대해 공부한 개념을 정리하려고 합니다. 1. What is Cancellable and AnyCancellable ? 컴바인 사용할 때 커스텀 subscriber 구현도 하긴 하지만?! 저는 sink(receiveCompletion:receiveValue:), sink(receiveValue:)를 많이 사용합니다. 물론 @Publihsed를 사용할 때 assign(to:on:)도 사용합니다. 이 세 개 operator의 공통적인 특징은 AnyCancellable을 반환하는 것입니다. AnyCancellable은 Cancellable 프로토콜을 채택하는 final class입니다. Cancellable은 cance..
[Swift] No4. Hi Failure, Error Handling 개념 뿌수기!!! & Error Deep Dive!! | Combine Combine framework를 사용하면서 Error는 잠재적으로 발생할 수 있습니다. 프로그램 실행 중 발생한 Error는 throwing 됩니다. 이때 catching. 예외 처리를 할 수 없다면 런타임 오류가 발생하게 됩니다. 앱은 멈추게 됩니다. 따라서 에러를 처리할 수 있는 다양한 방법에 대해서 정리하려고 합니다. 1부는 정말 간단하게 Error의 특징에 대해 짧게 알아보고 2부에선 Combine을 사용할 때 발생한 에러를 처리하는 방법에 대해 탐구할 것입니다. 1. What is Error? Error Handling Deep Dive :) Swift에서 에러는 Error protocol을 따릅니다. 반드시 Error 프로토콜을 채택한 object를 구현해야 Swift error handli..
[Swift] No3. Hi subject! PassthroughSubject vs CurrentValueSubject 개념 완벽 뿌수기 | Combine Swift Combine. Subject PassthroughSubject, CurrentValueSubject에 대한 개념을 정리하려고 합니다 : ] What is Publiser? Subject를 소개하기 전에 잠깐,, 이전에 소개했던 publisher 예제입니다. let requestBeverage = Notification.Name("RequestBeverage") let publisher1 = [1,2,3,4,5,6].publisher let publisher2 = Just([1,2,3,4,5,6]) let publisher3 = Future { promise in promise(.success([1,2,3,4,5,6])) } let publisher4 = NotificationCenter.de..
[Swift] No2. Publihser, Subscriber. 개념 파해치기 in Combine 안녕하세요. Publihser와 Subscriber을 공부하면서 배운 개념들을 소개합니다. What is Pubilsher? 이전 파트에서 소개 했지만 다시 간력하게 설명하겠습니다. "시간의 흐름"에 따라 Publisher's Output type의 값을 하나 또는 여러 Subscriber에게 publish(전송) 전송할 수 있습니다. 주의해야 할 것은 Publisher's Output, Failure generic type 과 Subscriber's Input, Failure generic type이 일치해야만 Publisher는 Subscriber에게 값을 전달할 수 있습니다. 지금 자판기가 있습니다. 자판기에는 많은 음료수가 있습니다. 많은 사람이 자판기를 이용하기 위해 줄을 서 있습니다. 음료수를..
[Swift] No1. Hi! Combine. 컴바인 전반적인 개념 파해치기 안녕하세요. 지금부터 컴바인을 소개 합니다! 배우면서 햇갈렸던 부분을 자세하게 풀어 나가려고 합니다. What is combine in swift? WWDC 2019 Introducing Combine. Apple에서 소개한 Swift framework입니다. asynchronous reactive programming을 할수 있는 특징이 있습니다. Reactive programming으로 Apple's native, Apple's platform인 Combine과 thrid-party인 Rx가 있습니다. 경력이 좀 있는 RxSwift와 Combine 뭐를 배울지 고민 했지만 결국 둘 다 배워 보려고 합니다. Will Combine Kill RxSwift? 유명한 글이 있어서 우선순위로 1순위로 컴바인 ..
[IOS/UIKit] NSAttributedString vs NSMutableAttributedString String이 있는데 왜 AttributedString을 사용하는 걸까? Swift에는 String이 있는데 왜 attributedString을 사용할까요?(attributedString이란 NSAttributedString, NSMUtableAttributedString으로부터 init된 string을 의미) AttributedString은 attributes 추가를 통해 format이 가능하기 때문입니다. attributes는 text의 font, kerning, backgroundColor, foregroundColor, shadow 등 NSAttributedString.Key를 통해 설정할 수 있는 것들을 의미합니다. UILabel을 예로 들자면, 그림1과 같이 text, attributedTex..
[iOS] FireStore Database document에 값을 Codable타입으로 디코딩, 인코딩으로 저장, 꺼내오기!! 이번 글을 통해 Codable의 Decode를 통해 파이어베이스 Firestore Database의 collection document 필드 값을 쿼리를 통해 인스턴스로 얻거나 Encode를 통해 파이어베이스의 문서와 필드값을 추가하는 글을 다뤄볼 것이다. 사진 1과 같이 파이어베이스에 저장된 형식을 멤버 프로퍼티로 하는 구조체를 Codable타입으로 생성하면 된다. 이때 Encodable과 Decodable을 구현해야 한다. 파이어베이스를 이번 인스타그램 클론을 하면서 처음 다뤄보는데 Codable타입으로 받을 수 있지 않을까 하고 시도해 봤는데 성공적이어서 글로 남긴다.ㅎㅎ users 컬랙션의 문서는 uid로 등록했다. 문서의 필드는 JSON으로 아래와 같은 형식으로 사용자의 정보를 담도록 했다. C..
[IOS/UIKit] UITextField left, right, top, bottom 패딩 넣는 방법!! 원래 뷰에 마진을 넣을 때 view.layoutMargins 속성에 UIEdgeInsets를 넣어서 padding을 설정했었다. 근데 UITextField는 placeholder모드랑 editing모드가 있어서 layoutMargins적용이 안되는 것 같았다(제 피셜입니다 정확x). 그래서 공식문서를 좀 읽어봤는데 TextField는 뷰의 text editable 영역의 양쪽 좌, 우에 위치한다. 이는 oveerlay left, right view로 불리는데 text 입력 공간 양 옆에 작은 공간이 있기에 이곳을 조정하면 된다. 이미지 또한 넣을 수 있다. 현재 textfield 상태이다. 앵커를 이용해 좌 우 offset을 20으로, topAnchor의 offset는 30으로 설정했다. 입력하는 순간 ..