diff --git a/CoreStore.podspec b/CoreStore.podspec index 1df6889..fef69a2 100644 --- a/CoreStore.podspec +++ b/CoreStore.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "CoreStore" - s.version = "4.1.1" + s.version = "4.1.3" s.license = "MIT" s.summary = "Unleashing the real power of Core Data with the elegance and safety of Swift" s.homepage = "https://github.com/JohnEstropia/CoreStore" diff --git a/CoreStore.xcodeproj/project.pbxproj b/CoreStore.xcodeproj/project.pbxproj index 8967c1e..763ed3a 100644 --- a/CoreStore.xcodeproj/project.pbxproj +++ b/CoreStore.xcodeproj/project.pbxproj @@ -786,6 +786,7 @@ B52F743C1E9B8724005F3DAC /* XcodeDataModelSchema.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = XcodeDataModelSchema.swift; sourceTree = ""; }; B52F74491E9B8740005F3DAC /* CoreStoreSchema.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreStoreSchema.swift; sourceTree = ""; }; B52FD3A91E3B3EF10001D919 /* NSManagedObject+Logging.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Logging.swift"; sourceTree = ""; }; + B53205791F74E9170023927D /* .cocoapods.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .cocoapods.yml; sourceTree = ""; }; B533C4DA1D7D4BFA001383CB /* DispatchQueue+CoreStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DispatchQueue+CoreStore.swift"; sourceTree = ""; }; B538BA701D15B3E30003A766 /* CoreStoreBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CoreStoreBridge.m; sourceTree = ""; }; B53B275E1EE3B92E00E9B352 /* CoreStoreManagedObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreStoreManagedObject.swift; sourceTree = ""; }; @@ -1064,6 +1065,7 @@ B5E84ED91AFF82360064E85B /* LICENSE */, B5D9C8F61B160ED200E64F0E /* CoreStore.podspec */, B5BDC91A1C202269008147CD /* Cartfile */, + B53205791F74E9170023927D /* .cocoapods.yml */, B5BDC9271C2024F2008147CD /* .travis.yml */, B5AD60CD1C90141E00F2B2E8 /* Package.swift */, ); diff --git a/Sources/.cocoapods.yml b/Sources/.cocoapods.yml new file mode 100644 index 0000000..a758722 --- /dev/null +++ b/Sources/.cocoapods.yml @@ -0,0 +1,2 @@ +try: + project: 'CoreStore.xcworkspace' diff --git a/Sources/DynamicObject.swift b/Sources/DynamicObject.swift index b36c020..9b1d7f5 100644 --- a/Sources/DynamicObject.swift +++ b/Sources/DynamicObject.swift @@ -121,7 +121,12 @@ extension CoreStoreObject { return unsafeDowncast(coreStoreObject, to: self) } - let coreStoreObject = self.init(rawObject: object) + @inline(__always) + func forceTypeCast(_ type: DynamicObject.Type, to: T.Type) -> T.Type { + + return type as! T.Type + } + let coreStoreObject = forceTypeCast(object.entity.dynamicObjectType!, to: self).init(rawObject: object) object.coreStoreObject = coreStoreObject return coreStoreObject } diff --git a/Sources/Info.plist b/Sources/Info.plist index 76d0c69..a19ea3e 100644 --- a/Sources/Info.plist +++ b/Sources/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.1.1 + 4.1.3 CFBundleSignature ???? CFBundleVersion diff --git a/Sources/NSEntityDescription+DynamicModel.swift b/Sources/NSEntityDescription+DynamicModel.swift index 1c9ff17..cc66a84 100644 --- a/Sources/NSEntityDescription+DynamicModel.swift +++ b/Sources/NSEntityDescription+DynamicModel.swift @@ -31,6 +31,17 @@ import Foundation internal extension NSEntityDescription { + @nonobjc + internal var dynamicObjectType: DynamicObject.Type? { + + guard let userInfo = self.userInfo, + let typeName = userInfo[UserInfoKey.CoreStoreManagedObjectTypeName] as! String? else { + + return nil + } + return (NSClassFromString(typeName) as! DynamicObject.Type) + } + @nonobjc internal var coreStoreEntity: DynamicEntity? {