I'm trying to build a view for my app and preview keep crashing when trying to load the SwiftData model in the preview. The app works perfectly fine in the simulator and on my iPhone. What am I doing wrong and how do I fix this?
This is the view that keep crashing
import SwiftData
import SwiftUI
struct EditConsumedDrinkView: View {
@Environment(\.modelContext) var modelContext
@Bindable var consumedDrink: ConsumedDrink
var body: some View {
Text(consumedDrink.drink.name)
.navigationTitle("Consumed Drink")
.navigationBarTitleDisplayMode(.inline)
}
}
#Preview {
let config = ModelConfiguration(isStoredInMemoryOnly: true)
let container = try! ModelContainer(for: ConsumedDrink.self, configurations: config)
let drink = Drink(name: "Water", amount: 16.9, unitOfMeasure: .ounce, image: "water")
let consumed = ConsumedDrink(drink: drink)
return EditConsumedDrinkView(consumedDrink: consumed)
.modelContainer(container)
}
The ConsumedDrink class
import SwiftData
@Model
class ConsumedDrink {
let id: UUID
let drink: Drink
var date: Date
init(drink: Drink, date: Date = Date()) {
self.id = UUID()
self.drink = drink
self.date = date
}
}
The Drink class
import SwiftData
@Model
class Drink {
let id: UUID = UUID()
var name: String = ""
var shortName: String = ""
var amount: Double = 0.0
var unitOfMeasure: FluidUnit = FluidUnit.ounce
let date: Date = Date()
var image: String = "water"
var favorite: Bool = false
var isHidden: Bool = false
init(name: String, amount: Double, unitOfMeasure: FluidUnit, image: String, favorite: Bool = false, shortName: String = "", isHidden: Bool = false) {
self.id = UUID()
self.name = name
self.amount = amount
self.unitOfMeasure = unitOfMeasure
self.date = Date()
self.image = image
self.favorite = favorite
self.shortName = shortName
self.isHidden = isHidden
}
}