0 Replies
      Latest reply on Oct 22, 2019 2:52 PM by philippefrommorges
      philippefrommorges Level 1 Level 1 (0 points)

        Dear everyone,

         

        I am relatively new to Core Data and I was trying to create a small app in Swift UI to display a list of elements and being able to add new ones.

         

        I created an entity (Codegen: Manual/None) with the following fields:

        - city: String

        - country: String

        - createdAt: Date

        - date: Date

        - id: UUID

        - summary: String

         

        An I created the equivalent class:

        public class EventItems: NSManagedObject, Identifiable {
            @NSManaged public var id: UUID
            @NSManaged public var city: String
            @NSManaged public var country: String
            @NSManaged public var date: Date
            @NSManaged public var createdAt: Date
            @NSManaged public var summary: String
        }
        

         

        And the following extension

        extension EventItems {
            static func getAllItems() -> NSFetchRequest<EventItems> {
                let request: NSFetchRequest<EventItems> = NSFetchRequest<EventItems>(entityName: "EventItems")
                
                request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: true)]
                
                return request
            }
        }
        

         

        In a SwiftUI view, I set the Environement and then have a button to save a new element:

        @Environment(\.managedObjectContext) var managedObjectContext

         

        Button(action: {
            let eventItem:EventItems = EventItems(context: self.managedObjectContext)
            eventItem.id = UUID()
            eventItem.city = self.city
            eventItem.country = self.country
            eventItem.date = self.date
            eventItem.createdAt = Date()
            eventItem.summary = self.summary
            
            do {
                try self.managedObjectContext.save()
            } catch {
                print(error)
            }
        }) {
            Text("Save")
        }
        

         

        In my View to add a new element to the entity, when I press the save button, the application crashes with the following error:

        2019-10-20 20:50:04.209071+0200 EventLogger[14093:945375] [error] error: No NSEntityDescriptions in any model claim the NSManagedObject subclass 'EventLogger.EventItems' so +entity is confused.  Have you loaded your NSManagedObjectModel yet ?

        CoreData: error: No NSEntityDescriptions in any model claim the NSManagedObject subclass 'EventLogger.EventItems' so +entity is confused.  Have you loaded your NSManagedObjectModel yet ?

        2019-10-20 20:50:04.209361+0200 EventLogger[14093:945375] [error] error: +[EventLogger.EventItems entity] Failed to find a unique match for an NSEntityDescription to a managed object subclass

        CoreData: error: +[EventLogger.EventItems entity] Failed to find a unique match for an NSEntityDescription to a managed object subclass

        2019-10-20 20:50:04.219017+0200 EventLogger[14093:945375] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'An NSManagedObject of class 'EventLogger.EventItems' must have a valid NSEntityDescription.'

         

        Thanks for your help