Formation PUB900 : Développer une application pour iPhone avec SwiftUI, H-2024 Constructeur et onAppear()

25.1 init()


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.

SwiftUI

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
    }
  }
}

Cas des variables d'état

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.

SwiftUI

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
    deuxiemeTexte = "initialisation"   // 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é

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre