Page MenuHomeMusing Studio

PersistenceManager.swift
No OneTemporary

PersistenceManager.swift

import CoreData
#if os(iOS)
import UIKit
#elseif os(macOS)
import AppKit
#endif
class PersistenceManager {
static let persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "LocalStorageModel")
container.loadPersistentStores { _, error in
container.viewContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
if let error = error {
fatalError("Unresolved error loading persistent store: \(error)")
}
}
return container
}()
init() {
let center = NotificationCenter.default
#if os(iOS)
let notification = UIApplication.willResignActiveNotification
#elseif os(macOS)
let notification = NSApplication.willResignActiveNotification
#endif
// We don't need to worry about removing this observer because we're targeting iOS 9+ / macOS 10.11+; the
// system will clean this up the next time it would be posted to.
// See: https://developer.apple.com/documentation/foundation/notificationcenter/1413994-removeobserver
// And: https://developer.apple.com/documentation/foundation/notificationcenter/1407263-removeobserver
// swiftlint:disable:next discarded_notification_center_observer
center.addObserver(forName: notification, object: nil, queue: nil) { [weak self] _ in
guard let self = self else { return }
self.saveContext()
}
}
func saveContext() {
if PersistenceManager.persistentContainer.viewContext.hasChanges {
do {
try PersistenceManager.persistentContainer.viewContext.save()
} catch {
print("Error saving context: \(error)")
}
}
}
}

File Metadata

Mime Type
text/x-c++
Expires
Thu, Nov 6, 5:31 AM (1 d, 18 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3471877

Event Timeline