jakub kornatowski swiftui, czyli znowu wszystko od … · wykorzystaĆ potencjaŁ: swiftui &...
TRANSCRIPT
![Page 1: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/1.jpg)
SWIFTUI, CZYLI ZNOWU WSZYSTKO OD POCZĄTKU…
JAKUB KORNATOWSKI
![Page 2: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/2.jpg)
JAKUB KORNATOWSKI
POBIERZ PREZENTACJĘ
▸ https://swiftly.pl/4developers
![Page 3: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/3.jpg)
SWIFTUI… I CO DALEJ?FROM HERO TO ZERO?
![Page 4: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/4.jpg)
JAKUB KORNATOWSKI
PRÓG WEJŚCIA WG. JĘZYKÓW
OBJECTIVE-C SWIFT
![Page 5: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/5.jpg)
JAKUB KORNATOWSKI
PRÓG WEJŚCIA WG. JĘZYKÓW
OBJECTIVE-C SWIFT JS
![Page 6: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/6.jpg)
JAKUB KORNATOWSKI
PRÓG WEJŚCIA WG. FRAMEWORKÓW
APPKIT UIKIT SWIFTUI
![Page 7: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/7.jpg)
JAKUB KORNATOWSKI
PRÓG WEJŚCIA WG. FRAMEWORKÓW
APPKIT UIKIT SWIFTUI REACT JS
![Page 8: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/8.jpg)
![Page 9: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/9.jpg)
SWIFTUI… I CO DALEJ?
SWIFTUI
SWIFT 5.1 CATALYST
COMBINE
![Page 10: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/10.jpg)
SWIFTUI… I CO DALEJ?
SWIFTUI. BETTER APPS. LESS CODE.
▸ SwiftUI is an innovative, exceptionally simple way to build user interfaces across all Apple platforms with the power of Swift. Build user interfaces for any Apple device using just one set of tools and APIs. With a declarative Swift syntax that’s easy to read and natural to write, SwiftUI works seamlessly with new Xcode design tools to keep your code and design perfectly in sync. Automatic support for Dynamic Type, Dark Mode, localization, and accessibility means your first line of SwiftUI code is already the most powerful UI code you’ve ever written.
https://developer.apple.com/xcode/swiftui/
![Page 11: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/11.jpg)
SWIFTUI… I CO DALEJ?
PO CO I DLACZEGO?
▸ Uproszczenie procesu tworzenia UI.
▸ Uproszczenie tworzenia animacji.
▸ Wsparcie w tworzeniu architektury.
▸ Wprowadzenie deklaratywnego sposobu zapisu statycznego kodu.
▸ Natywne wsparcie dla programowania reaktywnego.
![Page 12: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/12.jpg)
SWIFTUI… I CO DALEJ?
CZY COMBINE JEST REAKTYWNY?
🤔
![Page 13: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/13.jpg)
SWIFTUI… I CO DALEJ?
▸ What? vs How?
▸ Jestem obok <nazwaSklepu>. Jak mam do Ciebie dojechać?
▸ I: Wyjedź zachodnim wyjazdem z parkingu, następnie skręć w aleje długą i jedź aż do komisariatu policji. Przed czerwonym budynkiem skręć w lewo w ulicę krótką. Po jakichś 200m będziesz pod moim blokiem.
▸ D: Mieszkam na ulicy Krótkiej 21, 00-123 w Warszawie.
PROGRAMOWANIE DEKLARATYWNE, NIE IMPERATYWNE
![Page 14: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/14.jpg)
SWIFTUI… I CO DALEJ?
PROGRAMOWANIE DEKLARATYWNE, NIE IMPERATYWNE
▸ What? vs How?
▸ Imperatywne: C, C++, Java
▸ Deklaratywne: HTML, SQL
▸ Mix: Swift, JS, C#, Python
![Page 15: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/15.jpg)
SWIFTUI… I CO DALEJ?
WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5
▸ SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany, żeby wykorzystać potencjał języka.
▸ DSL-like API.
▸ Deklaratywny sposób budowania warstw UI.
▸ Protocol-Oriented.
![Page 16: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/16.jpg)
SWIFTUI… I CO DALEJ?
SOME
struct ContentView: View { var body: View { Text("Hello, World!”) } }
![Page 17: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/17.jpg)
SWIFTUI… I CO DALEJ?
SOME
struct ContentView: View { var body: View { Text("Hello, World!”) } }
![Page 18: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/18.jpg)
SWIFTUI… I CO DALEJ?
SOME
struct ContentView: View { var body: Text { Text("Hello, World!") } }
struct ContentView: View { var body: some View { Text("Hello, World!") } }
👎
👍
![Page 19: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/19.jpg)
SWIFTUI… I CO DALEJ?
PROPERTY DELEGATES
struct SettingsView: View { @State var enableAutoSave: Bool
var body: some View { return VStack { Toggle(isOn: $enableAutoSave) { Text("Auto saving enabled!") } } } }
![Page 20: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/20.jpg)
SWIFTUI… I CO DALEJ?
PROPERTY DELEGATES
struct SettingsView: View { var enableAutoSave: State<Bool>
var body: some View { return VStack { Toggle(isOn: enableAutoSave.projectedValue) { Text("Auto saving enabled!") } } } }
![Page 21: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/21.jpg)
SWIFTUI… I CO DALEJ?
PROPERTY DELEGATES
struct SettingsView: View { var enableAutoSave: State<Bool>
var body: some View { return VStack { Toggle(isOn: enableAutoSave.projectedValue) { Text("Auto saving enabled!") } } } }
![Page 22: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/22.jpg)
REWRITE THE CODE
WE MUST
![Page 23: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/23.jpg)
UIKIT & SWIFTUICZYLI ZAADOPTUJ FRAMEWORK
![Page 24: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/24.jpg)
UIKIT & SWIFTUI
ADOPCJA
▸ Czy da się połączyć je ze sobą?
![Page 25: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/25.jpg)
UIKIT & SWIFTUI
ADOPCJA
▸ Czy da się połączyć je ze sobą?
▸ Jak?
![Page 26: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/26.jpg)
import UIKit import SwiftUI
![Page 27: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/27.jpg)
TO MOŻE JEDNAK PRZEPISAĆ?
![Page 28: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/28.jpg)
UIKIT & SWIFTUI
HOLD YOUR HORSES
▸ Stopniowe, powolne wdrażanie.
▸ Nie ma pośpiechu w integrowaniu nowości.
▸ oldBugs = newBugs
![Page 29: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/29.jpg)
UIKIT & SWIFTUI
MIESZAJ I ŁĄCZ
▸ Pełna interoperacyjność pomiędzy UIKit a SwiftUI
![Page 30: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/30.jpg)
UIViewController UIView
Representable Representable
![Page 31: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/31.jpg)
UIKIT & SWIFTUI
MIESZAJ I ŁĄCZ
▸ Pełna interoperacyjność pomiędzy UIKit a SwiftUI
struct SettingsView: View { @State var enableAutoSave: Bool
var body: some View { return VStack { Toggle(isOn: $enableAutoSave) { Text("Auto saving enabled!") } } } }
let vc = UIHostingController(rootView: SettingsView(enableAutoSave: true))
![Page 32: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/32.jpg)
UIKIT & SWIFTUI
IMPLEMENTACJA WSPÓŁMIERNA
▸ Nie zawsze nadbudowa jest możliwa
▸ Kompatybilność wsteczna
▸ ABSTRAKCJA
![Page 33: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/33.jpg)
UIKIT & SWIFTUI
protocol DetailsViewControllerFactory { func makeViewController(for details: Details) -> UIViewController }
struct DetailsViewControllerUiKitFactory: DetailsViewControllerFactory { func makeViewController(for details: Details) -> UIViewController { return DetailsViewController(detailsModel: details) } }
@available(iOS 13, *) struct DetailsViewControllerSwiftUIFactory: DetailsViewControllerFactory { func makeViewController(for details: Details) -> UIViewController { let view = DetailsView(details: details) return UIHostingController(rootView: view) } }
![Page 34: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/34.jpg)
UIKIT & SWIFTUI
let detailsViewControllerFactory: DetailsViewControllerFactory = { #if USE_SWIFT_UI if #available(iOS 13, *) { return DetailsViewControllerSwiftUIFactory() } #endif return DetailsViewControllerUiKitFactory() }()
![Page 35: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/35.jpg)
UIKIT & SWIFTUI
PROBLEMY WIEKU DZIECIĘCEGO
▸ Problemy z iOS 13 i Xcode 11
▸ Ograniczone pokrycie natywnego API
▸ Tylko dla iOS 13 / iPadOS / Catalina (polityka 2-letniego wsparcia)
▸ Support i dokumentacja!
![Page 36: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/36.jpg)
ARCHITEKTURAPO CO NAM TERAZ VIEWMODEL?
![Page 37: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/37.jpg)
ARCHITEKTURA
ARCHITEKTURA APLIKACJI W SWIFTUI
▸ SwiftUI to wyłącznie framework do budowania interfejsu użytkownika!
▸ Podejścia architektoniczne do budowania aplikacji na iOS nie zmieniają się znacząco.
▸ Nadal przestrzegamy S.O.L.I.D.nych praktyk, bez względu na język czy framework.
▸ Problem puchnących View Controller’ów nie znika, a migruje.
▸ “Can’t use Core Data with SwiftUI!”
![Page 38: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/38.jpg)
ARCHITEKTURA
MVC MVVMVIEW VIEW
VIEW CONTROLLER VIEW MODEL
MODEL MODEL
MANGERS
SWIFTUIVIEW
OBSERVABLE
MODEL
CORE OBJECTS
https://matteomanferdini.com/wp-content/uploads/2019/10/The-5-most-common-misconceptions-about-SwiftUI-Matteo-Manferdini.pdf
![Page 39: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/39.jpg)
ARCHITEKTURA
PYRAMID OF DOOMstruct DummyView: View { var body: some View { ZStack { Color.blue VStack { ForEach(0..<3) { _ in HStack { Text("Dummy”) Text("Text") } } } } } }
DUMMY TEXT DUMMY TEXT DUMMY TEXT
![Page 40: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/40.jpg)
ARCHITEKTURA
PYRAMID OF DOOMstruct DummyView: View { var body: some View { ZStack { Color.blue VStack { ForEach(0..<3) { _ in HStack { Text("Dummy”) Text("Text") } } } } } }
DUMMY TEXT DUMMY TEXT DUMMY TEXT
![Page 41: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/41.jpg)
ARCHITEKTURA
struct DummyView: View { var body: some View { ZStack { Color.black createVStack() } } func createVStack() -> some View { return VStack { ForEach(0..<3) { _ in self.createHStack() } } } func createHStack() -> some View { return HStack { Text("Dummy”) Text("Text") } } }
![Page 42: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/42.jpg)
BEZPIECZEŃSTWOLEPIEJ, CZY NIE LEPIEJ?
![Page 43: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/43.jpg)
BEZPIECZEŃSTWO
DOSTĘPNOŚĆ NARZĘDZI DO SZUKANIA PODATNOŚCI
▸ Najwięcej narzędzi dostępnych dla aplikacji napisanych w Objective-C, dostępnych na systemy 32-bitowe.
▸ Do czasów ABI Stability w Swift 5 - bardzo mało narzędzi do aplikacji pisanych w Swift.
▸ Im mniejsze wsparcie wsteczne, tym większe bezpieczeństwo (bo tym mniej dostępnych narzędzi).
![Page 44: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/44.jpg)
SWIFT COACHINGCZYLI CO DALEJ ZE MNĄ?
![Page 45: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/45.jpg)
DON’T PANIC
![Page 46: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/46.jpg)
SWIFT COACHING
![Page 47: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/47.jpg)
SWIFT COACHING
POCZĄTKUJĄCY
▸ Tak, to jest ten moment!
▸ Ale…
![Page 48: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/48.jpg)
SWIFT COACHING
REAKCJA NA ZMIANY - RYNEK VS DEVELOPER
▸ „And it would be grate if you have…”
▸ Adopcja w aktualnych rozwiązaniach chwilę potrwa.
▸ Czy sam chcę się rozwijać?
![Page 49: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/49.jpg)
SWIFT COACHING
20/80
▸ Reguła Pareto - 20% wysiłków daje 80% rezultatów - to samo w kontekście integracji nowości.
▸ Warto zacząć od przyswojenia odpowiednich 20%, aby zacząć je poprawnie implementować.
![Page 50: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/50.jpg)
SWIFT COACHING
https://mixpanel.com/trends/#report/ios_13
![Page 51: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/51.jpg)
WE HOPE THAT SWIFTUI CAN BE A STANDALONE LIBRARY WHICH IS SIMILAR TO SWIFT (BEFORE 5), JETPACK OR APPCOMPAT LIBRARY. IF IT IS BUNDLED IN IOS / MACOS, WE CANNOT USE IT FOR PRODUCTION FOR AT LEAST ONE YEAR SINCE IT’S FAR FROM MATURE NOW.
WildCat
SWIFT COACHING
https://forums.developer.apple.com/thread/123952
![Page 52: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/52.jpg)
SWIFTUI IS A STANDALONE LIBRARY NOW. IT LIVES IN /SYSTEM/LIBRARY/FRAMEWORKS/SWIFTUI.FRAMEWORK, AND IS DYNAMICALLY LINKED LIKE ANY OTHER FRAMEWORK, WITH THE STABLE SWIFT V5 ABI. OR DO YOU MEAN THAT IT WOULD BE AVAILABLE IN SOME FORMAT THAT YOU CAN INCLUDE IN YOUR APPLICATION BUNDLE AS A DEPENDENCY? THAT'S HIGHLY UNLIKELY, GIVEN THAT IT'S VERY DEPENDENT ON PARTICULAR VERSIONS OF THE OPERATING SYSTEM'S OTHER LIBRARIES; THERE'S GOING TO BE SOME SPECIAL SAUCE INSIDE UIKIT, AND SWIFTUI ALSO LINKS DIRECTLY AGAINST COREUI, WHICH IS THE PRIVATE FRAMEWORK THAT HANDLES 'THEME' RENDERING, I.E. THE LOOK & FEEL OF BUTTONS, BARS, ETC. ON EACH PLATFORM. REST ASSURED, THOUGH, THAT THE PACE OF IMPROVEMENT WILL BE BRISK. OF ALL THE TEAMS AT APPLE, THAT ONE HAS SOME OF THE ABSOLUTE BEST & BRIGHTEST WORKING ON IT. THERE ARE SOME ROUGH EDGES RIGHT NOW, BUT MOST CAN BE CIRCUMVENTED IN ONE WAY OR ANOTHER, PLUS YOU CAN ADOPT IT PIECEMEAL VIA UIHOSTINGCONTROLLER AND FRIENDS—IMPLEMENT A MODAL CONTROLLER'S CONTENT IN SWIFTUI, OR A SINGLE TAB IN A UITABVIEW, AND KEEP THE REST AS-IS.
Jim Dovey
SWIFT COACHING
https://forums.developer.apple.com/thread/123952
![Page 53: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/53.jpg)
SWIFT COACHING
INNOVATORS EARLY ADOPTERS EARLY MAJORITY LATE MAJORITY
Elixir Dart Ballerina
Swift Server-side Swift Go Rust Erlang Cloud-based IDE
Swift (for iOS) Python TypeScript C Updates
PHP Ruby JS
TRENDY W JĘZYKACH PROGRAMOWANIA Q3 2019 BY INFOQ
https://www.infoq.com/articles/programming-language-trends-2019/
![Page 54: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/54.jpg)
SWIFT COACHING
MOST LOVED ❤ JĘZYKI PROGRAMOWANIA BY STACKOVERFLOW
RUST
PYTHON
TYPESCRIPT
KOTLIN
WEBASSEMBLY
SWIFT
CLOJURE
0 22,5 45 67,5 90https://insights.stackoverflow.com/survey/2019
![Page 55: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/55.jpg)
SWIFT COACHING
CO ROBIĆ?
▸ Poranna lektura - ulubione blogi (na końcu prezentacji)
▸ Side projects, Hackathony, Blogi
▸ Podcasty i YouTuby
▸ Powolne, ciche wsparcie w obecnych projektach…
▸ … tam gdzie jest to możliwe.
▸ Niech ludzie, który mają czas, zrobią coś za Ciebie!
![Page 56: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/56.jpg)
DON’T PANIC
![Page 57: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/57.jpg)
#GIFTFORSHARE
![Page 58: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/58.jpg)
#GIFTFORSHARE
@JKORNAT▸ FOLLOW & SHARE
![Page 59: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/59.jpg)
TO JUŻ PRAWIE KONIEC…
![Page 60: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/60.jpg)
NA KONIEC
POLECANE BLOGI I PODCASTY▸ Swiftly.pl (https://swiftly.pl) %
▸ Swift (https://swift.org)
▸ Swift By Sundell (https://www.swiftbysundell.com)
▸ SwiftLee (https://www.avanderlee.com)
▸ Matteo Manfredini (https://matteomanferdini.com)
▸ iOS Dev Weekly (https://iosdevweekly.com)
▸ Ray Wenderlich (https://www.raywenderlich.com)
▸ Andrew Bancroft (https://www.andrewcbancroft.com)
▸ Inside iOS Dev (https://podcasts.apple.com/us/podcast/inside-ios-dev/id1231805301)
▸ More Than Just Code (https://podcasts.apple.com/ca/podcast/mtjc-podcast-podcast-about/id906987516?mt=2)
▸ The iPhreaks Show (https://podcasts.apple.com/podcast/the-iphreaks-show/id634022060?mt=2)
![Page 61: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/61.jpg)
NA KONIEC
ŹRÓDŁA▸ https://swiftly.pl/wwdc-2019/#swiftui - Wspomnienia z WWDC %
▸ https://twitter.com/johnsundell/status/1136610561632980993 - Pyramid of Doom - Twitter
▸ https://github.com/apple/swift-evolution/blob/master/proposals/0244-opaque-result-types.md - Propozycja zmiany do Swift - dodanie ”Some”
▸ https://www.swiftbysundell.com/articles/shifting-paradigms-in-swift/ - Zmiana paradygmatu na nowy (przejście)
▸ https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both - Dlaczego jeszcze nie SwiftUI
▸ https://www.avanderlee.com/swift/combine/ - Wprowadzenie do Combine
▸ https://swiftly.pl/czym-jest-combine-framework/ - Czym jest Combine %
▸ https://matteomanferdini.com/wp-content/uploads/2019/10/The-5-most-common-misconceptions-about-SwiftUI-Matteo-Manferdini.pdf - Zmiany w architekturze po SwiftUI
▸ https://insights.stackoverflow.com/survey/2019 - Roczna ankieta Stack Overflow
▸ https://www.infoq.com/articles/programming-language-trends-2019/ - Trendy w językach programowania
▸ https://tylermcginnis.com/imperative-vs-declarative-programming/ - Deklaratywny sposób programowania
▸ https://medium.com/swlh/are-you-an-ios-x-expert-81eb9da3623a - Ciekawe spojrzenie na SwiftUI z perspektywy starego iOS'owego wyjadacza
▸ https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit - Praktyczny przykład łączenia SwiftUI z UIKit od samego Vendora
▸ https://mixpanel.com/trends/#report/ios_13 - Adaptacja użytkowników iOS 13 (updating)
▸ https://forums.developer.apple.com/thread/123952 - Wątek na forum Apple o SwiftUI
![Page 62: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec6d746423f72651c6c49b9/html5/thumbnails/62.jpg)
TERAZ KONIEC!MOŻNA KLASKAĆ!