SlideShare a Scribd company logo
1 of 96
Download to read offline
Rx - iOS
dwa bratanki…
PIOTR GUZIA
Rx - iOS dwa bratanki…
KIM JESTEM….? ZWYCIĘZCĄ!!!
▸ iOS Developer 20 miesięcy
▸ .NET Developer 30 miesięcy
▸ Muzyk 157 miesięcy
▸ @: guziaster@gmail.com
▸ github.com/guziaster
Rx - iOS dwa bratanki…
O CZYM POWIEM?
Rx - iOS dwa bratanki…
O CZYM POWIEM?
▸ O co chodzi z tym programowaniem reaktywnym?
Rx - iOS dwa bratanki…
O CZYM POWIEM?
▸ O co chodzi z tym programowaniem reaktywnym?
▸ Everything is an observable stream
Rx - iOS dwa bratanki…
O CZYM POWIEM?
▸ O co chodzi z tym programowaniem reaktywnym?
▸ Everything is an observable stream
▸ Subjects
Rx - iOS dwa bratanki…
O CZYM POWIEM?
▸ O co chodzi z tym programowaniem reaktywnym?
▸ Everything is an observable stream
▸ Subjects
▸ Operatory
Rx - iOS dwa bratanki…
O CZYM POWIEM?
▸ O co chodzi z tym programowaniem reaktywnym?
▸ Everything is an observable stream
▸ Subjects
▸ Operatory
▸ Tips n’ Tricks
Rx - iOS dwa bratanki…
PROGRAMOWANIE REAKTYWNE
Rx - iOS dwa bratanki…
PROGRAMOWANIE REAKTYWNE
▸ Kolejny paradygmat programowania…
Rx - iOS dwa bratanki…
PROGRAMOWANIE REAKTYWNE
▸ Kolejny paradygmat programowania…
▸ Opiera się na asynchronicznym przekazywaniu sygnałów
między obserwatorem a zainteresowanymi
Rx - iOS dwa bratanki…
PROGRAMOWANIE REAKTYWNE
▸ Kolejny paradygmat programowania…
▸ Opiera się na asynchronicznym przekazywaniu sygnałów
między obserwatorem a zainteresowanymi
▸ Dużo sznureczków i kropeczek…
Rx - iOS dwa bratanki…
PROGRAMOWANIE REAKTYWNE
▸ Kolejny paradygmat programowania…
▸ Opiera się na asynchronicznym przekazywaniu sygnałów
między obserwatorem a zainteresowanymi
▸ Dużo sznureczków i kropeczek…
Rx - iOS dwa bratanki…
RX MARBLES
Rx - iOS dwa bratanki…
RX MARBLES
Rx - iOS dwa bratanki…
RX MARBLES
Rx - iOS dwa bratanki…
EVERYTHING IS AN OBSERVABLE STREAM
Rx - iOS dwa bratanki…
EVERYTHING IS AN OBSERVABLE STREAM
Rx - iOS dwa bratanki…
EVERYTHING IS AN OBSERVABLE STREAM
Rx - iOS dwa bratanki…
EVERYTHING IS AN OBSERVABLE STREAM
Rx - iOS dwa bratanki…
EVERYTHING IS AN OBSERVABLE STREAM
Rx - iOS dwa bratanki…
EVERYTHING IS AN OBSERVABLE STREAM
▸ Observable… observable… wszędzie observable….
Rx - iOS dwa bratanki…
EVERYTHING IS AN OBSERVABLE STREAM
▸ Observable… observable… wszędzie observable….
Rx - iOS dwa bratanki…
EVERYTHING IS AN OBSERVABLE STREAM
▸ Observable… observable… wszędzie observable….
Rx - iOS dwa bratanki…
SUBJECTS
Rx - iOS dwa bratanki…
SUBJECTS
▸ PublishSubject
Rx - iOS dwa bratanki…
SUBJECTS
▸ PublishSubject
▸ BehaviorSubject
Rx - iOS dwa bratanki…
SUBJECTS
▸ PublishSubject
▸ BehaviorSubject
▸ ReplaySubject
Rx - iOS dwa bratanki…
SUBJECTS
▸ PublishSubject
▸ BehaviorSubject
▸ ReplaySubject
▸ Variable
Rx - iOS dwa bratanki…
PUBLISH SUBJECT
Rx - iOS dwa bratanki…
PUBLISH SUBJECT
▸ Przy inicjalizacji są puste i przekazują dalej tylko nowe
elementy
Rx - iOS dwa bratanki…
PUBLISH SUBJECT
▸ Przy inicjalizacji są puste i przekazują dalej tylko nowe
elementy
Rx - iOS dwa bratanki…
PUBLISH SUBJECT
▸ Przy inicjalizacji są puste i przekazują dalej tylko nowe
elementy
Rx - iOS dwa bratanki…
BEHAVIOR SUBJECT
Rx - iOS dwa bratanki…
BEHAVIOR SUBJECT
▸ Do inicjalizacji konieczne jest podanie wartości startowej,
po zasubskrybowaniu powtarza ostatnią wartość
Rx - iOS dwa bratanki…
BEHAVIOR SUBJECT
▸ Do inicjalizacji konieczne jest podanie wartości startowej,
po zasubskrybowaniu powtarza ostatnią wartość
Rx - iOS dwa bratanki…
BEHAVIOR SUBJECT
▸ Do inicjalizacji konieczne jest podanie wartości startowej,
po zasubskrybowaniu powtarza ostatnią wartość
Rx - iOS dwa bratanki…
REPLAY SUBJECTS
Rx - iOS dwa bratanki…
REPLAY SUBJECTS
▸ Inicjalizacja wymaga podania rozmiaru tego obiektu. Po
każdej subskrypcji wszystkie elementy będą zawsze
powtarzane.
Rx - iOS dwa bratanki…
REPLAY SUBJECTS
▸ Inicjalizacja wymaga podania rozmiaru tego obiektu. Po
każdej subskrypcji wszystkie elementy będą zawsze
powtarzane.
Rx - iOS dwa bratanki…
REPLAY SUBJECTS
▸ Inicjalizacja wymaga podania rozmiaru tego obiektu. Po
każdej subskrypcji wszystkie elementy będą zawsze
powtarzane.
Rx - iOS dwa bratanki…
VARIABLE
Rx - iOS dwa bratanki…
VARIABLE
▸ Obudowanie na Behavior Subject - zachowuje się tak
samo ale przechowuje obecny stan - Value, który
dodatkowo daje możliwość edycji elementów jak zwykły
Array
Rx - iOS dwa bratanki…
VARIABLE
▸ Obudowanie na Behavior Subject - zachowuje się tak
samo ale przechowuje obecny stan - Value, który
dodatkowo daje możliwość edycji elementów jak zwykły
Array
Rx - iOS dwa bratanki…
VARIABLE
▸ Obudowanie na Behavior Subject - zachowuje się tak
samo ale przechowuje obecny stan - Value, który
dodatkowo daje możliwość edycji elementów jak zwykły
Array
Rx - iOS dwa bratanki…
OPERATORY
Rx - iOS dwa bratanki…
OPERATORY
▸ Filtrujące
Rx - iOS dwa bratanki…
OPERATORY
▸ Filtrujące
▸ Transformujące
Rx - iOS dwa bratanki…
OPERATORY
▸ Filtrujące
▸ Transformujące
▸ Złączające
Rx - iOS dwa bratanki…
OPERATORY FILTRUJĄCE
Rx - iOS dwa bratanki…
OPERATORY FILTRUJĄCE
▸ Distinct
Rx - iOS dwa bratanki…
OPERATORY FILTRUJĄCE
▸ Distinct
▸ ElementAt
Rx - iOS dwa bratanki…
OPERATORY FILTRUJĄCE
▸ Distinct
▸ ElementAt
▸ Throttle
Rx - iOS dwa bratanki…
OPERATORY FILTRUJĄCE
▸ Distinct
▸ ElementAt
▸ Throttle
▸ Debounce
Rx - iOS dwa bratanki…
OPERATORY FILTRUJĄCE
▸ Distinct
▸ ElementAt
▸ Throttle
▸ Debounce
Rx - iOS dwa bratanki…
OPERATORY TRANSFORMUJĄCE
Rx - iOS dwa bratanki…
OPERATORY TRANSFORMUJĄCE
▸ Map
Rx - iOS dwa bratanki…
OPERATORY TRANSFORMUJĄCE
▸ Map
▸ FlatMap
Rx - iOS dwa bratanki…
OPERATORY TRANSFORMUJĄCE
▸ Map
▸ FlatMap
▸ FlatMapLatest
Rx - iOS dwa bratanki…
OPERATORY TRANSFORMUJĄCE
▸ Map
▸ FlatMap
▸ FlatMapLatest
▸ GroupBy
Rx - iOS dwa bratanki…
OPERATORY TRANSFORMUJĄCE - FLATMAP
Rx - iOS dwa bratanki…
OPERATORY TRANSFORMUJĄCE - FLATMAP
Rx - iOS dwa bratanki…
OPERATORY TRANSFORMUJĄCE - FLATMAP
Rx - iOS dwa bratanki…
OPERATORY ZŁĄCZAJĄCE
Rx - iOS dwa bratanki…
OPERATORY ZŁĄCZAJĄCE
▸ Concat
Rx - iOS dwa bratanki…
OPERATORY ZŁĄCZAJĄCE
▸ Concat
▸ CombineLatest
Rx - iOS dwa bratanki…
OPERATORY ZŁĄCZAJĄCE
▸ Concat
▸ CombineLatest
Rx - iOS dwa bratanki…
OPERATORY ZŁĄCZAJĄCE
▸ Concat
▸ CombineLatest
▸ Merge
Rx - iOS dwa bratanki…
OPERATORY ZŁĄCZAJĄCE
▸ Concat
▸ CombineLatest
▸ Merge
Rx - iOS dwa bratanki…
OPERATORY ZŁĄCZAJĄCE
▸ Concat
▸ CombineLatest
▸ Merge
▸ Zip
Rx - iOS dwa bratanki…
Requests Chaining - zip
Rx - iOS dwa bratanki…
Requests Chaining - zip
Rx - iOS dwa bratanki…
RxCocoa
Rx - iOS dwa bratanki…
RxCocoa
▸ Obserwowanie zmian w UI
Rx - iOS dwa bratanki…
RxCocoa
▸ Obserwowanie zmian w UI
Rx - iOS dwa bratanki…
RxCocoa
▸ Obserwowanie zmian w UI
Rx - iOS dwa bratanki…
RxAnimatableDataSource
Rx - iOS dwa bratanki…
RxAnimatableDataSource
▸ Bindowanie danych bezpośrednio do tabeli
Rx - iOS dwa bratanki…
RxAnimatableDataSource
▸ Bindowanie danych bezpośrednio do tabeli
▸ Animacje przy edycji wierszy
Rx - iOS dwa bratanki…
RxAnimatableDataSource
▸ Bindowanie danych bezpośrednio do tabeli
▸ Animacje przy edycji wierszy
▸ Krótszy kod w porównaniu do UITableViewDataSource
Rx - iOS dwa bratanki…
Bonus
Rx - iOS dwa bratanki…
Bonus
▸ RxMoya
▸ RxAlamofire
▸ I inne…
Rx - iOS dwa bratanki…
Bonus
▸ RxMoya
▸ RxAlamofire
▸ I inne…
Rx - iOS dwa bratanki…
PODSUMOWANIE
Rx - iOS dwa bratanki…
PODSUMOWANIE
+
Rx - iOS dwa bratanki…
PODSUMOWANIE
▸ Wieloplatformowa idea
+
Rx - iOS dwa bratanki…
PODSUMOWANIE
▸ Wieloplatformowa idea
▸ Mniej kodu
+
Rx - iOS dwa bratanki…
PODSUMOWANIE
▸ Wieloplatformowa idea
▸ Mniej kodu
▸ Asynchroniczne działanie
+
Rx - iOS dwa bratanki…
PODSUMOWANIE
▸ Wieloplatformowa idea
▸ Mniej kodu
▸ Asynchroniczne działanie
▸ Sporo praktycznych
dodatków
przyspieszających pracę
+
Rx - iOS dwa bratanki…
PODSUMOWANIE
▸ Wieloplatformowa idea
▸ Mniej kodu
▸ Asynchroniczne działanie
▸ Sporo praktycznych
dodatków
przyspieszających pracę
▸ Wiele popularnych
bibliotek wspiera Rx
+
Rx - iOS dwa bratanki…
PODSUMOWANIE
▸ Wieloplatformowa idea
▸ Mniej kodu
▸ Asynchroniczne działanie
▸ Sporo praktycznych
dodatków
przyspieszających pracę
▸ Wiele popularnych
bibliotek wspiera Rx
+ -
Rx - iOS dwa bratanki…
PODSUMOWANIE
▸ Wieloplatformowa idea
▸ Mniej kodu
▸ Asynchroniczne działanie
▸ Sporo praktycznych
dodatków
przyspieszających pracę
▸ Wiele popularnych
bibliotek wspiera Rx
▸ Wysoki próg wejścia
+ -
Rx - iOS dwa bratanki…
PODSUMOWANIE
▸ Wieloplatformowa idea
▸ Mniej kodu
▸ Asynchroniczne działanie
▸ Sporo praktycznych
dodatków
przyspieszających pracę
▸ Wiele popularnych
bibliotek wspiera Rx
▸ Wysoki próg wejścia
▸ Specyficzny kod
+ -
Rx - iOS dwa bratanki…
PODSUMOWANIE
▸ Wieloplatformowa idea
▸ Mniej kodu
▸ Asynchroniczne działanie
▸ Sporo praktycznych
dodatków
przyspieszających pracę
▸ Wiele popularnych
bibliotek wspiera Rx
▸ Wysoki próg wejścia
▸ Specyficzny kod
▸ Trudniejsze
debugowanie
+ -
Rx - iOS dwa bratanki…
ŹRÓDŁA I PRZYKŁADY
▸ http://reactivex.io/
▸ https://github.com/ReactiveX/RxSwift
▸ https://github.com/RxSwiftCommunity
▸ https://itunes.apple.com/pl/app/rxmarbles/
id1087272442?l=pl&mt=8
▸ http://adamborek.com
▸ http://rxswift-slack.herokuapp.com
Q&A

