From 53100b202d63b0ce44c2ab7d34b8674a9419a708 Mon Sep 17 00:00:00 2001 From: Jannon Frank Date: Thu, 21 Sep 2017 11:38:29 -0700 Subject: [PATCH 1/5] add case-insensitive sortkeys --- Sources/OrderBy.swift | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Sources/OrderBy.swift b/Sources/OrderBy.swift index 862dbda..fb7d5af 100644 --- a/Sources/OrderBy.swift +++ b/Sources/OrderBy.swift @@ -48,6 +48,16 @@ public enum SortKey { Indicates that the `RawKeyPath` should be sorted in descending order */ case descending(RawKeyPath) + + /** + Indicates that the `RawKeyPath` should be sorted in ascending order in a case-insenstive manner + */ + case ascendingInsensitive(RawKeyPath) + + /** + Indicates that the `RawKeyPath` should be sorted in descending order in a case-insenstive manner + */ + case descendingInsensitive(RawKeyPath) } @@ -124,6 +134,12 @@ public struct OrderBy: FetchClause, QueryClause, DeleteClause, Hashable { case .descending(let keyPath): return NSSortDescriptor(key: keyPath, ascending: false) + + case .ascendingInsensitive(let keyPath): + return NSSortDescriptor(key: keyPath, ascending: true, selector: #selector(NSString.localizedCaseInsensitiveCompare(_:))) + + case .descendingInsensitive(let keyPath): + return NSSortDescriptor(key: keyPath, ascending: false, selector: #selector(NSString.localizedCaseInsensitiveCompare(_:))) } } ) From dc73cd6dd91602024c8655c33d7b99a5c624b534 Mon Sep 17 00:00:00 2001 From: John Estropia Date: Fri, 22 Sep 2017 15:48:02 +0900 Subject: [PATCH 2/5] added a yml file for pod try (#200) --- CoreStore.xcodeproj/project.pbxproj | 2 ++ Sources/.cocoapods.yml | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 Sources/.cocoapods.yml diff --git a/CoreStore.xcodeproj/project.pbxproj b/CoreStore.xcodeproj/project.pbxproj index a390071..34dd804 100644 --- a/CoreStore.xcodeproj/project.pbxproj +++ b/CoreStore.xcodeproj/project.pbxproj @@ -770,6 +770,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 = ""; }; @@ -1044,6 +1045,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' From fa682215c558f27c170dd474423163a7beb33dc2 Mon Sep 17 00:00:00 2001 From: John Rommel Estropia Date: Fri, 22 Sep 2017 23:26:15 +0900 Subject: [PATCH 3/5] version bump --- CoreStore.podspec | 2 +- Sources/Info.plist | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CoreStore.podspec b/CoreStore.podspec index 1df6889..4f76e67 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.2" 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/Sources/Info.plist b/Sources/Info.plist index 76d0c69..438715f 100644 --- a/Sources/Info.plist +++ b/Sources/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.1.1 + 4.1.2 CFBundleSignature ???? CFBundleVersion From 8d86425875ff4d50e3fcba8fc79d87fea64f2879 Mon Sep 17 00:00:00 2001 From: John Rommel Estropia Date: Sat, 7 Oct 2017 00:56:19 +0900 Subject: [PATCH 4/5] always create subclass type from cs_rawObject --- Sources/DynamicObject.swift | 7 ++++++- Sources/NSEntityDescription+DynamicModel.swift | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Sources/DynamicObject.swift b/Sources/DynamicObject.swift index c48bdba..6bdb2e7 100644 --- a/Sources/DynamicObject.swift +++ b/Sources/DynamicObject.swift @@ -131,7 +131,12 @@ extension CoreStoreObject { } return forceCast(coreStoreObject) } - 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/NSEntityDescription+DynamicModel.swift b/Sources/NSEntityDescription+DynamicModel.swift index 52d2783..5913ffd 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? { From 7ff29d60864a4ff0f03589ecccb9e68d8aa932ae Mon Sep 17 00:00:00 2001 From: John Rommel Estropia Date: Sat, 7 Oct 2017 00:57:41 +0900 Subject: [PATCH 5/5] version bump --- CoreStore.podspec | 2 +- Sources/Info.plist | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CoreStore.podspec b/CoreStore.podspec index 4f76e67..fef69a2 100644 --- a/CoreStore.podspec +++ b/CoreStore.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "CoreStore" - s.version = "4.1.2" + 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/Sources/Info.plist b/Sources/Info.plist index 438715f..a19ea3e 100644 --- a/Sources/Info.plist +++ b/Sources/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.1.2 + 4.1.3 CFBundleSignature ???? CFBundleVersion