Error generating files in compilation cause AppEntity and Widget Extension on iOS17

When I add AppEnity to my model, I receive this error that is still repeated for each attribute in the model. The models are already marked for Widget Extension in Target Membership. I have already cleaned and restarted, nothing works. Will anyone know what I'm doing wrong?

Unable to find matching source file for path "@_swiftmacro_21HabitWidgetsExtension0A05ModelfMm.swift"

import SwiftData
import AppIntents

enum FrecuenciaCumplimiento: String, Codable {
    case diario
    case semanal
    case mensual
}

@Model
final class Habit: AppEntity {
    @Attribute(.unique) var id: UUID
    var nombre: String
    var descripcion: String
    var icono: String
    var color: String
    var esHabitoPositivo: Bool
    var valorObjetivo: Double
    var unidadObjetivo: String
    var frecuenciaCumplimiento: FrecuenciaCumplimiento
    
    static var typeDisplayRepresentation: TypeDisplayRepresentation = "Hábito"
    static var defaultQuery = HabitQuery()
    
    var displayRepresentation: DisplayRepresentation {
        DisplayRepresentation(title: "\(nombre)")
    }
    
    static var allHabits: [Habit] = [
        Habit(id: UUID(), nombre: "uno", descripcion: "", icono: "circle", color: "#BF0000", esHabitoPositivo: true, valorObjetivo: 1.0, unidadObjetivo: "", frecuenciaCumplimiento: .mensual),
        Habit(id: UUID(), nombre: "dos", descripcion: "", icono: "circle", color: "#BF0000", esHabitoPositivo: true, valorObjetivo: 1.0, unidadObjetivo: "", frecuenciaCumplimiento: .mensual)
    ]
    
    /*
    static func loadAllHabits() async throws {
        do {
            let modelContainer = try ModelContainer(for: Habit.self)
            let descriptor = FetchDescriptor<Habit>()
            allHabits = try await modelContainer.mainContext.fetch(descriptor)
        } catch {
            // Manejo de errores si es necesario
            print("Error al cargar hábitos: \(error)")
            throw error
        }
    }
     */

    init(id: UUID = UUID(), nombre: String, descripcion: String, icono: String, color: String, esHabitoPositivo: Bool, valorObjetivo: Double, unidadObjetivo: String, frecuenciaCumplimiento: FrecuenciaCumplimiento) {
        self.id = id
        self.nombre = nombre
        self.descripcion = descripcion
        self.icono = icono
        self.color = color
        self.esHabitoPositivo = esHabitoPositivo
        self.valorObjetivo = valorObjetivo
        self.unidadObjetivo = unidadObjetivo
        self.frecuenciaCumplimiento = frecuenciaCumplimiento
    }
    
    @Relationship(deleteRule: .cascade)
    var habitRecords: [HabitRecord] = []
}

struct HabitQuery: EntityQuery {
    func entities(for identifiers: [Habit.ID]) async throws -> [Habit] {
        //try await Habit.loadAllHabits()
        return Habit.allHabits.filter { identifiers.contains($0.id) }
    }

    func suggestedEntities() async throws -> [Habit] {
        //try await Habit.loadAllHabits()
        return Habit.allHabits// .filter { $0.isAvailable }
    }

    func defaultResult() async -> Habit? {
        try? await suggestedEntities().first
    }
}

I'm having the same issue. Did you resolve this?

Did you ever get a solution?

Creating a "wrapper" AppEntity worked for me. In OP's example, this would be something like:

struct HabitatAppEntity: AppEntity, Identifiable {
    let id = UUID()
    
    let habitat: Habit
    
    static var defaultQuery = HabitEntityQuery()
    
    static var typeDisplayRepresentation: TypeDisplayRepresentation = "Hábito"
    
    var displayRepresentation: DisplayRepresentation {
        DisplayRepresentation(title: "\(habitat.nombre)")
    }
}

Xcode 16 Beta 3 seems to work as intended, so hopefully this workaround isn't required for too long :)

Error generating files in compilation cause AppEntity and Widget Extension on iOS17
 
 
Q