Demo.swift
ContentView.swift
App.swift
import SwiftUI
import CoreData
struct PersistenceController {
static let shared = PersistenceController()
let container: NSPersistentContainer
init() {
container = NSPersistentContainer(name: "MyModel")
if let groupURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.example.notes") {
let storeURL = groupURL.appendingPathComponent("MyModel.sqlite")
let description = NSPersistentStoreDescription(url: storeURL)
container.persistentStoreDescriptions = [description]
}
container.loadPersistentStores { _, error in
if let error = error { fatalError("Unresolved error: \(error)") }
}
}
}
struct AppGroupListView: View {
@Environment(\.managedObjectContext) private var context
@FetchRequest(sortDescriptors: []) private var items: FetchedResults<Item>
var body: some View {
List(items) { item in Text(item.title ?? "") }
.toolbar { Button("Add") { add() } }
}
private func add() {
let i = Item(context: context)
i.title = "Shared Item"
try? context.save()
}
}
import SwiftUI
struct ContentView: View {
var body: some View {
AppGroupListView()
}
}
import SwiftUI
import CoreData
@main
struct MyApp: App {
let persistence = PersistenceController.shared
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistence.container.viewContext)
}
}
}