RxSwift를 5분 만에 시작해 보세요.
자기소개
준준이라고 하는 닉네임으로, 간사이를 거점으로 활동하고 있는 프런트 엔드 엔지니어입니다.
HAL 오사카 3회생입니다. (2017/06/02 현재)
이벤트나, 공부회에 참가하고 있으므로 꼭 만났을 때는 말씀해 주세요!
RxSwift란?
Reactive Programming in Swift ReactiveX/RxSwift
RxSwift가 무엇인지 같은 사람은 아마 5분에 시작하려고 하지 않으므로 설명은 생략합니다.
구현하자.
RxSwift in Swift4
이번 기사는 금세의 Qiita의 기사라든지가 RxSwift의 버전 자체가 옛날의 것이거나, Swift3의 것뿐이므로 Swift4로 프로젝트 만들 때 어떻게 할까라고 할 때에 읽어 주시면 좋겠습니다.
환경
MacOS Sierra(10.12.6)
Swift version4
글쎄, 우선 포드를 설치할까?
RxSwift v4.0.0-beta.1
이번에는 RxSwift4.0.0의 beta.1을 사용합니다.
3.6.1을 사용하면 빌드에서 오류가 발생하기 때문에 Swift4에 맞추기 위해 베타 버전을 사용합니다.
그래서 Podfile
는 이런 느낌이 듭니다.
Podfile# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
target 'rxswift-textfield-sample' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for rxswift-textfield-sample
pod 'RxSwift', '4.0.0-beta.1'
pod 'RxCocoa', '4.0.0-beta.1'
end
그런데 이번은 UITextField
와 UILabel
를 연결하려고 합니다.
UITextField
로부터 받은 문자열을 UILabel
에 써 갑니다.
ViewController.swift
는 이런 느낌이 듭니다.
ViewController.swiftimport UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var input: UITextField!
let disposeBag = DisposeBag() //unsubscribeに必要なもの
override func viewDidLoad() {
super.viewDidLoad()
self.input.rx.text.orEmpty
.throttle(1.0, scheduler: MainScheduler.instance)
.distinctUntilChanged()
.subscribe(onNext: { [unowned self] text in
self.label.text = text
})
.disposed(by: self.disposeBag)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
먼저 UITextField
와 UILabel
를 outlet
로 연결합니다. (여기는 코드로 쓰고 싶은 사람은 직접 구현하십시오)
그런 다음 rx
입니다. 이것은 RxSwift에서 제공하는 것입니다.
이번에는 공식 README 거리
rx.text.orEmpty
로 그 다음에 throttle
라는 연산자로 초당 읽으러 가도록 합니다.
2017/10/12 추가:
throttle은 "지정한 시간은 처리하지 않습니다"물건입니다! 이해가 부족했습니다.
이번은 「지정한 시간은 처리를 실시하지 않는다」를 하지 않아도 좋기 때문에 필요없는 코드가 됩니다.
예를 들어, 어떠한 API에 데이터를 취득하러 가는데 입력마다 액세스 하고 있으면 터무니 없게 된다구나 말할 때 사용하는 것이라고 합니다!
그 다음에 옳은 것은 distinctUntilChanged
군요. distinct
라고 하면 SQL에서도 친숙한 것이라고 생각합니다. 중복을 삭제하는 것입니다!
그리고 subscribe에서 onNext
를 취하여 처리를 작성합니다.
이번은 UILabel
에 기입하고 싶기 때문에 기입 처리를 써 끝입니다.
onNext
이외에도 error나 complete 등이 있습니다만, optional이므로 구현하지 않아도 괜찮습니다.
마지막으로 unsubscribe 하기 위해 disposed 를 겁니다.
이것만으로, UITextField
와 UILabel
가 연결되네요. 너무 최고는 아니잖아! ?
마지막으로
이번 소스 코드는 줄 만큼은 아니지만 일단 GitHub에 리포지토리를 만들고 있습니다.
RxSwift-TextField-sample
왜, ios 초보자이므로 뭔가 실수하고 있다! 라면 가르쳐 주셨으면합니다!
Twitter @ 이 쥬냐
Reference
이 문제에 관하여(RxSwift를 5분 만에 시작해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/konojunya/items/ee55d791bdd5aa5a30de
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reactive Programming in Swift ReactiveX/RxSwift
RxSwift가 무엇인지 같은 사람은 아마 5분에 시작하려고 하지 않으므로 설명은 생략합니다.
구현하자.
RxSwift in Swift4
이번 기사는 금세의 Qiita의 기사라든지가 RxSwift의 버전 자체가 옛날의 것이거나, Swift3의 것뿐이므로 Swift4로 프로젝트 만들 때 어떻게 할까라고 할 때에 읽어 주시면 좋겠습니다.
환경
MacOS Sierra(10.12.6)
Swift version4
글쎄, 우선 포드를 설치할까?
RxSwift v4.0.0-beta.1
이번에는 RxSwift4.0.0의 beta.1을 사용합니다.
3.6.1을 사용하면 빌드에서 오류가 발생하기 때문에 Swift4에 맞추기 위해 베타 버전을 사용합니다.
그래서 Podfile
는 이런 느낌이 듭니다.
Podfile# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
target 'rxswift-textfield-sample' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for rxswift-textfield-sample
pod 'RxSwift', '4.0.0-beta.1'
pod 'RxCocoa', '4.0.0-beta.1'
end
그런데 이번은 UITextField
와 UILabel
를 연결하려고 합니다.
UITextField
로부터 받은 문자열을 UILabel
에 써 갑니다.
ViewController.swift
는 이런 느낌이 듭니다.
ViewController.swiftimport UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var input: UITextField!
let disposeBag = DisposeBag() //unsubscribeに必要なもの
override func viewDidLoad() {
super.viewDidLoad()
self.input.rx.text.orEmpty
.throttle(1.0, scheduler: MainScheduler.instance)
.distinctUntilChanged()
.subscribe(onNext: { [unowned self] text in
self.label.text = text
})
.disposed(by: self.disposeBag)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
먼저 UITextField
와 UILabel
를 outlet
로 연결합니다. (여기는 코드로 쓰고 싶은 사람은 직접 구현하십시오)
그런 다음 rx
입니다. 이것은 RxSwift에서 제공하는 것입니다.
이번에는 공식 README 거리
rx.text.orEmpty
로 그 다음에 throttle
라는 연산자로 초당 읽으러 가도록 합니다.
2017/10/12 추가:
throttle은 "지정한 시간은 처리하지 않습니다"물건입니다! 이해가 부족했습니다.
이번은 「지정한 시간은 처리를 실시하지 않는다」를 하지 않아도 좋기 때문에 필요없는 코드가 됩니다.
예를 들어, 어떠한 API에 데이터를 취득하러 가는데 입력마다 액세스 하고 있으면 터무니 없게 된다구나 말할 때 사용하는 것이라고 합니다!
그 다음에 옳은 것은 distinctUntilChanged
군요. distinct
라고 하면 SQL에서도 친숙한 것이라고 생각합니다. 중복을 삭제하는 것입니다!
그리고 subscribe에서 onNext
를 취하여 처리를 작성합니다.
이번은 UILabel
에 기입하고 싶기 때문에 기입 처리를 써 끝입니다.
onNext
이외에도 error나 complete 등이 있습니다만, optional이므로 구현하지 않아도 괜찮습니다.
마지막으로 unsubscribe 하기 위해 disposed 를 겁니다.
이것만으로, UITextField
와 UILabel
가 연결되네요. 너무 최고는 아니잖아! ?
마지막으로
이번 소스 코드는 줄 만큼은 아니지만 일단 GitHub에 리포지토리를 만들고 있습니다.
RxSwift-TextField-sample
왜, ios 초보자이므로 뭔가 실수하고 있다! 라면 가르쳐 주셨으면합니다!
Twitter @ 이 쥬냐
Reference
이 문제에 관하여(RxSwift를 5분 만에 시작해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/konojunya/items/ee55d791bdd5aa5a30de
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
MacOS Sierra(10.12.6)
Swift version4
글쎄, 우선 포드를 설치할까?
RxSwift v4.0.0-beta.1
이번에는 RxSwift4.0.0의 beta.1을 사용합니다.
3.6.1을 사용하면 빌드에서 오류가 발생하기 때문에 Swift4에 맞추기 위해 베타 버전을 사용합니다.
그래서 Podfile
는 이런 느낌이 듭니다.
Podfile# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
target 'rxswift-textfield-sample' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for rxswift-textfield-sample
pod 'RxSwift', '4.0.0-beta.1'
pod 'RxCocoa', '4.0.0-beta.1'
end
그런데 이번은 UITextField
와 UILabel
를 연결하려고 합니다.
UITextField
로부터 받은 문자열을 UILabel
에 써 갑니다.
ViewController.swift
는 이런 느낌이 듭니다.
ViewController.swiftimport UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var input: UITextField!
let disposeBag = DisposeBag() //unsubscribeに必要なもの
override func viewDidLoad() {
super.viewDidLoad()
self.input.rx.text.orEmpty
.throttle(1.0, scheduler: MainScheduler.instance)
.distinctUntilChanged()
.subscribe(onNext: { [unowned self] text in
self.label.text = text
})
.disposed(by: self.disposeBag)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
먼저 UITextField
와 UILabel
를 outlet
로 연결합니다. (여기는 코드로 쓰고 싶은 사람은 직접 구현하십시오)
그런 다음 rx
입니다. 이것은 RxSwift에서 제공하는 것입니다.
이번에는 공식 README 거리
rx.text.orEmpty
로 그 다음에 throttle
라는 연산자로 초당 읽으러 가도록 합니다.
2017/10/12 추가:
throttle은 "지정한 시간은 처리하지 않습니다"물건입니다! 이해가 부족했습니다.
이번은 「지정한 시간은 처리를 실시하지 않는다」를 하지 않아도 좋기 때문에 필요없는 코드가 됩니다.
예를 들어, 어떠한 API에 데이터를 취득하러 가는데 입력마다 액세스 하고 있으면 터무니 없게 된다구나 말할 때 사용하는 것이라고 합니다!
그 다음에 옳은 것은 distinctUntilChanged
군요. distinct
라고 하면 SQL에서도 친숙한 것이라고 생각합니다. 중복을 삭제하는 것입니다!
그리고 subscribe에서 onNext
를 취하여 처리를 작성합니다.
이번은 UILabel
에 기입하고 싶기 때문에 기입 처리를 써 끝입니다.
onNext
이외에도 error나 complete 등이 있습니다만, optional이므로 구현하지 않아도 괜찮습니다.
마지막으로 unsubscribe 하기 위해 disposed 를 겁니다.
이것만으로, UITextField
와 UILabel
가 연결되네요. 너무 최고는 아니잖아! ?
마지막으로
이번 소스 코드는 줄 만큼은 아니지만 일단 GitHub에 리포지토리를 만들고 있습니다.
RxSwift-TextField-sample
왜, ios 초보자이므로 뭔가 실수하고 있다! 라면 가르쳐 주셨으면합니다!
Twitter @ 이 쥬냐
Reference
이 문제에 관하여(RxSwift를 5분 만에 시작해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/konojunya/items/ee55d791bdd5aa5a30de
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
target 'rxswift-textfield-sample' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for rxswift-textfield-sample
pod 'RxSwift', '4.0.0-beta.1'
pod 'RxCocoa', '4.0.0-beta.1'
end
import UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var input: UITextField!
let disposeBag = DisposeBag() //unsubscribeに必要なもの
override func viewDidLoad() {
super.viewDidLoad()
self.input.rx.text.orEmpty
.throttle(1.0, scheduler: MainScheduler.instance)
.distinctUntilChanged()
.subscribe(onNext: { [unowned self] text in
self.label.text = text
})
.disposed(by: self.disposeBag)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
이번 소스 코드는 줄 만큼은 아니지만 일단 GitHub에 리포지토리를 만들고 있습니다.
RxSwift-TextField-sample
왜, ios 초보자이므로 뭔가 실수하고 있다! 라면 가르쳐 주셨으면합니다!
Twitter @ 이 쥬냐
Reference
이 문제에 관하여(RxSwift를 5분 만에 시작해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/konojunya/items/ee55d791bdd5aa5a30de텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)