I've been working on a small, SwiftUI/SwiftData app for personal usage. This has been going well until yesterday when I decided I should refactor the SwiftData side of things (split some tables up, move things around. All to better map the schema to the application domain). But now the App crashes when it is opened in the simulator, with lots and lots of "CoreData" errors in the log:
CoreData: error: Failed to stat path '/Users/xxxxxx/Library/Developer/CoreSimulator/Devices/272B947E-AC7B-495F-9190-7A9E6113277F/data/Containers/Data/Application/2CA83FBE-E2FC-42C5-878B-B86E751FA667/Library/Application Support/default.store', errno 2 / No such file or directory.
CoreData: error: Failed to stat path '/Users/xxxxxx/Library/Developer/CoreSimulator/Devices/272B947E-AC7B-495F-9190-7A9E6113277F/data/Containers/Data/Application/2CA83FBE-E2FC-42C5-878B-B86E751FA667/Library/Application Support/default.store', errno 2 / No such file or directory.
CoreData: error: Executing as effective user 502
CoreData: error: Executing as effective user 502
CoreData: error: Failed to statfs file; errno 2 / No such file or directory.
CoreData: error: Failed to statfs file; errno 2 / No such file or directory.
CoreData: error: Logging status information for directory path: /Users/xxxxxx/Library/Developer/CoreSimulator/Devices/272B947E-AC7B-495F-9190-7A9E6113277F/data/Containers/Data/Application/261084F1-C9EE-4338-9D89-F2B5FAFDDBC6/Library/Application Support
CoreData: error: Executing as effective user 502
CoreData: error: Executing as effective user 502
CoreData: error: Information for /
CoreData: error: Information for /
CoreData: error: File Device ID: 0
CoreData: error: File Device ID: 0
CoreData: error: Device ID: 16777230
CoreData: error: Device ID: 16777230
CoreData: error: File Size: 704 bytes
CoreData: error: File Size: 704 bytes
...
Indeed, the default.store file (and its parent directory) do not exist.
In setting breakpoints and stepping over code, the crash occurs when setting the ".modelContainer(for:)" in the @main application code.
From googling around, my best guess is that there is a mismatch between my new schema and the schema in the previously created sqlite files that are in the simulator directories.
But I have tried following every suggestion I could find that hinted at how to fix this (deleting the App from the simulator, resetting the simulator etc). Obviously I've failed at that. I think at I should be diving deep into the simulator directory structure and purging the data there. But I am not sure where I should be looking, or what files/directories I should be purging.
How can I recover from this situation?
schemaor you@Model class, that is not easy for you to see. You could try deleting the sql files, add ".onAppear { let appSupportDir = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).last print("---> (appSupportDir)") }" to your App declaration, and remove the 3.sqlitefiles.