diff --git a/Shared/PersistenceManager.swift b/Shared/PersistenceManager.swift index e7d22f4..57e8a5d 100644 --- a/Shared/PersistenceManager.swift +++ b/Shared/PersistenceManager.swift @@ -1,50 +1,51 @@ 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() - } + center.addObserver(forName: notification, object: nil, queue: nil, using: self.saveContextOnResignActive) } func saveContext() { if PersistenceManager.persistentContainer.viewContext.hasChanges { do { try PersistenceManager.persistentContainer.viewContext.save() } catch { print("Error saving context: \(error)") } } } + + func saveContextOnResignActive(_ notification: Notification) { + saveContext() + } }