More Related Content

More from The Software House

More from The Software House (20)

Feature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptFeature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScript
 
Typowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptTypowanie nominalne w TypeScript
Typowanie nominalne w TypeScript
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
 
Serverless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychServerless Compose vs hurtownia danych
Serverless Compose vs hurtownia danych
 
Testy API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciTesty API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięci
 
Jak skutecznie read model. Case study
Jak skutecznie read model. Case studyJak skutecznie read model. Case study
Jak skutecznie read model. Case study
 
Firestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejFirestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny Krzemowej
 
Jak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachJak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzach
 
Jak poskromić AWS?
Jak poskromić AWS?Jak poskromić AWS?
Jak poskromić AWS?
 
O łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsO łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.js
 
Amazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeAmazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurze
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki kodu
 
Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?Co QA może i czego nie powinien się bać?
Co QA może i czego nie powinien się bać?
 
Zmigrujmy 30 tys. użytkowników ze starego systemu. Co może pójść nie tak?
Zmigrujmy 30 tys. użytkowników ze starego systemu. Co może pójść nie tak?Zmigrujmy 30 tys. użytkowników ze starego systemu. Co może pójść nie tak?
Zmigrujmy 30 tys. użytkowników ze starego systemu. Co może pójść nie tak?
 
