Swift/RxSwift
-
ReactorKit 에서 API 활용하기Swift/RxSwift 2022. 10. 15. 10:13
// 출처: https://nsios.tistory.com/141 (출처 코드를 일부 수정했습니다. ) 중요한 Code 1. Controller class APIPracticeController: UIViewController, View { var disposeBag = DisposeBag() func bind(reactor: MainReactor) { loadButton.rx.tap .map({ Reactor.Action.touchButton(index: 0) }) .bind(to: reactor.action) .disposed(by: disposeBag) reactor.state .map({$0.image}) .subscribe(onNext: {[weak self] img in guard let im..
-
ReactorKit 으로 로그인 페이지 만들기Swift/RxSwift 2022. 10. 14. 01:58
Login Controller // // ViewController.swift // ReactorPractice // // Created by Mac mini on 2022/10/13. // import Foundation import UIKit import RxSwift import RxCocoa import Then import ReactorKit import RxViewController import RxGesture import SnapKit class ViewController: UIViewController, View { internal var disposeBag = DisposeBag() private let behaviorRelay = BehaviorRelay(value: ()) overr..
-
RxAlamofireSwift/RxSwift 2022. 10. 3. 00:01
https://github.com/RxSwiftCommunity/RxAlamofire 책을 뒤져보다가 우연히 RxAlamofire 를 발견했다. (RxCommunity 프로젝트들 중 하나.) Alamofire 는 iOS 진영에서 매우매우 많이 쓰는 API Request Framework 이다. RxAlamofire 를 이용해 쓸 수 있는 단순한 형태의 함수들은 아래와 같은 것들이 있다. // retrieve a request result as raw text RxAlamofire.string(method: HTTPMethod, url: URLConvertible) // decoded json 을 return 하기 때문에, .map 을 이용해서 Type 을 바꿔주거나, // 또는 subscription 내..
-
RxSwift Observable, Subjects and RelaysSwift/RxSwift 2022. 10. 1. 23:57
Subject Observable 이면서 observer 일 수 있음. (== 데이터를 방출 (emit), 구독 (subscribe) 할 수 있음. ) PublishSubject: empty 로 시작해서 subscribers 에게만 새로운 elements 를 emit BehaviorSubject: 초기값을 가짐. 초기 값 또는 가장 최근 element 를 new subscribers 에게 emit 해줌(replay) ReplaySubject: buffer size 만큼 초기화 되고, 해당 size 만큼의 element 를 지니고 있다가 new subscribers 에게 emit AsyncSubject: subject 가 complete event 를 받을 때만 가장 마지막 next event 값을 emi..
-
UITableView (with RxSwift)Swift/RxSwift 2022. 9. 30. 23:59
TableView 를 RxSwift 로 그리기! CollectionView 도 같은 방식으로 작동한다고 한다. (직접 해봐야 하지만.) 기존의 길고 긴 TableView boilier plate code 대신, cities.bind(to: tableView.rx.items) { (tableView: UITableView, index: Int, element: String) in let cell = UITableViewCell(style: .default, reuseIdentifier: "cell") cell.textLabel?.text = element return cell } 한 다섯줄의 간단한 코드로 기본적인 UITableView 를 만들 수 있다! 작동하는 기본적인 방식은, Observable 을 ..
-
Login Validation (simple..) RxSwift 구현Swift/RxSwift 2022. 9. 29. 23:25
오늘 구현해본 기능은 RxSwift 를 사용해서 기본적인 로그인 Validation. 위 아래 textField 는 각각 email, password 를 의미한다고 했을 때, 두 텍스트가 일정 조건을 맞춰주면 Login Button 이 빨간색으로 바뀌는 식으로 만들어주었다. 구현 방식은 BehaviorRelay 를 이용해서 각 TextField 의 값을 emailRelay, passwordRelay 에 넣어주고, combineLatest 를 이용해서 두 relay 값을 받은 후 특정조건을 넣는 식으로 구현하였다. // -------------- inside ViewController ---------------- // private let emailRelay = BehaviorRelay(value: ""..
-
RxSwift basic test (count 1씩 올리기)Swift/RxSwift 2022. 9. 28. 23:07
with RxSwift import UIKit import Then import RxSwift import RxCocoa class ViewController: UIViewController { private var count = BehaviorSubject(value: 0) private let bag = DisposeBag() override func viewDidLoad() { super.viewDidLoad() setupBindings() setupLayout() } private func setupBindings() { btn.rx.tap .subscribe(onNext: { [weak self] _ in guard let self = self else { return } print("btn t..
-
RxSwift - API CallSwift/RxSwift 2022. 7. 26. 15:31
func fetchEvents(repo: String) { let response = Observable.from([repo]) .map { urlString -> URL in return URL(string: "https://api.github.com/repos/\(urlString)/events")! } .map { url -> URLRequest in return URLRequest(url: url) } .flatMap { request -> Observable in return URLSession.shared.rx.response(request: request) // this method returns 'Observable' // completes whevever your app receive t..