Hello! I had the same issue working with SwiftData and I found that creating my own ModelContainer in App.swift instead of relying on the default one worked.
// App.swift
import SwiftData
import SwiftUI
@main
struct OweApp: App {
private var container: ModelContainer {
try! ModelContainer(
for: Lender.self, Transaction.self,
configurations: .init()
)
}
var body: some Scene {
WindowGroup {
HomeView()
}
.modelContainer(self.container)
}
}
And the view file that uses the modelContext environment variable:
import SwiftData
import SwiftUI
struct HomeView: View {
@Environment(\.modelContext) var modelContext
@Query var lenders: [Lender]
@Query var transactions: [Transaction]
var body: some View {
NavigationStack {
List {
ForEach(self.lenders) { lender in
HStack {
Text(lender.name)
Spacer()
Text("$\(lender.balanceOwed)")
.font(.caption)
.bold()
}
}
.onDelete(perform: self.deleteLender)
}
.navigationTitle("Owe")
.toolbar {
ToolbarItem(placement: .topBarTrailing) {
Button(action: self.addLender) {
Text("New Lender")
}
}
}
}
}
private func addLender() {
let firstNames = ["Miguel", "Salvador", "Mayra"]
let lastNames = ["Aceves", "Maravillo", "Ochoa"]
let lenderName = "\(firstNames.randomElement()!) \(lastNames.randomElement()!)"
let lender = Lender(name: lenderName)
self.modelContext.insert(lender)
}
private func deleteLender(offsets: IndexSet) {
for offset in offsets {
let lender = self.lenders[offset]
self.modelContext.delete(lender)
}
}
}
#Preview {
HomeView()
}