Pierwsza wycieczka nad jezioro (danych)
Pierwsza wycieczka nad jezioro (danych)Pierwsza wycieczka nad jezioro (danych)
Pierwsza wycieczka nad jezioro (danych)
 
A w więc chcesz zostać frontend developerem?
A w więc chcesz zostać frontend developerem?A w więc chcesz zostać frontend developerem?
A w więc chcesz zostać frontend developerem?
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornych
 
Komunikacja oparta o zdarzenia z wykorzystaniem AWS Event Bridge
Komunikacja oparta o zdarzenia z wykorzystaniem AWS Event BridgeKomunikacja oparta o zdarzenia z wykorzystaniem AWS Event Bridge
Komunikacja oparta o zdarzenia z wykorzystaniem AWS Event Bridge
 
DIY: React.js od zera
DIY: React.js od zeraDIY: React.js od zera
DIY: React.js od zera
 
Jak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsJak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.js
 

Rx iOS dwa bratanki

  • 1. Rx - iOS dwa bratanki… PIOTR GUZIA
  • 2. Rx - iOS dwa bratanki… KIM JESTEM….? ZWYCIĘZCĄ!!! ▸ iOS Developer 20 miesięcy ▸ .NET Developer 30 miesięcy ▸ Muzyk 157 miesięcy ▸ @: guziaster@gmail.com ▸ github.com/guziaster
  • 3. Rx - iOS dwa bratanki… O CZYM POWIEM?
  • 4. Rx - iOS dwa bratanki… O CZYM POWIEM? ▸ O co chodzi z tym programowaniem reaktywnym?
  • 5. Rx - iOS dwa bratanki… O CZYM POWIEM? ▸ O co chodzi z tym programowaniem reaktywnym? ▸ Everything is an observable stream
  • 6. Rx - iOS dwa bratanki… O CZYM POWIEM? ▸ O co chodzi z tym programowaniem reaktywnym? ▸ Everything is an observable stream ▸ Subjects
  • 7. Rx - iOS dwa bratanki… O CZYM POWIEM? ▸ O co chodzi z tym programowaniem reaktywnym? ▸ Everything is an observable stream ▸ Subjects ▸ Operatory
  • 8. Rx - iOS dwa bratanki… O CZYM POWIEM? ▸ O co chodzi z tym programowaniem reaktywnym? ▸ Everything is an observable stream ▸ Subjects ▸ Operatory ▸ Tips n’ Tricks
  • 9. Rx - iOS dwa bratanki… PROGRAMOWANIE REAKTYWNE
  • 10. Rx - iOS dwa bratanki… PROGRAMOWANIE REAKTYWNE ▸ Kolejny paradygmat programowania…
  • 11. Rx - iOS dwa bratanki… PROGRAMOWANIE REAKTYWNE ▸ Kolejny paradygmat programowania… ▸ Opiera się na asynchronicznym przekazywaniu sygnałów między obserwatorem a zainteresowanymi
  • 12. Rx - iOS dwa bratanki… PROGRAMOWANIE REAKTYWNE ▸ Kolejny paradygmat programowania… ▸ Opiera się na asynchronicznym przekazywaniu sygnałów między obserwatorem a zainteresowanymi ▸ Dużo sznureczków i kropeczek…
  • 13. Rx - iOS dwa bratanki… PROGRAMOWANIE REAKTYWNE ▸ Kolejny paradygmat programowania… ▸ Opiera się na asynchronicznym przekazywaniu sygnałów między obserwatorem a zainteresowanymi ▸ Dużo sznureczków i kropeczek…
  • 14. Rx - iOS dwa bratanki… RX MARBLES
  • 15. Rx - iOS dwa bratanki… RX MARBLES
  • 16. Rx - iOS dwa bratanki… RX MARBLES
  • 17. Rx - iOS dwa bratanki… EVERYTHING IS AN OBSERVABLE STREAM
  • 18. Rx - iOS dwa bratanki… EVERYTHING IS AN OBSERVABLE STREAM
  • 19. Rx - iOS dwa bratanki… EVERYTHING IS AN OBSERVABLE STREAM
  • 20. Rx - iOS dwa bratanki… EVERYTHING IS AN OBSERVABLE STREAM
  • 21. Rx - iOS dwa bratanki… EVERYTHING IS AN OBSERVABLE STREAM
  • 22. Rx - iOS dwa bratanki… EVERYTHING IS AN OBSERVABLE STREAM ▸ Observable… observable… wszędzie observable….
  • 23. Rx - iOS dwa bratanki… EVERYTHING IS AN OBSERVABLE STREAM ▸ Observable… observable… wszędzie observable….
  • 24. Rx - iOS dwa bratanki… EVERYTHING IS AN OBSERVABLE STREAM ▸ Observable… observable… wszędzie observable….
  • 25. Rx - iOS dwa bratanki… SUBJECTS
  • 26. Rx - iOS dwa bratanki… SUBJECTS ▸ PublishSubject
  • 27. Rx - iOS dwa bratanki… SUBJECTS ▸ PublishSubject ▸ BehaviorSubject
  • 28. Rx - iOS dwa bratanki… SUBJECTS ▸ PublishSubject ▸ BehaviorSubject ▸ ReplaySubject
  • 29. Rx - iOS dwa bratanki… SUBJECTS ▸ PublishSubject ▸ BehaviorSubject ▸ ReplaySubject ▸ Variable
  • 30. Rx - iOS dwa bratanki… PUBLISH SUBJECT
  • 31. Rx - iOS dwa bratanki… PUBLISH SUBJECT ▸ Przy inicjalizacji są puste i przekazują dalej tylko nowe elementy
  • 32. Rx - iOS dwa bratanki… PUBLISH SUBJECT ▸ Przy inicjalizacji są puste i przekazują dalej tylko nowe elementy
  • 33. Rx - iOS dwa bratanki… PUBLISH SUBJECT ▸ Przy inicjalizacji są puste i przekazują dalej tylko nowe elementy
  • 34. Rx - iOS dwa bratanki… BEHAVIOR SUBJECT
  • 35. Rx - iOS dwa bratanki… BEHAVIOR SUBJECT ▸ Do inicjalizacji konieczne jest podanie wartości startowej, po zasubskrybowaniu powtarza ostatnią wartość
  • 36. Rx - iOS dwa bratanki… BEHAVIOR SUBJECT ▸ Do inicjalizacji konieczne jest podanie wartości startowej, po zasubskrybowaniu powtarza ostatnią wartość
  • 37. Rx - iOS dwa bratanki… BEHAVIOR SUBJECT ▸ Do inicjalizacji konieczne jest podanie wartości startowej, po zasubskrybowaniu powtarza ostatnią wartość
  • 38. Rx - iOS dwa bratanki… REPLAY SUBJECTS
  • 39. Rx - iOS dwa bratanki… REPLAY SUBJECTS ▸ Inicjalizacja wymaga podania rozmiaru tego obiektu. Po każdej subskrypcji wszystkie elementy będą zawsze powtarzane.
  • 40. Rx - iOS dwa bratanki… REPLAY SUBJECTS ▸ Inicjalizacja wymaga podania rozmiaru tego obiektu. Po każdej subskrypcji wszystkie elementy będą zawsze powtarzane.
  • 41. Rx - iOS dwa bratanki… REPLAY SUBJECTS ▸ Inicjalizacja wymaga podania rozmiaru tego obiektu. Po każdej subskrypcji wszystkie elementy będą zawsze powtarzane.
  • 42. Rx - iOS dwa bratanki… VARIABLE
  • 43. Rx - iOS dwa bratanki… VARIABLE ▸ Obudowanie na Behavior Subject - zachowuje się tak samo ale przechowuje obecny stan - Value, który dodatkowo daje możliwość edycji elementów jak zwykły Array
  • 44. Rx - iOS dwa bratanki… VARIABLE ▸ Obudowanie na Behavior Subject - zachowuje się tak samo ale przechowuje obecny stan - Value, który dodatkowo daje możliwość edycji elementów jak zwykły Array
  • 45. Rx - iOS dwa bratanki… VARIABLE ▸ Obudowanie na Behavior Subject - zachowuje się tak samo ale przechowuje obecny stan - Value, który dodatkowo daje możliwość edycji elementów jak zwykły Array
  • 46. Rx - iOS dwa bratanki… OPERATORY
  • 47. Rx - iOS dwa bratanki… OPERATORY ▸ Filtrujące
  • 48. Rx - iOS dwa bratanki… OPERATORY ▸ Filtrujące ▸ Transformujące
  • 49. Rx - iOS dwa bratanki… OPERATORY ▸ Filtrujące ▸ Transformujące ▸ Złączające
  • 50. Rx - iOS dwa bratanki… OPERATORY FILTRUJĄCE
  • 51. Rx - iOS dwa bratanki… OPERATORY FILTRUJĄCE ▸ Distinct
  • 52. Rx - iOS dwa bratanki… OPERATORY FILTRUJĄCE ▸ Distinct ▸ ElementAt
  • 53. Rx - iOS dwa bratanki… OPERATORY FILTRUJĄCE ▸ Distinct ▸ ElementAt ▸ Throttle
  • 54. Rx - iOS dwa bratanki… OPERATORY FILTRUJĄCE ▸ Distinct ▸ ElementAt ▸ Throttle ▸ Debounce
  • 55. Rx - iOS dwa bratanki… OPERATORY FILTRUJĄCE ▸ Distinct ▸ ElementAt ▸ Throttle ▸ Debounce
  • 56. Rx - iOS dwa bratanki… OPERATORY TRANSFORMUJĄCE
  • 57. Rx - iOS dwa bratanki… OPERATORY TRANSFORMUJĄCE ▸ Map
  • 58. Rx - iOS dwa bratanki… OPERATORY TRANSFORMUJĄCE ▸ Map ▸ FlatMap
  • 59. Rx - iOS dwa bratanki… OPERATORY TRANSFORMUJĄCE ▸ Map ▸ FlatMap ▸ FlatMapLatest
  • 60. Rx - iOS dwa bratanki… OPERATORY TRANSFORMUJĄCE ▸ Map ▸ FlatMap ▸ FlatMapLatest ▸ GroupBy
  • 61. Rx - iOS dwa bratanki… OPERATORY TRANSFORMUJĄCE - FLATMAP
  • 62. Rx - iOS dwa bratanki… OPERATORY TRANSFORMUJĄCE - FLATMAP
  • 63. Rx - iOS dwa bratanki… OPERATORY TRANSFORMUJĄCE - FLATMAP
  • 64. Rx - iOS dwa bratanki… OPERATORY ZŁĄCZAJĄCE
  • 65. Rx - iOS dwa bratanki… OPERATORY ZŁĄCZAJĄCE ▸ Concat
  • 66. Rx - iOS dwa bratanki… OPERATORY ZŁĄCZAJĄCE ▸ Concat ▸ CombineLatest
  • 67. Rx - iOS dwa bratanki… OPERATORY ZŁĄCZAJĄCE ▸ Concat ▸ CombineLatest
  • 68. Rx - iOS dwa bratanki… OPERATORY ZŁĄCZAJĄCE ▸ Concat ▸ CombineLatest ▸ Merge
  • 69. Rx - iOS dwa bratanki… OPERATORY ZŁĄCZAJĄCE ▸ Concat ▸ CombineLatest ▸ Merge
  • 70. Rx - iOS dwa bratanki… OPERATORY ZŁĄCZAJĄCE ▸ Concat ▸ CombineLatest ▸ Merge ▸ Zip
  • 71. Rx - iOS dwa bratanki… Requests Chaining - zip
  • 72. Rx - iOS dwa bratanki… Requests Chaining - zip
  • 73. Rx - iOS dwa bratanki… RxCocoa
  • 74. Rx - iOS dwa bratanki… RxCocoa ▸ Obserwowanie zmian w UI
  • 75. Rx - iOS dwa bratanki… RxCocoa ▸ Obserwowanie zmian w UI
  • 76. Rx - iOS dwa bratanki… RxCocoa ▸ Obserwowanie zmian w UI
  • 77. Rx - iOS dwa bratanki… RxAnimatableDataSource
  • 78. Rx - iOS dwa bratanki… RxAnimatableDataSource ▸ Bindowanie danych bezpośrednio do tabeli
  • 79. Rx - iOS dwa bratanki… RxAnimatableDataSource ▸ Bindowanie danych bezpośrednio do tabeli ▸ Animacje przy edycji wierszy
  • 80. Rx - iOS dwa bratanki… RxAnimatableDataSource ▸ Bindowanie danych bezpośrednio do tabeli ▸ Animacje przy edycji wierszy ▸ Krótszy kod w porównaniu do UITableViewDataSource
  • 81. Rx - iOS dwa bratanki… Bonus
  • 82. Rx - iOS dwa bratanki… Bonus ▸ RxMoya ▸ RxAlamofire ▸ I inne…
  • 83. Rx - iOS dwa bratanki… Bonus ▸ RxMoya ▸ RxAlamofire ▸ I inne…
  • 84. Rx - iOS dwa bratanki… PODSUMOWANIE
  • 85. Rx - iOS dwa bratanki… PODSUMOWANIE +
  • 86. Rx - iOS dwa bratanki… PODSUMOWANIE ▸ Wieloplatformowa idea +
  • 87. Rx - iOS dwa bratanki… PODSUMOWANIE ▸ Wieloplatformowa idea ▸ Mniej kodu +
  • 88. Rx - iOS dwa bratanki… PODSUMOWANIE ▸ Wieloplatformowa idea ▸ Mniej kodu ▸ Asynchroniczne działanie +
  • 89. Rx - iOS dwa bratanki… PODSUMOWANIE ▸ Wieloplatformowa idea ▸ Mniej kodu ▸ Asynchroniczne działanie ▸ Sporo praktycznych dodatków przyspieszających pracę +
  • 90. Rx - iOS dwa bratanki… PODSUMOWANIE ▸ Wieloplatformowa idea ▸ Mniej kodu ▸ Asynchroniczne działanie ▸ Sporo praktycznych dodatków przyspieszających pracę ▸ Wiele popularnych bibliotek wspiera Rx +
  • 91. Rx - iOS dwa bratanki… PODSUMOWANIE ▸ Wieloplatformowa idea ▸ Mniej kodu ▸ Asynchroniczne działanie ▸ Sporo praktycznych dodatków przyspieszających pracę ▸ Wiele popularnych bibliotek wspiera Rx + -
  • 92. Rx - iOS dwa bratanki… PODSUMOWANIE ▸ Wieloplatformowa idea ▸ Mniej kodu ▸ Asynchroniczne działanie ▸ Sporo praktycznych dodatków przyspieszających pracę ▸ Wiele popularnych bibliotek wspiera Rx ▸ Wysoki próg wejścia + -
  • 93. Rx - iOS dwa bratanki… PODSUMOWANIE ▸ Wieloplatformowa idea ▸ Mniej kodu ▸ Asynchroniczne działanie ▸ Sporo praktycznych dodatków przyspieszających pracę ▸ Wiele popularnych bibliotek wspiera Rx ▸ Wysoki próg wejścia ▸ Specyficzny kod + -
  • 94. Rx - iOS dwa bratanki… PODSUMOWANIE ▸ Wieloplatformowa idea ▸ Mniej kodu ▸ Asynchroniczne działanie ▸ Sporo praktycznych dodatków przyspieszających pracę ▸ Wiele popularnych bibliotek wspiera Rx ▸ Wysoki próg wejścia ▸ Specyficzny kod ▸ Trudniejsze debugowanie + -
  • 95. Rx - iOS dwa bratanki… ŹRÓDŁA I PRZYKŁADY ▸ http://reactivex.io/ ▸ https://github.com/ReactiveX/RxSwift ▸ https://github.com/RxSwiftCommunity ▸ https://itunes.apple.com/pl/app/rxmarbles/ id1087272442?l=pl&mt=8 ▸ http://adamborek.com ▸ http://rxswift-slack.herokuapp.com
  • 96. Q&A