diff --git a/CoreStore/Internal/NSManagedObjectModel+Setup.swift b/CoreStore/Internal/NSManagedObjectModel+Setup.swift index 20f93c1..8ddd4b5 100644 --- a/CoreStore/Internal/NSManagedObjectModel+Setup.swift +++ b/CoreStore/Internal/NSManagedObjectModel+Setup.swift @@ -150,6 +150,15 @@ internal extension NSManagedObjectModel { return self.entityNameMapping[NSStringFromClass(entityClass)]! } + @nonobjc internal func entityMapping() -> [String: NSManagedObject.Type] { + + return self.entityNameMapping.reduce([:]) { (var mapping, pair) in + + mapping[pair.0] = (NSClassFromString(pair.1)! as! NSManagedObject.Type) + return mapping + } + } + @nonobjc internal func mergedModels() -> [NSManagedObjectModel] { return self.modelVersions?.map { self[$0] }.flatMap { $0 == nil ? [] : [$0!] } ?? [self] diff --git a/CoreStore/Setting Up/DataStack.swift b/CoreStore/Setting Up/DataStack.swift index dbb9c10..8c3bdf6 100644 --- a/CoreStore/Setting Up/DataStack.swift +++ b/CoreStore/Setting Up/DataStack.swift @@ -81,6 +81,14 @@ public final class DataStack { return self.model.currentModelVersion! } + /** + Returns the entity name-to-class type mapping from the `DataStack`'s model. + */ + public var entitiesByName: [String: NSManagedObject.Type] { + + return self.model.entityMapping() + } + /** Adds an in-memory store to the stack.