I am working on a SwiftUI project using Core Data. I have an entity called AppleUser in my data model, with the following attributes: id (UUID), name (String), email (String), password (String), and createdAt (Date). All attributes are non-optional.
I created the corresponding Core Data class files (AppleUser+CoreDataClass.swift and AppleUser+CoreDataProperties.swift) using Xcode’s automatic generation. I also have a PersistenceController that initializes the NSPersistentContainer with the model name JobLinkModel.
When I try to save a new AppleUser object using: let user = AppleUser(context: viewContext) user.id = UUID() user.name = "User1" user.email = "..." user.password = "password1" user.createdAt = Date()【The email is correctly formatted, but it has been replaced with “…” for privacy reasons】
try? viewContext.save() I get the following error in the console:Core Data save failed: Foundation._GenericObjCError.nilError, [:] User snapshot: ["id": ..., "name": "User1", "email": "...", "password": "...", "createdAt": ...] All fields have valid values, and the Core Data model seems correct. I have also tried: • Checking that the model name in NSPersistentContainer(name:) matches the .xcdatamodeld file (JobLinkModel) • Ensuring the AppleUser entity Class, Module, and Codegen are correctly set (Class Definition, Current Product Module) • Deleting duplicate or old AppleUser class files • Cleaning Xcode build folder and deleting the app from the simulator • Using @Environment(.managedObjectContext) for the context
Despite all this, I still get _GenericObjCError.nilError when saving a new AppleUser object.
I want to understand: 1. Why is Core Data failing to save even though all fields are non-nil and correctly assigned? 2. Could this be caused by some residual old class files, or is there something else in the setup that I am missing? 3. What steps should I take to ensure that Core Data properly recognizes the AppleUser entity and allows saving?
Any help or guidance would be greatly appreciated.
Your post doesn't describe where viewContext
is from, but my best guess is that viewContext
in your code isn't valid.
As an example, if you use SwiftUI and grab viewContext
from the environment, it can be that you haven't injected the managed object context as an environment to your SwiftUI view hierarchy.
If you can provide a minimal project that demonstrates the issue, I'd probably have a better idea.
For how how to create (and save) a Core Data object, see Handling Different Data Types in Core Data.
Best,
——
Ziqiao Chen
Worldwide Developer Relations.