Bonjour tout le monde !
Aujourd'hui, nous allons plonger dans l'une des mises à jour les plus importantes présentées lors de la WWDC 2024 : SwiftData. SwiftData est un nouveau framework d'iOS 17 qui permet aux développeurs de modéliser et de conserver les données de leurs applications de manière efficace et sécurisée. J'ai donc décidé d'explorer un peu plus les fonctionnalités de SwiftData, et je vais tout vous expliquer de manière aussi simple que possible.
La seule façon de faire du bon travail est d'aimer ce que vous faites.
– Steve Jobs
Qu'est-ce que SwiftData?
SwiftData est comme une boîte magique qui nous aide à sauvegarder et organiser les informations dans nos applications. Imaginez que vous ayez un carnet où vous notez toutes vos choses préférées. SwiftData est comme ce carnet, mais sur votre iPhone ou iPad, et il peut faire bien plus que simplement stocker des notes.
Coder une simple application avec SwiftData
Disons que nous voulons créer une application appelée "Voyages" où nous consignons toutes nos idées de vacances. Nous utiliserons SwiftData pour enregistrer les informations sur chaque voyage. Voici un guide simple pour le réaliser.
Etape 1: créer le model "Trip"
Tout d'abord, nous devons créer un modèle pour représenter notre voyage. Un modèle est comme un plan pour les informations que nous voulons sauvegarder. Dans notre cas, chaque voyage a un nom, une destination, une date de début et une date de fin. Voici le code :
Etape 2: Configurer le Model Container
Le conteneur de modèle est comme une boîte qui contient tous nos modèles (dans ce cas, les voyages). Nous disons à notre application d'utiliser cette boîte pour savoir où chercher les informations.
<br> import SwiftUI<br> import SwiftData</p> <p>@main<br> struct TripsApp: App {<br> var container: ModelContainer = {<br> do {<br> let configuration = ModelConfiguration(schema: Schema([TripModel.self]))<br> return try ModelContainer(for: TripModel.self, configurations: configuration)<br> } catch {<br> fatalError("Failed to initialize model container: \(error)")<br> }<br> }()</p> <p> var body: some Scene {<br> WindowGroup {<br> ContentView()<br> .modelContainer(container)<br> }<br> }<br> }<br>
Etape 3: Afficher les Voyages
La ContentView est la vue principale qui liste tous les voyages et inclut une fonctionnalité de recherche.
<br> import SwiftUI<br> import SwiftData</p> <p>struct ContentView: View {<br> @State private var trips: [TripModel] = []<br> @State private var searchText = ""</p> <p> var body: some View {<br> NavigationView {<br> List {<br> ForEach(trips.filter {<br> searchText.isEmpty || $0.name.localizedStandardContains(searchText) || $0.destination.localizedStandardContains(searchText)<br> }, id: \.self) { trip in<br> NavigationLink(destination: TripDetail(trip: trip)) {<br> Text(trip.name)<br> }<br> }<br> }<br> .searchable(text: $searchText)<br> .navigationTitle("Trips")<br> }<br> .onAppear {<br> // Simulate fetching trips (replace with actual data fetching logic)<br> fetchTrips()<br> }<br> }</p> <p> private func fetchTrips() {<br> // Simulated data fetching<br> trips = [<br> TripModel(name: "Trip to Paris", destination: "Paris", startDate: Date(), endDate: Date()),<br> TripModel(name: "Beach Vacation", destination: "Maldives", startDate: Date(), endDate: Date()),<br> TripModel(name: "Skiing in Alps", destination: "Switzerland", startDate: Date(), endDate: Date())<br> ]<br> }<br> }<br>
Etape 4: Créer la vue correspondant aux détails du voyage
La vue TripDetail montre les informations détaillées sur un voyage sélectionné. La structure TripDetail affiche les détails d'un voyage sélectionné. La méthode formattedDate formatte la date en une chaîne lisible.
<br> import SwiftUI</p> <p>struct TripDetail: View {<br> var trip: TripModel</p> <p> var body: some View {<br> VStack {<br> Text("Trip: \(trip.name)")<br> .font(.title)<br> Text("Destination: \(trip.destination)")<br> Text("Start Date: \(formattedDate(trip.startDate))")<br> Text("End Date: \(formattedDate(trip.endDate))")<br> }<br> .navigationTitle(trip.name)<br> }</p> <p> private func formattedDate(_ date: Date) -> String {<br> let formatter = DateFormatter()<br> formatter.dateStyle = .medium<br> return formatter.string(from: date)<br> }<br> }<br>
Conclusion
En suivant ces étapes, vous avez créé une mini application SwiftUI utilisant SwiftData pour gérer et afficher les informations sur les voyages.
et donc quel serait l'utilité de SwiftData pour finir?
SwiftData se distingue de Core Data par sa simplicité et son intégration transparente avec SwiftUI. Contrairement à Core Data, principalement conçu pour gérer les données locales au sein de l'application, SwiftData offre une flexibilité accrue pour interagir avec des API externes. Cela facilite la synchronisation des données locales avec des services web, améliorant ainsi l'expérience utilisateur.
SwiftData simplifie également le développement en réduisant le code et en offrant une meilleure sécurité des types. En résumé, SwiftData permet de créer des applications plus robustes, performantes et maintenables tout en facilitant l'intégration avec les services en ligne, ce qui n'est pas aussi facilement réalisable avec Core Data.
Fonctionnalité | SwiftData | Core Data |
---|---|---|
Age | Plus récent | Moins récent |
API | Plus moderne et user-friendly | Plus compliqué et orienté Objective-C |
Efficacité | Plus efficace | Moins efficace |
Intégration avec SwiftUI | Transparent | Moins transparente |
Fonctionnalité | Peu de fonctionnalités liées | Plus de fonctionnalités disponibles |
Maturité | Peu mature | Plus mature |