Demo.swift
ContentView.swift
App.swift
import SwiftUI
import CoreData
class NoteEntity: NSManagedObject {
@NSManaged public var id: UUID?
@NSManaged public var title: String?
@NSManaged public var body: String?
}
extension NoteEntity: Identifiable {}
struct PersistenceController {
static let shared = PersistenceController()
let container: NSPersistentContainer
init() {
container = NSPersistentContainer(name: "MyModel")
container.loadPersistentStores { _, error in
if let error = error { fatalError("Unresolved error: \(error)") }
}
}
}
struct NotesCoreDataView: View {
@Environment(\.managedObjectContext) private var context
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: <br>oteEntity.title, ascending: true)])
private var notes: FetchedResults<NoteEntity>
var body: some View {
List(notes) { n in
VStack(alignment: .leading) {
Text(n.title ?? "Untitled").font(.headline)
Text(n.body ?? "").font(.subheadline)
}
}
.toolbar { Button("Add") { add() } }
}
private func add() {
let n = NoteEntity(context: context)
n.id = UUID(); n.title = "New Note"; n.body = ""
try? context.save()
}
}
import SwiftUI
struct ContentView: View {
var body: some View {
NotesCoreDataView()
}
}
import SwiftUI
import CoreData
@main
struct MyApp: App {
let persistence = PersistenceController.shared
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistence.container.viewContext)
}
}
}