From 494965de23ecadd8b093c6176c149bff3620f4b4 Mon Sep 17 00:00:00 2001 From: John Rommel Estropia Date: Fri, 10 Mar 2017 08:30:12 +0900 Subject: [PATCH] changed protocol naming --- CoreStore.xcodeproj/project.pbxproj | 40 +-- .../CoreStoreDemo/Base.lproj/Main.storyboard | 323 +++++++++--------- .../BaseDataTransaction+Querying.swift | 4 +- .../Concrete Clauses/Select.swift | 200 ----------- .../Concrete Clauses/Where.swift | 4 +- .../CoreStore+Querying.swift | 4 +- .../DataStack+Querying.swift | 4 +- ...ype.swift => QueryableAttributeType.swift} | 73 ++-- .../QueryableSource.swift | 4 +- ...pe.swift => ImportableAttributeType.swift} | 115 ++++++- .../Importing/ImportableUniqueObject.swift | 4 +- .../NSManagedObjectContext+Querying.swift | 10 +- Sources/ObjectiveC/CSSelect.swift | 2 +- 13 files changed, 321 insertions(+), 466 deletions(-) rename Sources/Fetching and Querying/{CoreStoreQueryableAttributeType.swift => QueryableAttributeType.swift} (86%) rename Sources/Importing/{CoreStoreImportableAttributeType.swift => ImportableAttributeType.swift} (72%) diff --git a/CoreStore.xcodeproj/project.pbxproj b/CoreStore.xcodeproj/project.pbxproj index c373ac7..3d8e387 100644 --- a/CoreStore.xcodeproj/project.pbxproj +++ b/CoreStore.xcodeproj/project.pbxproj @@ -80,10 +80,10 @@ B50392FA1C47963F009900CA /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; B50392FB1C479640009900CA /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; B504D0D61B02362500B2BBB1 /* CoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */; }; - B509C7F41E54511B0061C547 /* CoreStoreImportableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B509C7F31E54511B0061C547 /* CoreStoreImportableAttributeType.swift */; }; - B509C7F51E54511B0061C547 /* CoreStoreImportableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B509C7F31E54511B0061C547 /* CoreStoreImportableAttributeType.swift */; }; - B509C7F61E54511B0061C547 /* CoreStoreImportableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B509C7F31E54511B0061C547 /* CoreStoreImportableAttributeType.swift */; }; - B509C7F71E54511B0061C547 /* CoreStoreImportableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B509C7F31E54511B0061C547 /* CoreStoreImportableAttributeType.swift */; }; + B509C7F41E54511B0061C547 /* ImportableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B509C7F31E54511B0061C547 /* ImportableAttributeType.swift */; }; + B509C7F51E54511B0061C547 /* ImportableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B509C7F31E54511B0061C547 /* ImportableAttributeType.swift */; }; + B509C7F61E54511B0061C547 /* ImportableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B509C7F31E54511B0061C547 /* ImportableAttributeType.swift */; }; + B509C7F71E54511B0061C547 /* ImportableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B509C7F31E54511B0061C547 /* ImportableAttributeType.swift */; }; B51BE06A1B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */; }; B51FE5AB1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; }; B51FE5AD1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; }; @@ -263,10 +263,10 @@ B5489F501CF603D5008B4978 /* FromTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F4F1CF603D5008B4978 /* FromTests.swift */; }; B5489F511CF603D5008B4978 /* FromTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F4F1CF603D5008B4978 /* FromTests.swift */; }; B5489F521CF603D5008B4978 /* FromTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F4F1CF603D5008B4978 /* FromTests.swift */; }; - B549F65E1E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B549F65D1E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift */; }; - B549F65F1E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B549F65D1E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift */; }; - B549F6601E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B549F65D1E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift */; }; - B549F6611E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B549F65D1E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift */; }; + B549F65E1E569C7400FBAB2D /* QueryableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B549F65D1E569C7400FBAB2D /* QueryableAttributeType.swift */; }; + B549F65F1E569C7400FBAB2D /* QueryableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B549F65D1E569C7400FBAB2D /* QueryableAttributeType.swift */; }; + B549F6601E569C7400FBAB2D /* QueryableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B549F65D1E569C7400FBAB2D /* QueryableAttributeType.swift */; }; + B549F6611E569C7400FBAB2D /* QueryableAttributeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B549F65D1E569C7400FBAB2D /* QueryableAttributeType.swift */; }; B549F6731E56A92800FBAB2D /* CoreDataNativeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B549F6721E56A92800FBAB2D /* CoreDataNativeType.swift */; }; B549F6741E56A92800FBAB2D /* CoreDataNativeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B549F6721E56A92800FBAB2D /* CoreDataNativeType.swift */; }; B549F6751E56A92800FBAB2D /* CoreDataNativeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B549F6721E56A92800FBAB2D /* CoreDataNativeType.swift */; }; @@ -612,7 +612,7 @@ B501FDE61CA8D20500BE22EF /* CSListObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSListObserver.swift; sourceTree = ""; }; B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Transaction.swift"; sourceTree = ""; }; B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+Setup.swift"; sourceTree = ""; }; - B509C7F31E54511B0061C547 /* CoreStoreImportableAttributeType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreStoreImportableAttributeType.swift; sourceTree = ""; }; + B509C7F31E54511B0061C547 /* ImportableAttributeType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportableAttributeType.swift; sourceTree = ""; }; B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectModel+Setup.swift"; sourceTree = ""; }; B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+CustomDebugStringConvertible.swift"; sourceTree = ""; }; B5202CF91C04688100DED140 /* NSFetchedResultsController+Convenience.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSFetchedResultsController+Convenience.swift"; sourceTree = ""; }; @@ -649,7 +649,7 @@ B5489F451CF5F017008B4978 /* TransactionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransactionTests.swift; sourceTree = ""; }; B5489F4B1CF5F743008B4978 /* BaseTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseTestCase.swift; sourceTree = ""; }; B5489F4F1CF603D5008B4978 /* FromTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FromTests.swift; sourceTree = ""; }; - B549F65D1E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreStoreQueryableAttributeType.swift; sourceTree = ""; }; + B549F65D1E569C7400FBAB2D /* QueryableAttributeType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QueryableAttributeType.swift; sourceTree = ""; }; B549F6721E56A92800FBAB2D /* CoreDataNativeType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataNativeType.swift; sourceTree = ""; }; B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchedResultsControllerDelegate.swift; sourceTree = ""; }; B5519A3F1CA1B17B002BEF78 /* ErrorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ErrorTests.swift; sourceTree = ""; }; @@ -1121,7 +1121,7 @@ B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */, B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */, B5E834B81B76311F001D3D50 /* BaseDataTransaction+Importing.swift */, - B509C7F31E54511B0061C547 /* CoreStoreImportableAttributeType.swift */, + B509C7F31E54511B0061C547 /* ImportableAttributeType.swift */, ); path = Importing; sourceTree = ""; @@ -1172,7 +1172,7 @@ B5E84F071AFF847B0064E85B /* CoreStore+Querying.swift */, B596BBB51DD5BC67001DCDD9 /* FetchableSource.swift */, B596BBBA1DD5C39F001DCDD9 /* QueryableSource.swift */, - B549F65D1E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift */, + B549F65D1E569C7400FBAB2D /* QueryableAttributeType.swift */, B5E84F0A1AFF847B0064E85B /* Protocol Clauses */, B5E84EFF1AFF847B0064E85B /* Concrete Clauses */, ); @@ -1601,7 +1601,7 @@ B5E1B59D1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */, B5ECDC231CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, B549F6731E56A92800FBAB2D /* CoreDataNativeType.swift in Sources */, - B509C7F41E54511B0061C547 /* CoreStoreImportableAttributeType.swift in Sources */, + B509C7F41E54511B0061C547 /* ImportableAttributeType.swift in Sources */, B5E84F0E1AFF847B0064E85B /* Tweak.swift in Sources */, B5E1B5931CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */, B5ECDC291CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */, @@ -1673,7 +1673,7 @@ B5E84F301AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift in Sources */, B546F9691C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */, B53FBA1E1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */, - B549F65E1E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift in Sources */, + B549F65E1E569C7400FBAB2D /* QueryableAttributeType.swift in Sources */, B5E84F211AFF84860064E85B /* CoreStore+Observing.swift in Sources */, B559CD431CAA8B6300E4D58B /* CSSetupResult.swift in Sources */, B5FE4DA71C84FB4400FA6A91 /* InMemoryStore.swift in Sources */, @@ -1757,7 +1757,7 @@ B5E1B59F1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */, B5ECDC251CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, B549F6741E56A92800FBAB2D /* CoreDataNativeType.swift in Sources */, - B509C7F51E54511B0061C547 /* CoreStoreImportableAttributeType.swift in Sources */, + B509C7F51E54511B0061C547 /* ImportableAttributeType.swift in Sources */, 82BA18B31C4BBD3900A0916E /* ImportableUniqueObject.swift in Sources */, B5E1B5951CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */, B5ECDC2B1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */, @@ -1829,7 +1829,7 @@ B546F96A1C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */, B53FBA201CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */, 82BA18A81C4BBD2900A0916E /* CoreStoreLogger.swift in Sources */, - B549F65F1E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift in Sources */, + B549F65F1E569C7400FBAB2D /* QueryableAttributeType.swift in Sources */, B559CD451CAA8B6300E4D58B /* CSSetupResult.swift in Sources */, 82BA18B81C4BBD4200A0916E /* ClauseTypes.swift in Sources */, B5ECDBEE1CA6BF2000C7F112 /* CSFrom.swift in Sources */, @@ -1913,7 +1913,7 @@ B559CD471CAA8B6300E4D58B /* CSSetupResult.swift in Sources */, B5ECDBF01CA6BF2000C7F112 /* CSFrom.swift in Sources */, B549F6761E56A92800FBAB2D /* CoreDataNativeType.swift in Sources */, - B509C7F71E54511B0061C547 /* CoreStoreImportableAttributeType.swift in Sources */, + B509C7F71E54511B0061C547 /* ImportableAttributeType.swift in Sources */, B5220E1F1D130810009BC71E /* CSListObserver.swift in Sources */, B52DD1941BE1F92500949AFE /* CoreStore.swift in Sources */, B52DD1A61BE1F92F00949AFE /* BaseDataTransaction+Importing.swift in Sources */, @@ -1985,7 +1985,7 @@ B52DD1BB1BE1F94000949AFE /* MigrationType.swift in Sources */, B52DD1C91BE1F94600949AFE /* NSManagedObjectContext+Transaction.swift in Sources */, B5220E151D130663009BC71E /* CoreStore+Observing.swift in Sources */, - B549F6611E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift in Sources */, + B549F6611E569C7400FBAB2D /* QueryableAttributeType.swift in Sources */, B52DD19B1BE1F92800949AFE /* CoreStoreLogger.swift in Sources */, B52DD1991BE1F92800949AFE /* DefaultLogger.swift in Sources */, B5220E201D130813009BC71E /* CSObjectMonitor.swift in Sources */, @@ -2069,7 +2069,7 @@ B5ECDC261CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, B563217F1BD65216006C9394 /* CoreStore.swift in Sources */, B549F6751E56A92800FBAB2D /* CoreDataNativeType.swift in Sources */, - B509C7F61E54511B0061C547 /* CoreStoreImportableAttributeType.swift in Sources */, + B509C7F61E54511B0061C547 /* ImportableAttributeType.swift in Sources */, B5E1B5961CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */, B5ECDC2C1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */, B56321911BD65216006C9394 /* BaseDataTransaction+Importing.swift in Sources */, @@ -2141,7 +2141,7 @@ B546F96B1C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */, B53FBA211CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */, B563218B1BD65216006C9394 /* UnsafeDataTransaction.swift in Sources */, - B549F6601E569C7400FBAB2D /* CoreStoreQueryableAttributeType.swift in Sources */, + B549F6601E569C7400FBAB2D /* QueryableAttributeType.swift in Sources */, B559CD461CAA8B6300E4D58B /* CSSetupResult.swift in Sources */, B56321A61BD65216006C9394 /* MigrationType.swift in Sources */, B5ECDBEF1CA6BF2000C7F112 /* CSFrom.swift in Sources */, diff --git a/CoreStoreDemo/CoreStoreDemo/Base.lproj/Main.storyboard b/CoreStoreDemo/CoreStoreDemo/Base.lproj/Main.storyboard index 38842c2..7194369 100644 --- a/CoreStoreDemo/CoreStoreDemo/Base.lproj/Main.storyboard +++ b/CoreStoreDemo/CoreStoreDemo/Base.lproj/Main.storyboard @@ -1,39 +1,28 @@ - - + + + + + - + + - + AppleSDGothicNeo-Regular - - - HelveticaNeue-Bold - HelveticaNeue-Bold + + HelveticaNeue - HelveticaNeue - - - HelveticaNeue-Light - HelveticaNeue-Light - HelveticaNeue-Light + HelveticaNeue-Bold + + HelveticaNeue-Light HelveticaNeue-Thin - HelveticaNeue-Light - HelveticaNeue-Light - HelveticaNeue-Light - HelveticaNeue-Light - HelveticaNeue-Light - HelveticaNeue-Light - HelveticaNeue-Light - HelveticaNeue-Light - HelveticaNeue-Light - HelveticaNeue-Light - + @@ -41,34 +30,34 @@ - + - - + + - + - + @@ -82,24 +71,24 @@ - + - + @@ -131,23 +120,23 @@ - + - - - + + + - + - + @@ -184,42 +173,42 @@ - + - + - + - + - - - + + + - + @@ -237,7 +226,7 @@ - + @@ -246,7 +235,7 @@ - + @@ -276,31 +265,31 @@ - + - + - + - + @@ -310,24 +299,24 @@ - + - + @@ -337,24 +326,24 @@ - + - + @@ -364,24 +353,24 @@ - + - + @@ -391,24 +380,24 @@ - + - + @@ -418,24 +407,24 @@ - + - + @@ -467,69 +456,69 @@ - + - + - + - + - + - + - - + @@ -591,23 +580,23 @@ - + - + - + - + @@ -636,11 +625,11 @@ - - + + - + @@ -657,19 +646,19 @@ - + - + - + - + @@ -677,7 +666,7 @@ @@ -716,20 +705,20 @@ - + - + - + - + - + @@ -737,7 +726,7 @@ @@ -780,11 +769,11 @@ - - + + - + @@ -805,17 +794,17 @@ - + - - + + - + @@ -842,30 +831,30 @@ - + - - - + + + - + - + - + @@ -901,11 +890,11 @@ - - + + - + @@ -926,15 +915,15 @@ - + - - - + + + - + @@ -943,13 +932,13 @@ - + - + @@ -958,17 +947,17 @@ - + - + @@ -981,7 +970,7 @@ - + @@ -1006,30 +995,30 @@ - + - - + + - + - + @@ -1052,30 +1041,30 @@ - + - - + + - + - + diff --git a/Sources/Fetching and Querying/BaseDataTransaction+Querying.swift b/Sources/Fetching and Querying/BaseDataTransaction+Querying.swift index 777bcd0..761e4d6 100644 --- a/Sources/Fetching and Querying/BaseDataTransaction+Querying.swift +++ b/Sources/Fetching and Querying/BaseDataTransaction+Querying.swift @@ -287,7 +287,7 @@ extension BaseDataTransaction: FetchableSource, QueryableSource { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? { + public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? { CoreStore.assert( self.isRunningInAllowedQueue(), @@ -306,7 +306,7 @@ extension BaseDataTransaction: FetchableSource, QueryableSource { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? { + public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? { CoreStore.assert( self.isRunningInAllowedQueue(), diff --git a/Sources/Fetching and Querying/Concrete Clauses/Select.swift b/Sources/Fetching and Querying/Concrete Clauses/Select.swift index 8fb17da..d51ab2c 100644 --- a/Sources/Fetching and Querying/Concrete Clauses/Select.swift +++ b/Sources/Fetching and Querying/Concrete Clauses/Select.swift @@ -36,19 +36,6 @@ import CoreData public protocol SelectResultType {} -// MARK: - SelectValueResultType - -/** - The `SelectValueResultType` protocol is implemented by return types supported by the `queryValue(...)` methods. - */ -public protocol SelectValueResultType: SelectResultType { - - static var cs_rawAttributeType: NSAttributeType { get } - - static func cs_fromQueryResultNativeType(_ value: Any) -> Self? -} - - // MARK: - SelectAttributesResultType /** @@ -395,193 +382,6 @@ public extension Select where T: NSManagedObjectID { } -// MARK: - NSManagedObjectID: SelectValueResultType - -extension NSManagedObjectID: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Self? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - NSNumber: SelectValueResultType - -extension NSNumber: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Self? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - NSString: SelectValueResultType - -extension NSString: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Self? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - NSDate: SelectValueResultType - -extension NSDate: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Self? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - NSData: SelectValueResultType - -extension NSData: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Self? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - Bool: SelectValueResultType - -extension Bool: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Bool? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - Int8: SelectValueResultType - -extension Int8: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Int8? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - Int16: SelectValueResultType - -extension Int16: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Int16? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - Int32: SelectValueResultType - -extension Int32: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Int32? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - Int64: SelectValueResultType - -extension Int64: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Int64? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - Int: SelectValueResultType - -extension Int: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Int? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - Double: SelectValueResultType - -extension Double: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Double? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - Float: SelectValueResultType - -extension Float: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Float? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - CGFloat: SelectValueResultType - -extension CGFloat: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> CGFloat? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - Date: SelectValueResultType - -extension Date: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Date? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - String: SelectValueResultType - -extension String: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> String? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - -// MARK: - Data: SelectValueResultType - -extension Data: SelectValueResultType { - - public static func cs_fromQueryResultNativeType(_ value: Any) -> Data? { - - return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType) - } -} - - // MARK: - NSDictionary: SelectAttributesResultType extension NSDictionary: SelectAttributesResultType { diff --git a/Sources/Fetching and Querying/Concrete Clauses/Where.swift b/Sources/Fetching and Querying/Concrete Clauses/Where.swift index 52549dc..1ebe5b5 100644 --- a/Sources/Fetching and Querying/Concrete Clauses/Where.swift +++ b/Sources/Fetching and Querying/Concrete Clauses/Where.swift @@ -120,7 +120,7 @@ public struct Where: FetchClause, QueryClause, DeleteClause, Hashable { - parameter keyPath: the keyPath to compare with - parameter value: the arguments for the `==` operator */ - public init(_ keyPath: KeyPath, isEqualTo value: T?) { + public init(_ keyPath: KeyPath, isEqualTo value: T?) { switch value { @@ -139,7 +139,7 @@ public struct Where: FetchClause, QueryClause, DeleteClause, Hashable { - parameter keyPath: the keyPath to compare with - parameter list: the sequence to check membership of */ - public init(_ keyPath: KeyPath, isMemberOf list: S) where S.Iterator.Element: CoreStoreQueryableAttributeType { + public init(_ keyPath: KeyPath, isMemberOf list: S) where S.Iterator.Element: QueryableAttributeType { self.init(NSPredicate(format: "\(keyPath) IN %@", list.map({ $0.cs_toQueryableNativeType() }) as NSArray)) } diff --git a/Sources/Fetching and Querying/CoreStore+Querying.swift b/Sources/Fetching and Querying/CoreStore+Querying.swift index 18ff1d0..5ea202a 100644 --- a/Sources/Fetching and Querying/CoreStore+Querying.swift +++ b/Sources/Fetching and Querying/CoreStore+Querying.swift @@ -205,7 +205,7 @@ public extension CoreStore { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - public static func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? { + public static func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? { return self.defaultStack.queryValue(from, selectClause, queryClauses) } @@ -220,7 +220,7 @@ public extension CoreStore { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - public static func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? { + public static func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? { return self.defaultStack.queryValue(from, selectClause, queryClauses) } diff --git a/Sources/Fetching and Querying/DataStack+Querying.swift b/Sources/Fetching and Querying/DataStack+Querying.swift index d9a771a..7a83938 100644 --- a/Sources/Fetching and Querying/DataStack+Querying.swift +++ b/Sources/Fetching and Querying/DataStack+Querying.swift @@ -250,7 +250,7 @@ extension DataStack: FetchableSource, QueryableSource { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? { + public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? { CoreStore.assert( Thread.isMainThread, @@ -269,7 +269,7 @@ extension DataStack: FetchableSource, QueryableSource { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? { + public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? { CoreStore.assert( Thread.isMainThread, diff --git a/Sources/Fetching and Querying/CoreStoreQueryableAttributeType.swift b/Sources/Fetching and Querying/QueryableAttributeType.swift similarity index 86% rename from Sources/Fetching and Querying/CoreStoreQueryableAttributeType.swift rename to Sources/Fetching and Querying/QueryableAttributeType.swift index d9cf5cd..28db6ec 100644 --- a/Sources/Fetching and Querying/CoreStoreQueryableAttributeType.swift +++ b/Sources/Fetching and Querying/QueryableAttributeType.swift @@ -1,5 +1,5 @@ // -// CoreStoreQueryableAttributeType.swift +// QueryableAttributeType.swift // CoreStore // // Copyright © 2017 John Rommel Estropia @@ -28,9 +28,9 @@ import CoreGraphics import CoreData -// MARK: - CoreStoreQueryableAttributeType +// MARK: - QueryableAttributeType -public protocol CoreStoreQueryableAttributeType: Hashable { +public protocol QueryableAttributeType: Hashable, SelectResultType { associatedtype QueryableNativeType: CoreDataNativeType @@ -44,25 +44,9 @@ public protocol CoreStoreQueryableAttributeType: Hashable { } -//// MARK: - NSManagedObject -// -//extension NSManagedObject: CoreStoreQueryableAttributeType { -// -// public typealias QueryableNativeType = NSManagedObjectID -// -// public static let cs_rawAttributeType: NSAttributeType = .objectIDAttributeType -// -// @inline(__always) -// public func cs_toQueryableNativeType() -> QueryableNativeType { -// -// return self.objectID -// } -//} - - // MARK: - NSManagedObjectID -extension NSManagedObjectID: CoreStoreQueryableAttributeType { +extension NSManagedObjectID: QueryableAttributeType { public typealias QueryableNativeType = NSManagedObjectID @@ -78,7 +62,7 @@ extension NSManagedObjectID: CoreStoreQueryableAttributeType { return forceCast(value) } - @inline(__always) + @nonobjc @inline(__always) public func cs_toQueryableNativeType() -> QueryableNativeType { return self @@ -88,7 +72,7 @@ extension NSManagedObjectID: CoreStoreQueryableAttributeType { // MARK: - NSNumber -extension NSNumber: CoreStoreQueryableAttributeType { +extension NSNumber: QueryableAttributeType { public typealias QueryableNativeType = NSNumber @@ -107,6 +91,7 @@ extension NSNumber: CoreStoreQueryableAttributeType { return forceCast(value) } + @nonobjc @inline(__always) public func cs_toQueryableNativeType() -> QueryableNativeType { return self @@ -116,7 +101,7 @@ extension NSNumber: CoreStoreQueryableAttributeType { // MARK: - NSNumber -extension NSDecimalNumber /*: CoreStoreQueryableAttributeType */ { +extension NSDecimalNumber /*: QueryableAttributeType */ { public override class var cs_rawAttributeType: NSAttributeType { @@ -127,7 +112,7 @@ extension NSDecimalNumber /*: CoreStoreQueryableAttributeType */ { // MARK: - NSString -extension NSString: CoreStoreQueryableAttributeType { +extension NSString: QueryableAttributeType { public typealias QueryableNativeType = NSString @@ -143,7 +128,7 @@ extension NSString: CoreStoreQueryableAttributeType { return forceCast(value) } - @inline(__always) + @nonobjc @inline(__always) public func cs_toQueryableNativeType() -> QueryableNativeType { return self @@ -153,7 +138,7 @@ extension NSString: CoreStoreQueryableAttributeType { // MARK: - NSDate -extension NSDate: CoreStoreQueryableAttributeType { +extension NSDate: QueryableAttributeType { public typealias QueryableNativeType = NSDate @@ -169,7 +154,7 @@ extension NSDate: CoreStoreQueryableAttributeType { return forceCast(value) } - @inline(__always) + @nonobjc @inline(__always) public func cs_toQueryableNativeType() -> QueryableNativeType { return self @@ -179,7 +164,7 @@ extension NSDate: CoreStoreQueryableAttributeType { // MARK: - NSData -extension NSData: CoreStoreQueryableAttributeType { +extension NSData: QueryableAttributeType { public typealias QueryableNativeType = NSData @@ -195,7 +180,7 @@ extension NSData: CoreStoreQueryableAttributeType { return forceCast(value) } - @inline(__always) + @nonobjc @inline(__always) public func cs_toQueryableNativeType() -> QueryableNativeType { return self @@ -205,7 +190,7 @@ extension NSData: CoreStoreQueryableAttributeType { // MARK: - Bool -extension Bool: CoreStoreQueryableAttributeType { +extension Bool: QueryableAttributeType { public typealias QueryableNativeType = NSNumber @@ -236,7 +221,7 @@ extension Bool: CoreStoreQueryableAttributeType { // MARK: - Int8 -extension Int8: CoreStoreQueryableAttributeType { +extension Int8: QueryableAttributeType { public typealias QueryableNativeType = NSNumber @@ -258,7 +243,7 @@ extension Int8: CoreStoreQueryableAttributeType { // MARK: - Int16 -extension Int16: CoreStoreQueryableAttributeType { +extension Int16: QueryableAttributeType { public typealias QueryableNativeType = NSNumber @@ -280,7 +265,7 @@ extension Int16: CoreStoreQueryableAttributeType { // MARK: - Int32 -extension Int32: CoreStoreQueryableAttributeType { +extension Int32: QueryableAttributeType { public typealias QueryableNativeType = NSNumber @@ -302,7 +287,7 @@ extension Int32: CoreStoreQueryableAttributeType { // MARK: - Int64 -extension Int64: CoreStoreQueryableAttributeType { +extension Int64: QueryableAttributeType { public typealias QueryableNativeType = NSNumber @@ -324,7 +309,7 @@ extension Int64: CoreStoreQueryableAttributeType { // MARK: - Int -extension Int: CoreStoreQueryableAttributeType { +extension Int: QueryableAttributeType { public typealias QueryableNativeType = NSNumber @@ -346,7 +331,7 @@ extension Int: CoreStoreQueryableAttributeType { // MARK: - Double -extension Double: CoreStoreQueryableAttributeType { +extension Double: QueryableAttributeType { public typealias QueryableNativeType = NSNumber @@ -368,7 +353,7 @@ extension Double: CoreStoreQueryableAttributeType { // MARK: - Float -extension Float: CoreStoreQueryableAttributeType { +extension Float: QueryableAttributeType { public typealias QueryableNativeType = NSNumber @@ -390,7 +375,7 @@ extension Float: CoreStoreQueryableAttributeType { // MARK: - CGFloat -extension CGFloat: CoreStoreQueryableAttributeType { +extension CGFloat: QueryableAttributeType { public typealias QueryableNativeType = NSNumber @@ -412,7 +397,7 @@ extension CGFloat: CoreStoreQueryableAttributeType { // MARK: - Date -extension Date: CoreStoreQueryableAttributeType { +extension Date: QueryableAttributeType { public typealias QueryableNativeType = NSDate @@ -434,7 +419,7 @@ extension Date: CoreStoreQueryableAttributeType { // MARK: - String -extension String: CoreStoreQueryableAttributeType { +extension String: QueryableAttributeType { public typealias QueryableNativeType = NSString @@ -456,7 +441,7 @@ extension String: CoreStoreQueryableAttributeType { // MARK: - Data -extension Data: CoreStoreQueryableAttributeType { +extension Data: QueryableAttributeType { public typealias QueryableNativeType = NSData @@ -478,19 +463,19 @@ extension Data: CoreStoreQueryableAttributeType { // MARK: - NSNull -extension NSNull: CoreStoreQueryableAttributeType { +extension NSNull: QueryableAttributeType { public typealias QueryableNativeType = NSNull public static let cs_rawAttributeType: NSAttributeType = .undefinedAttributeType - @inline(__always) + @nonobjc @inline(__always) public static func cs_fromQueryableNativeType(_ value: QueryableNativeType) -> Self? { return self.init() } - @inline(__always) + @nonobjc @inline(__always) public func cs_toQueryableNativeType() -> QueryableNativeType { return self diff --git a/Sources/Fetching and Querying/QueryableSource.swift b/Sources/Fetching and Querying/QueryableSource.swift index 0c9529e..b7d5482 100644 --- a/Sources/Fetching and Querying/QueryableSource.swift +++ b/Sources/Fetching and Querying/QueryableSource.swift @@ -44,7 +44,7 @@ public protocol QueryableSource: class { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? + func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? /** Queries aggregate values as specified by the `QueryClause`s. Requires at least a `Select` clause, and optional `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. @@ -56,7 +56,7 @@ public protocol QueryableSource: class { - parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. - returns: the result of the the query. The type of the return value is specified by the generic type of the `Select` parameter. */ - func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? + func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? /** Queries a dictionary of attribute values as specified by the `QueryClause`s. Requires at least a `Select` clause, and optional `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses. diff --git a/Sources/Importing/CoreStoreImportableAttributeType.swift b/Sources/Importing/ImportableAttributeType.swift similarity index 72% rename from Sources/Importing/CoreStoreImportableAttributeType.swift rename to Sources/Importing/ImportableAttributeType.swift index 790012d..c77d159 100644 --- a/Sources/Importing/CoreStoreImportableAttributeType.swift +++ b/Sources/Importing/ImportableAttributeType.swift @@ -1,5 +1,5 @@ // -// CoreStoreImportableAttributeType.swift +// ImportableAttributeType.swift // CoreStore // // Copyright © 2017 John Rommel Estropia @@ -27,9 +27,9 @@ import Foundation import CoreData -// MARK: - CoreStoreImportableAttributeType +// MARK: - ImportableAttributeType -public protocol CoreStoreImportableAttributeType: CoreStoreQueryableAttributeType { +public protocol ImportableAttributeType: QueryableAttributeType { associatedtype ImportableNativeType: QueryableNativeType @@ -38,12 +38,15 @@ public protocol CoreStoreImportableAttributeType: CoreStoreQueryableAttributeTyp @inline(__always) static func cs_fromImportableNativeType(_ value: ImportableNativeType) -> Self? + + @inline(__always) + func cs_toImportableNativeType() -> ImportableNativeType } // MARK: - NSNumber -extension NSNumber: CoreStoreImportableAttributeType { +extension NSNumber: ImportableAttributeType { public typealias ImportableNativeType = NSNumber @@ -62,12 +65,18 @@ extension NSNumber: CoreStoreImportableAttributeType { } return forceCast(value) } + + @nonobjc @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self + } } // MARK: - NSString -extension NSString: CoreStoreImportableAttributeType { +extension NSString: ImportableAttributeType { public typealias ImportableNativeType = NSString @@ -86,12 +95,18 @@ extension NSString: CoreStoreImportableAttributeType { } return forceCast(value) } + + @nonobjc @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self + } } // MARK: - NSDate -extension NSDate: CoreStoreImportableAttributeType { +extension NSDate: ImportableAttributeType { public typealias ImportableNativeType = NSDate @@ -110,12 +125,18 @@ extension NSDate: CoreStoreImportableAttributeType { } return forceCast(value) } + + @nonobjc @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self + } } // MARK: - NSData -extension NSData: CoreStoreImportableAttributeType { +extension NSData: ImportableAttributeType { public typealias ImportableNativeType = NSData @@ -134,12 +155,18 @@ extension NSData: CoreStoreImportableAttributeType { } return forceCast(value) } + + @nonobjc @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self + } } // MARK: - Bool -extension Bool: CoreStoreImportableAttributeType { +extension Bool: ImportableAttributeType { public typealias ImportableNativeType = NSNumber @@ -157,18 +184,24 @@ extension Bool: CoreStoreImportableAttributeType { case let decimal as NSDecimalNumber: // iOS: NSDecimalNumber(string: "0.5").boolValue // true // OSX: NSDecimalNumber(string: "0.5").boolValue // false - return NSNumber(value: decimal.doubleValue).boolValue + return decimal != NSDecimalNumber.zero default: return value.boolValue } } + + @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self as NSNumber + } } // MARK: - Int16 -extension Int16: CoreStoreImportableAttributeType { +extension Int16: ImportableAttributeType { public typealias ImportableNativeType = NSNumber @@ -183,12 +216,18 @@ extension Int16: CoreStoreImportableAttributeType { return value.int16Value } + + @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self as NSNumber + } } // MARK: - Int32 -extension Int32: CoreStoreImportableAttributeType { +extension Int32: ImportableAttributeType { public typealias ImportableNativeType = NSNumber @@ -203,12 +242,18 @@ extension Int32: CoreStoreImportableAttributeType { return value.int32Value } + + @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self as NSNumber + } } // MARK: - Int64 -extension Int64: CoreStoreImportableAttributeType { +extension Int64: ImportableAttributeType { public typealias ImportableNativeType = NSNumber @@ -223,12 +268,18 @@ extension Int64: CoreStoreImportableAttributeType { return value.int64Value } + + @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self as NSNumber + } } // MARK: - Double -extension Double: CoreStoreImportableAttributeType { +extension Double: ImportableAttributeType { public typealias ImportableNativeType = NSNumber @@ -243,12 +294,18 @@ extension Double: CoreStoreImportableAttributeType { return value.doubleValue } + + @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self as NSNumber + } } // MARK: - Float -extension Float: CoreStoreImportableAttributeType { +extension Float: ImportableAttributeType { public typealias ImportableNativeType = NSNumber @@ -263,12 +320,18 @@ extension Float: CoreStoreImportableAttributeType { return value.floatValue } + + @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self as NSNumber + } } // MARK: - Date -extension Date: CoreStoreImportableAttributeType { +extension Date: ImportableAttributeType { public typealias ImportableNativeType = NSDate @@ -283,12 +346,18 @@ extension Date: CoreStoreImportableAttributeType { return value as Date } + + @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self as NSDate + } } // MARK: - String -extension String: CoreStoreImportableAttributeType { +extension String: ImportableAttributeType { public typealias ImportableNativeType = NSString @@ -303,12 +372,18 @@ extension String: CoreStoreImportableAttributeType { return value as String } + + @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self as NSString + } } // MARK: - Data -extension Data: CoreStoreImportableAttributeType { +extension Data: ImportableAttributeType { public typealias ImportableNativeType = NSData @@ -323,4 +398,10 @@ extension Data: CoreStoreImportableAttributeType { return value as Data } + + @inline(__always) + public func cs_toImportableNativeType() -> ImportableNativeType { + + return self as NSData + } } diff --git a/Sources/Importing/ImportableUniqueObject.swift b/Sources/Importing/ImportableUniqueObject.swift index db7e1dc..2ae1091 100644 --- a/Sources/Importing/ImportableUniqueObject.swift +++ b/Sources/Importing/ImportableUniqueObject.swift @@ -59,7 +59,7 @@ public protocol ImportableUniqueObject: ImportableObject { /** The data type for the entity's unique ID attribute */ - associatedtype UniqueIDType: CoreStoreImportableAttributeType + associatedtype UniqueIDType: ImportableAttributeType /** The keyPath to the entity's unique ID attribute @@ -199,7 +199,7 @@ public extension ImportableUniqueObject where Self: NSManagedObject { set { self.setValue( - newValue.cs_toQueryableNativeType(), + newValue.cs_toImportableNativeType(), forKey: type(of: self).uniqueIDKeyPath ) } diff --git a/Sources/Internal/NSManagedObjectContext+Querying.swift b/Sources/Internal/NSManagedObjectContext+Querying.swift index 768d567..0be42c2 100644 --- a/Sources/Internal/NSManagedObjectContext+Querying.swift +++ b/Sources/Internal/NSManagedObjectContext+Querying.swift @@ -238,13 +238,13 @@ extension NSManagedObjectContext: FetchableSource, QueryableSource { // MARK: QueryableSource @nonobjc - public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? { + public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: QueryClause...) -> U? { return self.queryValue(from, selectClause, queryClauses) } @nonobjc - public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? { + public func queryValue(_ from: From, _ selectClause: Select, _ queryClauses: [QueryClause]) -> U? { let fetchRequest = CoreStoreFetchRequest() let storeFound = from.applyToFetchRequest(fetchRequest, context: self) @@ -415,7 +415,7 @@ internal extension NSManagedObjectContext { // MARK: Querying @nonobjc - internal func queryValue(_ selectTerms: [SelectTerm], fetchRequest: NSFetchRequest) -> U? { + internal func queryValue(_ selectTerms: [SelectTerm], fetchRequest: NSFetchRequest) -> U? { var fetchResults: [Any]? var fetchError: Error? @@ -433,9 +433,9 @@ internal extension NSManagedObjectContext { if let fetchResults = fetchResults { if let rawResult = fetchResults.first as? NSDictionary, - let rawObject = rawResult[selectTerms.keyPathForFirstSelectTerm()] { + let rawObject = rawResult[selectTerms.keyPathForFirstSelectTerm()] as? U.QueryableNativeType { - return Select.ReturnType.cs_fromQueryResultNativeType(rawObject) + return Select.ReturnType.cs_fromQueryableNativeType(rawObject) } return nil } diff --git a/Sources/ObjectiveC/CSSelect.swift b/Sources/ObjectiveC/CSSelect.swift index ea16c72..785413b 100644 --- a/Sources/ObjectiveC/CSSelect.swift +++ b/Sources/ObjectiveC/CSSelect.swift @@ -359,7 +359,7 @@ public final class CSSelect: NSObject { // MARK: CoreStoreObjectiveCType - public init(_ swiftValue: Select) { + public init(_ swiftValue: Select) { self.attributeType = T.cs_rawAttributeType self.selectTerms = swiftValue.selectTerms