// Apple-only learning file: iOS 17+ target with a suitable Xcode SDK. // Not compiled or run in this Windows/Linux review. import SwiftUI import CoreData @objc(WorkshopNote) final class WorkshopNote: NSManagedObject { @NSManaged var label: String } @MainActor final class MemoryStore { static let shared = MemoryStore() let container: NSPersistentContainer init() { let attribute = NSAttributeDescription() attribute.name = "label"; attribute.attributeType = .stringAttributeType; attribute.isOptional = false let entity = NSEntityDescription() entity.name = "WorkshopNote"; entity.managedObjectClassName = NSStringFromClass(WorkshopNote.self) entity.properties = [attribute] let model = NSManagedObjectModel(); model.entities = [entity] container = NSPersistentContainer(name: "WorkshopMemory", managedObjectModel: model) let store = NSPersistentStoreDescription(); store.type = NSInMemoryStoreType store.shouldAddStoreAsynchronously = false container.persistentStoreDescriptions = [store] container.loadPersistentStores { _, error in precondition(error == nil, "Memory store failed") } } } struct DemoView: View { @Environment(\.managedObjectContext) private var context @FetchRequest(sortDescriptors: []) private var notes: FetchedResults @State private var notice = "In-memory notes only" var body: some View { VStack { List(notes, id: \.objectID) { Text($0.label) } Button("Add draft note") { let note = WorkshopNote(context: context) note.label = "Check glaze sample" do { try context.save(); notice = "Saved in this process only" } catch { context.rollback(); notice = "Save failed" } } Text(notice) }.environment(\.managedObjectContext, MemoryStore.shared.container.viewContext) } } @main struct WorkshopDemoApp: App { var body: some Scene { WindowGroup { DemoView().environment(\.managedObjectContext, MemoryStore.shared.container.viewContext) } } }