Oggetti osservabili
Fa parte della sezione Introduzione a SwiftUI del percorso Swift di Coddy. Lezione 40 di 50.
I dati condivisi da più viste, o che hanno una propria logica, vanno inseriti in una classe. Questa si conforma a ObservableObject e ogni proprietà visualizzata sullo schermo è contrassegnata con @Published:
class Cart: ObservableObject {
@Published var count = 0
func add() {
count += 1
}
}La vista che crea l'oggetto lo memorizza con @StateObject. SwiftUI mantiene vivo quell'oggetto mentre la vista è sullo schermo e ridisegna la vista ogni volta che una proprietà pubblicata cambia:
struct ContentView: View {
@StateObject private var cart = Cart()
var body: some View {
VStack {
Text("Items: \(cart.count)")
Button("Add to cart") {
cart.add()
}
}
}
}Una vista figlia che riceve un oggetto esistente dal suo genitore lo contrassegna invece con @ObservedObject: osserva l’oggetto, ma non ne è proprietaria.
Sfida
MedioLa classe Scoreboard non è collegata allo schermo. Rendila un ObservableObject con @Published points, conservala in ContentView con @StateObject e fai in modo che il pulsante chiami scoreboard.score(). Il testo deve essere Points: 10 dopo un tocco.
Provalo tu
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Introduzione a SwiftUI
7Elenchi
Per ogni elementoElementi identificabiliElencoAggiungere elementiRiepilogo - Lista della spesa10Progetto - Coddy Coffee
Panoramica del progettoSchermate delle bevande2Mostrare contenuti
Viste di testoNumeri nel testoFontColoriSF SymbolsRiepilogo - Etichetta del prezzo5Stato e pulsanti
PulsantiLa proprietà @StateStato vero o falsoViste condizionaliRiepilogo - Segnapunti9Condivisione dei dati
La proprietà @BindingOggetti osservabiliOggetti dell’ambienteRiepilogo - Contatore di passiEsercitati da solo: Playground SwiftUI