rxswift(7)
-
RxSwift 정리 6 - UI (TableView .bind .drive .orEmpty)
TableView.rx 기존 방식이라면 UIViewController에 TableView 하나 추가 delegate와 dataSource를 UIViewController에 연결하고 UITableViewDelegate, UITableViewDataSource 를 상속한 다음 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 를 오버라이딩 한후 UITableViewCell 추가하고 클래스를 만들어 연결하고.. 과정을 생략할 수 있습니다. 그냥 UITableView 추가하고 I..
2021.08.24 -
RxSwift 정리 5 - operators(.withLatestFrom .sample .amb .switchLatest .retry(when:))
.withLatestFrom() .sample() .withLatestFrom : 가장 최근 발생값을 계속 subscribe한다. .sample : 가장 최근 발생값을 subscribe한다. 이후 새로운 값이 없다면 발생값이 없다. sample = withLatestFrom + distinctUntilChanged() 와 같다. let button = PublishSubject() let textField = PublishSubject() button.withLatestFrom(textField) // textField.sample(button) .subscribe(onNext: { value in print(value) }) textField.onNext("Typ") textField.onNext("T..
2021.08.23 -
RxSwift 정리 3 - operators(.flatMap .flatMapLatest .materialize .dematerialize .share)
계속 해서 연산자 입니다. .flatMap() 모든 시퀸스를 하나의 시퀸스로 모아서 발생 시킨다. .flatMapLatest() 가장 마지막의 시퀸스로 발생 시킨다. .materialize(), .dematerialize() score 는 Int 이다. materialize() 를 붙여주면 RxSwift.Event 형태로 바꾸어 준다. ( ".next(1)" 이 찍힘 ) Error, Complete 등 이벤트를 확인 할 수 있다. .dematerialize() 를 붙여주면 다시 Int 로 바뀐다. ( 다시 "1" 이 찍힘 ) struct Student { var score: ReplaySubject } let A = Student(score: ReplaySubject.createUnbounded()) l..
2021.08.20 -
RxSwift 정리 2 - SubJect, operators(기본)
메모용 연산자는 너무너무도 많아서 새로운 연산자 마다 별도로 작성할 예정입니다. 여기서는 많이쓰는 기본적인것만 작성합니다. .ignoreElements().elementAt().filter().skip().skipWhile().skipUntil().take().takeWhile().takeLast().takeUntil().distinctUntilChanged().distinctUntilChanged().delay.buffer.throttle.debounce.toArray().map.enumerated() RxSwift의 장점 !! 비동기화 프로그래밍을 쉽고 강력하게 할 수 있다. Rx 가 붙은 다른 언어로 즉시 사용할 수 있다. RxSwift 작성 -> RxJava로 즉시 사용 가능 PublishSubj..
2021.08.20 -
RxSwift 정리 1 - Observable 생성
RxSwift 메모 용도 정리입니다. RxSwift Reactive Progreamming with Swift 책을 기준으로 작성되었습니다. Observable(sequence) 생성 let one = 1,two = 2,three = 3 1개요소만 생성 : .just() let observable1 = Observable.just(one,scheduler: MainScheduler.instance) scheduler: MainScheduler.instance 요소 생성시에도 스레드를 선택해줄수 있습니다. 종류는 다음에 설명, 여러 요소 생성 : .of() let observable2 = Observable.of(one,two,three) //Observable let observable3 = Observ..
2021.08.20 -
프로그래머스 - Swift algorithm 0, 1 배열에서 1 덩어리 찾기
가로 세로 2차원 배열에서 "0"과 "1"을 배열하고 "1"이 가로세로 연결되었을 때 한 묶음으로 간주하여 총 몇 묶음인가, 또 가장 많은 "1"이 연결된 수를 구하는 문제다. 이런 식이다. 좌, 우 끝부터 보면 8개의 "1" 이 연결되어 있고 좌, 아래는 3개, 우, 상에는 3개, 우/하에는 10개의 "1"이 연결되어 있다. 결과는 총 4덩어리고 제일 큰 덩어리는 10개라서 정답은 4,10을 구하는 문제였다. 알고보니 DFS, BFS라는 알고리즘이다. // 문제 입력 var maps : [[Int]] = [[1,1,0,1,1],[0,1,1,0,0],[0,0,0,0,0],[1,1,0,1,1],[1,0,1,1,1],[1,0,1,1,1]] print(DPS_algorithm(&maps)) // 체크할 X,Y..
2021.08.02 -
SwiftUI 스터디 1 - Text, Button, From, Navigation, @State, @Binding
저도 묵혀두었던 SwiftUI 스터디 겸 메모겸 쓰는 글이라서 전문적이지 못하고 설명이 틀린 부분이 있을 수 있습니다. 프로젝트 생성 MultiPlatform(iOS, MacOS합본), iOS, MacOS 중에 하나를 생성합니다. MultiPlatform은 iOS, MacOS 공통으로 공유하는 형식의 파일이 생성됩니다. Intel 계열에는 부적합하겠지만 향후 대부분 M1 맥북 사용을 고려한다면 괜찮은 방법입니다. 프로젝트 명은 "TokkiSeaUI"로 생성하겠습니다. TokkiSeaUIApp.swift import SwiftUI @main struct TokkiSeaUIApp: App { var body: some Scene { WindowGroup { ContentView() } } } 말 그대로 만들..
2021.05.12