Une partie du travail d'initaliation d'une structure, par exemple ContentView, peut être effectuée dans un constructeur.
En Swift, le constructeur s'appelle init().
Il s'agit d'un excellent endroit pour effectuer des tâches initiales, par exemple donner une valeur à des variables locales, à des variables d'état ou encore à des constantes.
struct ContentView: View {
var uneVariable: String
let uneConstante: String
@State private var uneVariableDEtat: String
init() {
uneVariable = "Un"
uneConstante = "Deux"
uneVariableDEtat = "Trois"
}
var body: some View {
VStack {
Text(uneVariable) // affiche Un
Text(uneConstante) // affiche Deux
Text(uneVariableDEtat) // affiche Trois
}
}
}
L'initialisation de variable d'état dans le init() pourrait poser problème dans certaines circonstantes. Il faudra à ce moment vous tourner vers .onAppear() pour effectuer le travail.
Le problème se posera notamment lorsque toutes les propriétés ont déjà reçu une valeur lors de leur déclaration.
struct ContentView: View {
var premierTexte: String = "déclaration"
@State private var deuxiemeTexte: String = "déclaration"
init() {
premierTexte = "initialisation" // cette ligne est toujours prise en compte car pas variable d'état
// si toutes les propriétés ont reçu une valeur à la déclaration, cette ligne n'est pas prise en compte
}
var body: some View {
VStack {
Text(premierTexte) // affiche initialisation
Text(deuxiemeTexte) // affiche déclaration
}
.padding()
}
}
▼Publicité