Bonjour, je me demandais comment vous faisiez pour que vos preview sur SwiftUI fonctionnent lorsque vous utilisez CoreData.
Dans mon cas, les lists fonctionnent sans soucis. Par contres quand je créé une seconde view qui sert de formulaire, tout fonctionne jusqu’au moment où je créé la donnée qui passe en paramètre et que je l’intègre dans l’interface (je sais pas si je suis très clair)
Par exemple, j’ai une première View qui affiche une liste d’Actes. Puis, je fais un NavigationLink qui m’amène vers la View qui affiche les détails de cet acte et permet de les éditer. La j’attends en paramètre obligatoire un objet Acte (Class Acte) et c’est à partir de cet objet passé en paramètre que je peux afficher les données et les mettre à jour dans ma base CoreData.
Du moment où mon interface en SwiftUI va s’appuyer sur un élément de cet objet en paramètre, je ne peux plus générer ma vue. Mais le code fonctionne très bien. SI je lance une Preview depuis la liste et que je clique dessus, ma seconde View s’ouvre sans soucis.
Voici ce que je fais pour ne plus avoir l’erreur de compilation avec le preview :
struct ActeCreate_Previews: PreviewProvider {
static var previews: some View {
let acte = Acte()
ActeView(showSheetView: .constant(false), acte: acte, patient: nil)
.environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
}
}
Ici, c’est la variable que j’attends.
Elle est optionnelle car je me sers de cette variable pour savoir si un acte est passé ou non, et s’il n’est pas passé, je considère que je suis en mode « Création » donc je ne charge rien et au moment d’enregistrer, je vais créer un nouvel acte plutôt que de modifier celui qui a été passé en paramètre.
let acte: Acte?
J’ai un State qui assure le lien entre la valeur et SwiftUI
@State **private** **var** resumeSeance = ""
Et j’affiche le contenu, ou je le récupère selon, dans un TextField
TextField("Résumé de séance", text: $resumeSeance)