C’est quoi SwiftData
SwiftData
est un framework Apple pour :
• stocker des données localement
• faire des requêtes
• gérer automatiquement la mémoire
Il permet de gérer facilement une base de données locale dans une app iOS/macOS
Voici une petite vidéo tutoriel : [Link]
Comment l’intégrer dans un projet
1. Créer un modèle
Avec SwiftData, tu utilises @Model :
import SwiftData
import Foundation
@Model
class Contact {
var id: UUID
var nom: String
var prenoms: String
init(nom: String, prenoms: String) {
[Link] = UUID()
[Link] = nom
[Link] = prenoms
}
}
2. Configurer le container
Dans ton [Link] :
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(for: [Link])
}
}
2
3. Lire les données
@Query
var contacts: [Contact]
4. Ajouter une donnée
@Environment(\.modelContext) private var context
func addContact() {
let contact = Contact(nom: "Sede", prenoms: "Joel")
[Link](contact)
}
5. Supprimer
func deleteContact(contact: Contact) {
[Link](contact)
}
6. Exemple complet
struct ContactView: View {
@Environment(\.modelContext) private var context
@Query private var contacts: [Contact]
var body: some View {
NavigationStack {
List {
ForEach(contacts) { contact in
3
Text([Link])
}
.onDelete { indexSet in
for index in indexSet {
[Link](contacts[index])
}
}
}
.navigationTitle("Tasks")
.toolbar {
Button {
addContact()
} label: {
Image(systemName: "plus")
}
}
}
}
func addContact() {
let contact = Contact(nom: "Sede", prenoms: "Joel")
[Link](contact)
}
func deleteContact(contact: Contact) {
[Link](contact)
}
}
7. Filtre simple
@Query(filter: #Predicate<Contact> { $[Link] == "Juarez" })
var filterContact: [Contact]
8. Filtre avec plusieurs conditions
@Query(filter: #Predicate<Contact> {
4
$[Link] == "Sede" && $[Link]("Henri")
})
var filteredContact: [Contact]