added ObjectSnapshot as foundation for datasources API

This commit is contained in:
John Estropia
2019-07-10 08:11:42 +09:00
parent cf46b45e8e
commit 79655ffde5
50 changed files with 434 additions and 81 deletions

View File

@@ -60,6 +60,17 @@ public protocol DynamicObject: AnyObject {
func cs_toRaw() -> NSManagedObject
}
extension DynamicObject {
// MARK: Internal
internal func runtimeType() -> Self.Type {
// Self.self does not return runtime-created types
return object_getClass(self)! as! Self.Type
}
}
// MARK: - NSManagedObject
@@ -98,6 +109,16 @@ extension NSManagedObject: DynamicObject {
}
}
extension DynamicObject where Self: NSManagedObject {
// MARK: Public
public func createSnapshot() -> ObjectSnapshot<Self> {
return ObjectSnapshot(from: self)
}
}
// MARK: - CoreStoreObject
@@ -150,3 +171,13 @@ extension CoreStoreObject {
return self.rawObject!
}
}
extension DynamicObject where Self: CoreStoreObject {
// MARK: Public
public func createSnapshot() -> ObjectSnapshot<Self> {
return ObjectSnapshot(from: self)
}
}