SwiftData EXC_BREAKPOINT when trying to load model data
16:58 07 Mar 2026

I am struggling to resolve a runtime "error" when trying to load model data with SwiftData in my unit tests.

I use the makeModelContext function on the MainActor to create an in-memory model context:

/// Create an in-memory ModelContext containing all app models for testing.
/// This mirrors the models registered in the App's ModelContainer.
@MainActor static func makeModelContext() throws -> ModelContext {
    // Use an in-memory model configuration for tests to avoid CloudKit/SwiftData background
    // registration collisions with the app's shared ModelContainer.
    let config = ModelConfiguration(isStoredInMemoryOnly: true)
    let schema = Schema([
        Car.self,
        Charger.self,
        ChargingCostPlan.self,
        ChargingSession.self,
        ChargingSessionTemplate.self,
        PriceElement.self,
        Location.self,
        HomeConsumption.self
    ])
    let container = try ModelContainer(for: schema, configurations: [config])
    // Disable autosave to avoid background persistence during tests
    container.mainContext.autosaveEnabled = false

    return container.mainContext
}

In my test function, I call the makeModelContext function, also from the MainActor:

@Test("Import a representative subset of the backup JSON")
@MainActor
func testImportRepresentativeSubset() async throws {
    // Locate the test data JSON next to this test file
    let testFileURL = URL(fileURLWithPath: #file).deletingLastPathComponent().appendingPathComponent("TestData_2026-03-07.json")
    let raw = try Data(contentsOf: testFileURL)

    let decoder = JSONDecoder()
    decoder.dateDecodingStrategy = .iso8601
    let backup = try decoder.decode(DataEncoder.Backup.self, from: raw)

    let encoder = JSONEncoder()
    encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
    encoder.dateEncodingStrategy = .iso8601
    let data = try encoder.encode(backup)

    // Create an in-memory ModelContext (helper provided by test infra)
    let modelContext = try TestHelpers.makeModelContext()
    modelContext.autosaveEnabled = false

    // Import
    let report = try DataImporter.importFrom(data: data, into: modelContext)

    ...

In the last line of above code, I pass this modelContext from the test function into the function to be tested:

/// Import from raw JSON Data (the shape produced by `DataEncoder.Backup`).
/// - Parameters:
///   - data: JSON data produced by `DataEncoder.export`
///   - modelContext: the SwiftData `ModelContext` to insert objects into
/// - Returns: an import report summarising the operation.
@MainActor
public static func importFrom(data: Data, into modelContext: ModelContext) throws -> DataImportReport {
    var report = DataImportReport()

    let decoder = JSONDecoder()
    decoder.dateDecodingStrategy = .iso8601

    do {
        let backup = try decoder.decode(DataEncoder.Backup.self, from: data)

        // Prefetch existing objects once to avoid repeated fetches and actor issues
        let existingCars: [Car] = (try? modelContext.fetch(FetchDescriptor())) ?? []
    ...

In the last line of above code, I get the following runtime message and the testing process stops:

Task 55: EXC_BREAKPOINT (code=1, subcode=0x1d9d2a8b4)

I tried to find solutions via web search, Github Copilot and Xcode Coding Assistant, but none of the proposals helped. I checked the following things:

  • Model registration done

  • modelContext is valid

  • Predicate is valid

Any suggestions what could be the root cause?

swift swiftdata