63 lines
1.7 KiB
Swift
63 lines
1.7 KiB
Swift
|
//
|
||
|
// ManagedObjectContextObjectsDidChange.swift
|
||
|
// CoreDataStack
|
||
|
//
|
||
|
// Created by sxiaojian on 2021/2/8.
|
||
|
//
|
||
|
|
||
|
import Foundation
|
||
|
import CoreData
|
||
|
|
||
|
public struct ManagedObjectContextObjectsDidChangeNotification {
|
||
|
|
||
|
public let notification: Notification
|
||
|
public let managedObjectContext: NSManagedObjectContext
|
||
|
|
||
|
public init?(notification: Notification) {
|
||
|
guard notification.name == .NSManagedObjectContextObjectsDidChange,
|
||
|
let managedObjectContext = notification.object as? NSManagedObjectContext else {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
self.notification = notification
|
||
|
self.managedObjectContext = managedObjectContext
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
extension ManagedObjectContextObjectsDidChangeNotification {
|
||
|
|
||
|
public var insertedObjects: Set<NSManagedObject> {
|
||
|
return objects(forKey: NSInsertedObjectsKey)
|
||
|
}
|
||
|
|
||
|
public var updatedObjects: Set<NSManagedObject> {
|
||
|
return objects(forKey: NSUpdatedObjectsKey)
|
||
|
}
|
||
|
|
||
|
public var deletedObjects: Set<NSManagedObject> {
|
||
|
return objects(forKey: NSDeletedObjectsKey)
|
||
|
}
|
||
|
|
||
|
public var refreshedObjects: Set<NSManagedObject> {
|
||
|
return objects(forKey: NSRefreshedObjectsKey)
|
||
|
}
|
||
|
|
||
|
public var invalidedObjects: Set<NSManagedObject> {
|
||
|
return objects(forKey: NSInvalidatedObjectsKey)
|
||
|
}
|
||
|
|
||
|
public var invalidatedAllObjects: Bool {
|
||
|
return notification.userInfo?[NSInvalidatedAllObjectsKey] != nil
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
extension ManagedObjectContextObjectsDidChangeNotification {
|
||
|
|
||
|
private func objects(forKey key: String) -> Set<NSManagedObject> {
|
||
|
return notification.userInfo?[key] as? Set<NSManagedObject> ?? Set()
|
||
|
}
|
||
|
|
||
|
}
|