iOS20 [RxSwift] Observable 항목 변환 메서드 정리 0. 공식 문서 먼저 정독 ReactiveX - ObservableObservable ReactiveX에서 옵저버는 Observable을 구독한다. Obseravable이 배출하는 하나 또는 연속된 항목에 옵저버는 반응한다. 이러한 패턴은 동시성 연산을 가능하게 한다. 그 이유는 Observable이 객체를reactivex.io 1. map각 아이템을 파라미터로 받아 다른 값으로 변환let observable = Observable.of(1, 2, 3)observable .map { $0 * 2 } .subscribe(onNext: { print($0) })// 출력: 2, 4, 62. flatmap각 아이템을 새 Observable 로 변환하여 모든 항목을 하나의 스트림을 병합보통 각 아이템.. 2024. 12. 11. [RxSwift] Observable 생성 관련 메서드들 0. 공식 문서 먼저 정독 ReactiveX - ObservableObservable ReactiveX에서 옵저버는 Observable을 구독한다. Obseravable이 배출하는 하나 또는 연속된 항목에 옵저버는 반응한다. 이러한 패턴은 동시성 연산을 가능하게 한다. 그 이유는 Observable이 객체를reactivex.io 1. just단일 값을 발행한 후 onCompleted 이벤트 호출let observable = Observable.just("Hello, RxSwift!")observable.subscribe( onNext: { value in print(value) // 출력: Hello, RxSwift! }, onCompleted: { print(".. 2024. 12. 3. [UIKit/RxSwift] UITableView를 RxSwift로 구현하는 방법 1. 데이터 바인딩1) 기존 방식기존의 방식으로 데이터를 바인딩하려면 UITableViewDataSource 프로토콜을 구현하고cellForRowAt, numberOfRowsInSection 메서드를 작성class NonRxTableViewController: UIViewController, UITableViewDataSource { private let tableView = UITableView() private let cardData: [(title: String, imageName: String)] = [ (title: "Card 1", imageName: "sample1"), (title: "Card 2", imageName: "sample2"), .. 2024. 12. 2. [UIKit/codebase] TableView 기본 기능 구현 방법 1. TableView 추가하기import UIKitclass ViewController: UIViewController { private let tableView = UITableView() override func viewDidLoad() { super.viewDidLoad() setupTableView() } private func setupTableView() { view.addSubview(tableView) tableView.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ tableView.topA.. 2024. 11. 30. [Swift/Xcode] 하나의 빌드 설정에 여러 xconfig을 등록하는 방법 카카오 로그인을 구현하는 와중에 Native App Key, API key 등을 숨기고 싶어secret 키들을 담고 있는 xcconfig 를 따로 만들어 깃에 업로드되지 않도록 관리하고 싶었다. 문제는 debug, release 빌드 설정에 이미 CocoaPod에서 생성한 xcconfig 파일이 등록된 상태이 상황에서 두 xcconfig 을 하나의 빌드 설정에 모두 적용하고 싶었다. #include#include 지시자를 사용하면 하나의 xcconfig 파일에서 다른 xcconfig 파일의 내용을 포함할 수 있다.#include "Pods/Target Support Files/Pods-walkbook/Pods-walkbook.debug.xcconfig"KAKAO_API_KEY = "APIKEY" 주의.. 2024. 7. 27. [RxSwift] AsyncSubject AsyncSubject는 Observable이 emit한 마지막 값만 emit 하며 Observable이 complete된 후에만 emit 된다. 즉, onCompleted 를 기다렸다가 마지막에 emit 받은 값만 emit 한다.import RxSwiftlet disposeBag = DisposeBag()let asyncSubject1 = AsyncSubject()asyncSubject1.subscribe( onNext: { value in print("Value: \(value)") }, onError: { error in print("Error: \(error)") }, onCompleted: { print("Completed") .. 2024. 7. 26. [Swift] 이미지 크기 Resize 방법 세 가지 1. UIGraphicsBeginImageContextWithOptionsextension UIImage { func resize(targetSize: CGSize) -> UIImage? { let size = self.size let widthRatio = targetSize.width / size.width let heightRatio = targetSize.height / size.height let newSize = CGSize(width: size.width * min(widthRatio, heightRatio), height: size.height * min(widthRatio, hei.. 2024. 7. 20. [Swift] Coordinator 패턴으로 화면 전환 +DIContainer(Swinject) 1. Coordinator 패턴의 목적구현 방식을 이야기하기 전에 Coordinator 패턴이 고안된 이유를 살펴보면ViewController(혹은 ViewModel)에서 화면 전환 로직을 포함한 다양한 로직들을 담게 되는 상황에서비대해진 ViewController 혹은 ViewModel에서 화면 전환 로직을 분리하자는 목적으로 고안되었다고 한다. 기존의 일반적인 방식대로면 ViewController 내부에서 직접 어떤 화면으로 어떻게 화면을 전환할 것인지 로직을 작성했다.하지만 이를 Coordinator라는 클래스에 따로 작성하여 ViewController 프로퍼티로 이 객체를 전달하여 화면 전환에 필요한 메서드만 호출하여 사용한다.이런 방식은 ViewController에서 다음 화면이 어떤 ViewC.. 2024. 7. 13. [Swift] Dictionary(grouping:by:) https://developer.apple.com/documentation/swift/dictionary/init(grouping:by:) init(grouping:by:) | Apple Developer DocumentationCreates a new dictionary whose keys are the groupings returned by the given closure and whose values are arrays of the elements that returned each key.developer.apple.com 낯선 방식의 생성자이어서 기록해본다. let students = ["Kofi", "Abena", "Efua", "Kweku", "Akosua"]let studentsByLette.. 2024. 7. 12. 이전 1 2 3 다음