Skip to content

Instantly share code, notes, and snippets.

@nic004
nic004 / phoneNumberVerify6.swift
Created March 7, 2018 03:11
phone number verification without Reactive #6
class PhoneVerifyViewController: UIViewController {
enum PhoneNumberVerifyStep {
case inputPhoneNumber, inputVerifyNumber, verifying, succeed, failed
}
var verifyStep: PhoneNumberVerifyStep = .inputPhoneNumber
@IBOutlet weak var phoneNumberTextField: UITextField!
@IBOutlet weak var verifyNumberTextField: UITextField!
@IBOutlet weak var requestVerifyNumberButton: UIButton!
@nic004
nic004 / phoneNumberVerify5.swift
Last active March 8, 2018 08:20
phone number verification without Reactive #5
import ReactiveSwift
import ReactiveCocoa
import enum Result.NoError
class PhoneVerifyViewController: UIViewController {
...
enum PhoneNumberVerifyStep {
case inputPhoneNumber, inputVerifyNumber, verifying, succeed, failed
@nic004
nic004 / phoneNumberVerify4.swift
Created March 5, 2018 11:56
phone number verification without Reactive #4
override func viewDidLoad() {
super.viewDidLoad()
phoneNumberTextField.addTarget(self, action: #selector(phoneNumberEditingChanged), for: .editingChanged)
}
func phoneNumberEditingChanged(_ textField: UITextField) {
requestVerifyNumberButton.isEnabled = !(textField.text?.isEmpty ?? true)
}
@nic004
nic004 / phoneNumberVerify3.swift
Last active March 3, 2018 04:45
phone number verification without Reactive #3
@IBAction func requestVerifyNumberAction(_ sender: Any) {
guard let phoneNumber = phoneTextField.text else { return }
api.postUsersVerify(phoneNumber: phoneNumber).on(value: { _ in
self.verifyStep = .inputVerifyNumber
})
}
@IBAction func verifyAction(_ sender: Any) {
guard let phoneNumber = phoneTextField.text, let code = verifyNumberTextField.text else { return }
api.getUsersVerify(PhoneNumberVerifyParams(phone_number: phoneNumber, code: code))
@nic004
nic004 / phoneNumberVerify2.swift
Last active March 5, 2018 11:38
phone number verification without Reactive #2
var verifyStep: PhoneNumberVerifyStep = .inputPhoneNumber {
didSet {
switch verifyStep {
...
case .succeed:
verifyNumberTextField.isHidden = true
verifyButton.isHidden = true
statusLabel.text = "인증이 완료되었습니다."
case .failed:
...
@nic004
nic004 / phoneNumberVerify1.swift
Last active March 5, 2018 11:33
phone number verification without Reactive #1
class ViewController: UIViewController {
@IBOutlet weak var phoneNumberTextField: UITextField!
@IBOutlet weak var verifyNumberTextField: UITextField!
@IBOutlet weak var requestVerifyNumberButton: UIButton!
@IBOutlet weak var verifyButton: UIButton!
@IBOutlet weak var statusLabel: UILabel!
var verifyStep: PhoneNumberVerifyStep = .inputPhoneNumber {
didSet {
@nic004
nic004 / signalProducerExample.swift
Created February 23, 2018 09:28
callback using ReactiveSwift
func job() -> SignalProducer<Int, NoError> {
return SignalProducer<Int, NoError> { observer, disposable in
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(10)) {
observer.send(value: 300)
observer.sendCompleted()
}
}
}
@nic004
nic004 / promise4.swift
Created February 22, 2018 12:18
promise with ReactiveSwift #4
Promise<JSON, CommonError> { observer, disposable in
Alamofire.request("https://httpbin.org/get").responseJSON { response in
guard case let .success(value) = response.result else {
observer.send(error: .anyError)
return
}
observer.send(value: JSON(value))
observer.sendCompleted()
}
}.value { json in
@nic004
nic004 / promise3.swift
Created February 22, 2018 11:36
promise with ReactiveSwift #3
...
class Promise<Value, Error: Swift.Error> {
...
@discardableResult func started(_ then: @escaping () -> Void) -> Promise<Value, Error> {
sp.on(started: then)
return self
}
@nic004
nic004 / promise2.swift
Last active February 22, 2018 07:16
promise with ReactiveSwift #2
class Promise<Value, Error: Swift.Error> {
...
deinit {
sp.start()
}
}