This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//1 | |
let email = emailTextField.rx.text.orEmpty.asObservable() | |
//2 | |
let password = passwordTextField.rx.text.orEmpty.asObservable() | |
//3 | |
Observable.combineLatest(email, password) { (email, password) in | |
return email.isValidEmail() | |
&& password.isValidPassword() | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
import RxSwift | |
import RxCocoa | |
extension String { | |
/// Used to validate if the given string is valid email or not | |
/// | |
/// - Returns: Boolean indicating if the string is valid email or not | |
func isValidEmail() -> Bool { | |
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//1 | |
struct LoginViewModel { | |
// 2 | |
let email = BehaviorRelay<String>(value: "") | |
// 3 | |
let password = BehaviorRelay<String>(value: "") | |
// 4 | |
let isValid: Observable<Bool> | |
init() { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let disposeBag = DisposeBag() | |
//1 | |
let behaviourRelay = BehaviorRelay<String>(value: "") | |
//2 | |
let subscription1 = behaviourRelay.subscribe(onNext:{ string in | |
print("subscription1: ", string) | |
}) | |
//3 | |
subscription1.disposed(by: disposeBag) | |
//4 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let disposeBag = DisposeBag() | |
let heySequence = Observable.from(["H","e","y"]) | |
let subscription = heySequence.subscribe { event in | |
switch event { | |
case .next(let value): | |
print("onNext, Event: \(value)") | |
case .error(let error): | |
print(error) | |
case .completed: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let heySequence = Observable.from(["H","e","y"]) | |
let subscription = heySequence.subscribe { event in | |
switch event { | |
case .next(let value): | |
print("onNext Event: \(value)") | |
case .error(let error): | |
print(error) | |
case .completed: | |
print("onCompleted") | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let heyThereSequence = Observable.of("Hey there!") | |
let subscription = heyThereSequence.subscribe { event in | |
print(event) | |
} | |
Result: | |
next("Hey there!") | |
completed |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@IBOutlet weak var emailTextField: UITextField! | |
@IBOutlet weak var passwordTextField: UITextField! | |
@IBOutlet weak var loginButton: UIButton! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension String { | |
/// Used to validate if the given string is valid email or not | |
/// | |
/// - Returns: Boolean indicating if the string is valid email or not | |
func isValidEmail() -> Bool { | |
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}" | |
let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx) | |
print("emailTest.evaluate(with: self): \(emailTest.evaluate(with: self))") | |
return emailTest.evaluate(with: self) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Functional Programming | |
let totalDurationSpentByContacts = contactsDurationArr.reduce(0,+) | |
print(totalDurationSpentByContacts) |