aboutsummaryrefslogtreecommitdiff
path: root/Captura/Data/Persistence.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <ruben@unlimited.pizza>2023-07-31 10:52:11 +0200
committerRuben Beltran del Rio <ruben@unlimited.pizza>2023-07-31 10:52:11 +0200
commit533cd932281300fb444c07e80f81fc683a410b60 (patch)
tree483abbcd7461e155578b858dac4eb0145c13ce3e /Captura/Data/Persistence.swift
parentc9b9e1d654ea697afad9f6427d94623bfdf55cce (diff)
Complete initial release
Diffstat (limited to 'Captura/Data/Persistence.swift')
-rw-r--r--Captura/Data/Persistence.swift46
1 files changed, 46 insertions, 0 deletions
diff --git a/Captura/Data/Persistence.swift b/Captura/Data/Persistence.swift
new file mode 100644
index 0000000..4490e38
--- /dev/null
+++ b/Captura/Data/Persistence.swift
@@ -0,0 +1,46 @@
+import CoreData
+
+struct PersistenceController {
+ static let shared = PersistenceController()
+
+ static var preview: PersistenceController = {
+ let result = PersistenceController(inMemory: true)
+ return result
+ }()
+
+ let container: NSPersistentCloudKitContainer
+
+ init(inMemory: Bool = false) {
+ container = NSPersistentCloudKitContainer(name: "Captura")
+
+ #if DEBUG
+ do {
+ // Use the container to initialize the development schema.
+ try container.initializeCloudKitSchema(options: [])
+ } catch {
+ // Handle any errors.
+ }
+ #endif
+
+ if inMemory {
+ container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null")
+ }
+ container.loadPersistentStores(completionHandler: { (storeDescription, error) in
+ if let error = error as NSError? {
+ // Replace this implementation with code to handle the error appropriately.
+ // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
+
+ /*
+ Typical reasons for an error here include:
+ * The parent directory does not exist, cannot be created, or disallows writing.
+ * The persistent store is not accessible, due to permissions or data protection when the device is locked.
+ * The device is out of space.
+ * The store could not be migrated to the current model version.
+ Check the error message to determine what the actual problem was.
+ */
+ fatalError("Unresolved error \(error), \(error.userInfo)")
+ }
+ })
+ container.viewContext.automaticallyMergesChangesFromParent = true
+ }
+}