Formation PUB900 : Développer une application pour iPhone avec SwiftUI, H-2024 Le modèle

23.1 Gérer les données de l'application en mémoire (initialiser un tableau d'instances)


Lorsque l'application doit travailler avec des données, par exemple les items d'un catalogue, il est intéressant de créer un modèle pour définir ces données.

Le modèle représente la structure des données, un peu comme une table avec ses champs dans une base de données.

Dans le cas où l'application doit enregistrer les données dans une base de données locale ou distante, le modèle sera central dans le processus.

Définir un modèle

Le modèle peut être défini à différents endroits et porter n'importe quel nom mais pour mieux nous y retrouver, nous allons standardiser la nomemclature.

Dans un dossier nommé Models, chaque modèle sera défini dans un fichier dont le nom est en CassePascal et au singulier (ex : Item).

Pour créer le fichier du modèle, faites un clic droit sur le dossier Models, que vous aurez ajouté à la racine du projet, puis choisissez New Empty File.

La hiérarchie des fichiers ressemblera à ceci.

Dossier Models

Dans le fichier du modèle, les données seront définies dans une structure ou dans une classe. L'utilisation d'une structure est généralement plus simple mais l'utilisation d'une classe est requise si vous désirez enregistrer vos données à l'aide de SwiftData.

Le nom de la structure ou de la classe sera identique au nom du fichier.

Ceci n'est pas obligatoire mais si vous croyez que les instances d'un modèle pourraient être utilisées dans des listes (List), la structure ou la classe devra idéalement répondre au protocole Identifiable.

Pour répondre à ce protocole, il devra avoir une propriété nommée id dont la valeur définit chaque instance de façon unique.

Fichier Models/Item.swift (version structure)

struct Item: Identifiable {
  var id: Int
  var code: String
  var titre: String

  // les structures ont un constructeur par défaut
}

Fichier Models/Item.swift (version classe)

class Item: Identifiable {
  var id: Int
  var code: String
  var titre: String

  // le constructeur est requis dans une classe
  init(id: Int = 0, code: String = "", titre: String = "") {
    self.id = id
    self.code = code
    self.titre = titre
  }
}

Il est possible d'imbriquer des modèles. Par exemple, on pourrait avoir un modèle Panier dont une des propriété est de type Item.

Note : si le modèle utilise autre chose que des types primitifs, vous pourriez avoir un import à ajouter.

Fichier Models/Item.swift (version classe)

import SwiftUICore

struct Carte: Identifiable {
  var id: Int
  var couleur: Color
  var titre: String

  ...
}

Instancier un modèle

Pour créer une instance du modèle, on procédera comme suit :

Swift

let item = Item(id: 1, code: "abc", titre: "Une table")

Selon les besoins de l'application, on pourait avoir un tableau de modèles.

Swift

let items: [Item] = [
  Item(id: 1, code: "abc", titre: "Une table"),
  Item(id: 2, code: "def", titre: "Une chaise"),
  Item(id: 3, code: "ghi", titre: "Un lit")
]

Le tableau pourrait également être rempli au moment opportun.

Swift

var items: [Item] = []
...
items.append(Item(
  id: 1,
  code: "abc",
  titre: "Une table"
))

▼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