Core Data et SwiftUI

heliohelio Membre
18 juil. modifié dans API SwiftUI #1

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.

Mots clés:

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.

Connectez-vous ou Inscrivez-vous pour répondre.