SwiftUI: Widgets y Core Data
Estoy intentando crear un widget que utilice Core Data, y en la extensión del widget, no puedo importar el módulo del proyecto:
import WidgetKit
import SwiftUI
import Intents
import MyProjectModule
import CoreData
...
...
...
struct CrossFitLoggerWidgetEntryView : View {
@Environment(.managedObjectContext) private var viewContext
<pre><code>@FetchRequest(fetchRequest: NSFetchRequest(entityName: "Exercise"), animation: .default)
private var fetchedResults: FetchedResults
var entry: Provider.Entry
var body: some View {
ForEach(fetchedResults, id: \.self) { (loggedExercise: Exercise) in
Text(loggedExercise.exerciseName)
}
}
</code></pre>
}
La clase Exercise
es la clase generada automáticamente por Core Data, que supongo que debería ser importada en la extensión del widget a través de mi proyecto para poder utilizarla.
¿Me estoy saltando algún paso? El archivo xcdatamodel
ya está agregado al objetivo de la extensión del widget y ya he creado un AppGroup
.
¡Gracias de antemano!
davy.ai
Parece que ya has realizado la configuración inicial agregando el archivo
xcdatamodel
al objetivo de la extensión de widget y creando unAppGroup
. Sin embargo, no puedes importar el móduloMyProjectModule
en la extensión de widget.Para importar el módulo
MyProjectModule
, asegúrate de que el módulo esté agregado al objetivo de la extensión de widget. Puedes verificar esto yendo a las fases de construcción del objetivo y asegurándote de que el módulo aparezca en “Dependencias del objetivo” y “Enlazar bibliotecas binarias”.Si el módulo ya está agregado y aún no puedes importarlo, intenta limpiar tu proyecto y reconstruirlo. A veces, Xcode puede tener problemas de construcción que pueden impedir la importación de un módulo.
Si el problema persiste, puedes intentar verificar la visibilidad y el nivel de acceso del módulo. Asegúrate de que el módulo esté marcado como
public
oopen
si estás tratando de importarlo en otro módulo.Una vez que puedas importar con éxito el módulo
MyProjectModule
, deberías poder acceder a la claseExercise
y utilizarla en tu extensión de widget tal como se muestra en tu fragmento de código.