Core Data et SwiftUI
helio
Membre
Bonjour à tous
J'ai un souci sur application en SwiftUI très simple pour l'instant. L'utilisateur peut saisir des notes qui sont enregistrées par l'intermédiaire de Core Data, et il peut en saisir des nouvelles.
J'ai une View NoteDetail qui doit me servir pour afficher les notes déjà présentes dans CoreData mais aussi les nouvelles notes.
Voici la classe pour les notes :
import CoreData
public class NoteCoreData: NSManagedObject, Identifiable {
@NSManaged public var ID: Int16
@NSManaged public var Title: String
@NSManaged public var Description: String
}
extension NoteCoreData {
static func allNoteFetchRequest() -> NSFetchRequest<NoteCoreData> {
let request: NSFetchRequest<NoteCoreData> = NoteCoreData.fetchRequest() as! NSFetchRequest<NoteCoreData>
request.sortDescriptors = [NSSortDescriptor(key: "ID", ascending: false)]
return request
}
}
Pour afficher les notes deja enregistrées dans CoreData, voici le code.
J'ai donc une variable note de type NoteCoreData.
@FetchRequest(fetchRequest: NoteCoreData.allNoteFetchRequest()) var noteCoreData: FetchedResults<NoteCoreData>
var body: some View {
NavigationView {
VStack {
if self.loading {
Text("Loading...")
} else {
topView
List {
ForEach(self.noteCoreData, id: \.self) { note in
NavigationLink(destination: NoteDetail(note: note) ) {
NoteRowsView(note: note)
}
}
}
.navigationBarTitle("Notes", displayMode: .inline)
.navigationBarItems(trailing:
HStack {
// settingButton
}
)
}
}
}
Lorsque l'utilisateur va vouloir enregistrer une nouvelle note, c'est aussi NoteDetail qui sera affiché, cependant comment passer un objet note vide cette fois-ci (noteEmpy dans mon code) ?
J'affiche NoteDetail par l'intermédiaire d'un bouton
Button(action: {
print("Tapped")
}, label: {
NavigationLink(destination: NoteDetail(note: noteEmpty) ) {
Text("New note")
}
})
Merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je te propose la lecture de l'excellent site
https://www.hackingwithswift.com/quick-start/swiftui
Cherche le titre Data qui explique petit à petit tout ce qu'on peut et doit faire.
Introduction to using Core Data with SwiftUI
How to configure Core Data to work with SwiftUI
How to access a Core Data managed object context from a SwiftUI view
How to create a Core Data fetch request using @FetchRequest
How to filter Core Data fetch requests using a predicate
How to add Core Data objects from SwiftUI views
How to delete Core Data objects from SwiftUI views
J'ai un peu d'avance sur toi apparemment mais tu vas vite comprendre car le site est très pédagogique.