diff --git a/CoreStore.xcodeproj/project.pbxproj b/CoreStore.xcodeproj/project.pbxproj index 33a860f..f491cb9 100644 --- a/CoreStore.xcodeproj/project.pbxproj +++ b/CoreStore.xcodeproj/project.pbxproj @@ -27,7 +27,6 @@ 82BA18AE1C4BBD3100A0916E /* DataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */; }; 82BA18AF1C4BBD3100A0916E /* CoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */; }; 82BA18B01C4BBD3100A0916E /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; - 82BA18B11C4BBD3100A0916E /* SaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF21AFF846E0064E85B /* SaveResult.swift */; }; 82BA18B21C4BBD3900A0916E /* ImportableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */; }; 82BA18B31C4BBD3900A0916E /* ImportableUniqueObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */; }; 82BA18B41C4BBD3900A0916E /* BaseDataTransaction+Importing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834B81B76311F001D3D50 /* BaseDataTransaction+Importing.swift */; }; @@ -165,10 +164,6 @@ B52557881D02DE8100E51965 /* FetchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557871D02DE8100E51965 /* FetchTests.swift */; }; B52557891D02DE8100E51965 /* FetchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557871D02DE8100E51965 /* FetchTests.swift */; }; B525578A1D02DE8100E51965 /* FetchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557871D02DE8100E51965 /* FetchTests.swift */; }; - B529C2041CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; }; - B529C2061CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; }; - B529C2071CA4A2DC007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; }; - B529C2081CA4A2DC007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; }; B52DD17E1BE1F8CD00949AFE /* CoreStore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B52DD1741BE1F8CC00949AFE /* CoreStore.framework */; }; B52DD1931BE1F8FD00949AFE /* CoreStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F03A53519C5C6DA005002A5 /* CoreStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B52DD1941BE1F92500949AFE /* CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F291E2619C6D3CF007AF63F /* CoreStore.swift */; }; @@ -185,7 +180,6 @@ B52DD1A01BE1F92C00949AFE /* UnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EED1AFF846E0064E85B /* UnsafeDataTransaction.swift */; }; B52DD1A11BE1F92C00949AFE /* DataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */; }; B52DD1A21BE1F92C00949AFE /* CoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */; }; - B52DD1A31BE1F92C00949AFE /* SaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF21AFF846E0064E85B /* SaveResult.swift */; }; B52DD1A41BE1F92F00949AFE /* ImportableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */; }; B52DD1A51BE1F92F00949AFE /* ImportableUniqueObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */; }; B52DD1A61BE1F92F00949AFE /* BaseDataTransaction+Importing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834B81B76311F001D3D50 /* BaseDataTransaction+Importing.swift */; }; @@ -371,7 +365,6 @@ B563218B1BD65216006C9394 /* UnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EED1AFF846E0064E85B /* UnsafeDataTransaction.swift */; }; B563218C1BD65216006C9394 /* DataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */; }; B563218D1BD65216006C9394 /* CoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */; }; - B563218E1BD65216006C9394 /* SaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF21AFF846E0064E85B /* SaveResult.swift */; }; B563218F1BD65216006C9394 /* ImportableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */; }; B56321901BD65216006C9394 /* ImportableUniqueObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */; }; B56321911BD65216006C9394 /* BaseDataTransaction+Importing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834B81B76311F001D3D50 /* BaseDataTransaction+Importing.swift */; }; @@ -414,10 +407,6 @@ B565079A1D3930D1000596DA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B56507991D3930D1000596DA /* Foundation.framework */; }; B565079E1D3930ED000596DA /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B565079D1D3930ED000596DA /* CoreData.framework */; }; B56507A01D3930F5000596DA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B565079F1D3930F5000596DA /* Foundation.framework */; }; - B5677D3D1CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */; }; - B5677D3F1CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */; }; - B5677D401CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */; }; - B5677D411CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */; }; B56923C41EB823B4007C4DC9 /* NSEntityDescription+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56923C31EB823B4007C4DC9 /* NSEntityDescription+Migration.swift */; }; B56923C51EB823B4007C4DC9 /* NSEntityDescription+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56923C31EB823B4007C4DC9 /* NSEntityDescription+Migration.swift */; }; B56923C61EB823B4007C4DC9 /* NSEntityDescription+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56923C31EB823B4007C4DC9 /* NSEntityDescription+Migration.swift */; }; @@ -503,10 +492,6 @@ B598514A1C90289E00C99590 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59AFF401C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift */; }; B598514B1C90289F00C99590 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59AFF401C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift */; }; B59AFF411C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59AFF401C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift */; }; - B59FA0AE1CCBAC95007C9BCA /* ICloudStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59FA0AD1CCBAC95007C9BCA /* ICloudStore.swift */; }; - B59FA0B01CCBACA7007C9BCA /* ICloudStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59FA0AD1CCBAC95007C9BCA /* ICloudStore.swift */; }; - B59FA0B11CCBACA7007C9BCA /* ICloudStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59FA0AD1CCBAC95007C9BCA /* ICloudStore.swift */; }; - B59FA0B21CCBACA8007C9BCA /* ICloudStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59FA0AD1CCBAC95007C9BCA /* ICloudStore.swift */; }; B5A1DAC81F111BFA003CF369 /* KeyPath+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A1DAC71F111BFA003CF369 /* KeyPath+Querying.swift */; }; B5A1DAC91F111BFA003CF369 /* KeyPath+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A1DAC71F111BFA003CF369 /* KeyPath+Querying.swift */; }; B5A1DACA1F111BFA003CF369 /* KeyPath+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A1DAC71F111BFA003CF369 /* KeyPath+Querying.swift */; }; @@ -576,10 +561,6 @@ B5D33A041E96012400C880DE /* Relationship.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D33A001E96012400C880DE /* Relationship.swift */; }; B5D372841A39CD6900F583D9 /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B5D372821A39CD6900F583D9 /* Model.xcdatamodeld */; }; B5D39A0219FD00C9000E91BB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5D39A0119FD00C9000E91BB /* Foundation.framework */; }; - B5D3F6451C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */; }; - B5D3F6461C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */; }; - B5D3F6471C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */; }; - B5D3F6481C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */; }; B5D7A5B61CA3BF8F005C752B /* CSInto.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D7A5B51CA3BF8F005C752B /* CSInto.swift */; }; B5D7A5B81CA3BF8F005C752B /* CSInto.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D7A5B51CA3BF8F005C752B /* CSInto.swift */; }; B5D7A5B91CA3BF8F005C752B /* CSInto.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D7A5B51CA3BF8F005C752B /* CSInto.swift */; }; @@ -642,7 +623,6 @@ B5E84EF61AFF846E0064E85B /* DataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */; }; B5E84EF71AFF846E0064E85B /* UnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EED1AFF846E0064E85B /* UnsafeDataTransaction.swift */; }; B5E84EF81AFF846E0064E85B /* CoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */; }; - B5E84EFB1AFF846E0064E85B /* SaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF21AFF846E0064E85B /* SaveResult.swift */; }; B5E84EFC1AFF846E0064E85B /* SynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF31AFF846E0064E85B /* SynchronousDataTransaction.swift */; }; B5E84F0D1AFF847B0064E85B /* BaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EFE1AFF847B0064E85B /* BaseDataTransaction+Querying.swift */; }; B5E84F0E1AFF847B0064E85B /* Tweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F001AFF847B0064E85B /* Tweak.swift */; }; @@ -804,7 +784,6 @@ B525577F1D029D2500E51965 /* TweakTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TweakTests.swift; sourceTree = ""; }; B52557831D02A07400E51965 /* SectionByTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SectionByTests.swift; sourceTree = ""; }; B52557871D02DE8100E51965 /* FetchTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchTests.swift; sourceTree = ""; }; - B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSSaveResult.swift; sourceTree = ""; }; B52DD1741BE1F8CC00949AFE /* CoreStore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreStore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B52DD17D1BE1F8CC00949AFE /* CoreStoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreStoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; B52F742E1E9B50D0005F3DAC /* SchemaHistory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SchemaHistory.swift; sourceTree = ""; }; @@ -858,7 +837,6 @@ B56507991D3930D1000596DA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B565079D1D3930ED000596DA /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/CoreData.framework; sourceTree = DEVELOPER_DIR; }; B565079F1D3930F5000596DA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ICloudStoreObserver.swift; sourceTree = ""; }; B56923C31EB823B4007C4DC9 /* NSEntityDescription+Migration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSEntityDescription+Migration.swift"; sourceTree = ""; }; B56923C81EB82410007C4DC9 /* NSManagedObjectModel+Migration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectModel+Migration.swift"; sourceTree = ""; }; B56923DC1EB827F5007C4DC9 /* CustomSchemaMappingProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomSchemaMappingProvider.swift; sourceTree = ""; }; @@ -881,7 +859,6 @@ B596BBB51DD5BC67001DCDD9 /* FetchableSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchableSource.swift; sourceTree = ""; }; B596BBBA1DD5C39F001DCDD9 /* QueryableSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QueryableSource.swift; sourceTree = ""; }; B59AFF401C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSPersistentStoreCoordinator+Setup.swift"; sourceTree = ""; }; - B59FA0AD1CCBAC95007C9BCA /* ICloudStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ICloudStore.swift; sourceTree = ""; }; B5A1DAC71F111BFA003CF369 /* KeyPath+Querying.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KeyPath+Querying.swift"; sourceTree = ""; }; B5A261201B64BFDB006EB6D3 /* MigrationType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MigrationType.swift; sourceTree = ""; }; B5A5F2651CAEC50F004AB9AF /* CSSelect.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSSelect.swift; sourceTree = ""; }; @@ -909,7 +886,6 @@ B5D33A001E96012400C880DE /* Relationship.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Relationship.swift; sourceTree = ""; }; B5D372831A39CD6900F583D9 /* Model.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Model.xcdatamodel; sourceTree = ""; }; B5D39A0119FD00C9000E91BB /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacySQLiteStore.swift; sourceTree = ""; }; B5D7A5B51CA3BF8F005C752B /* CSInto.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSInto.swift; sourceTree = ""; }; B5D9C8F61B160ED200E64F0E /* CoreStore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; path = CoreStore.podspec; sourceTree = SOURCE_ROOT; }; B5DAFB472203D9F8003FCCD0 /* Where.Expression.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Where.Expression.swift; sourceTree = ""; }; @@ -942,7 +918,6 @@ B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DataStack+Transaction.swift"; sourceTree = ""; }; B5E84EED1AFF846E0064E85B /* UnsafeDataTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnsafeDataTransaction.swift; sourceTree = ""; }; B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+Transaction.swift"; sourceTree = ""; }; - B5E84EF21AFF846E0064E85B /* SaveResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SaveResult.swift; sourceTree = ""; }; B5E84EF31AFF846E0064E85B /* SynchronousDataTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SynchronousDataTransaction.swift; sourceTree = ""; }; B5E84EFE1AFF847B0064E85B /* BaseDataTransaction+Querying.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "BaseDataTransaction+Querying.swift"; sourceTree = ""; }; B5E84F001AFF847B0064E85B /* Tweak.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Tweak.swift; sourceTree = ""; }; @@ -1266,7 +1241,6 @@ B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */, B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */, B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */, - B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */, ); name = Transactions; sourceTree = ""; @@ -1465,7 +1439,6 @@ B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */, B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */, B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */, - B5E84EF21AFF846E0064E85B /* SaveResult.swift */, ); name = Transactions; sourceTree = ""; @@ -1596,9 +1569,6 @@ B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */, B5FE4DA61C84FB4400FA6A91 /* InMemoryStore.swift */, B5FE4DAB1C85D44E00FA6A91 /* SQLiteStore.swift */, - B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */, - B59FA0AD1CCBAC95007C9BCA /* ICloudStore.swift */, - B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */, ); name = StorageInterfaces; sourceTree = ""; @@ -1900,11 +1870,9 @@ B5F1DA901B9AA991007C5CBB /* ImportableUniqueObject.swift in Sources */, B51260891E9B252B00402229 /* NSEntityDescription+DynamicModel.swift in Sources */, B504D0D61B02362500B2BBB1 /* CoreStore+Setup.swift in Sources */, - B529C2041CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */, B5D1E22C19FA9FBC003B2874 /* CoreStoreError.swift in Sources */, B5E84F131AFF847B0064E85B /* Where.swift in Sources */, B5D339D81E9489AB00C880DE /* CoreStoreObject.swift in Sources */, - B5D3F6451C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */, B56923FA1EB82956007C4DC9 /* CSXcodeDataModelSchema.swift in Sources */, B55514EA1EED8BF900BAB888 /* From+Querying.swift in Sources */, B596BBBB1DD5C39F001DCDD9 /* QueryableSource.swift in Sources */, @@ -1942,7 +1910,6 @@ B56923F01EB827F6007C4DC9 /* XcodeSchemaMappingProvider.swift in Sources */, B5E84F121AFF847B0064E85B /* OrderBy.swift in Sources */, B546F9581C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */, - B5677D3D1CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */, B5E84F361AFF85470064E85B /* NSManagedObjectContext+Setup.swift in Sources */, B5FAD6AE1B518DCB00714891 /* CoreStore+Migration.swift in Sources */, B5E84EE71AFF84610064E85B /* CoreStore+Logging.swift in Sources */, @@ -1992,7 +1959,6 @@ B5519A4A1CA1F4FB002BEF78 /* CSError.swift in Sources */, B52F742F1E9B50D0005F3DAC /* SchemaHistory.swift in Sources */, B5E84EF51AFF846E0064E85B /* BaseDataTransaction.swift in Sources */, - B5E84EFB1AFF846E0064E85B /* SaveResult.swift in Sources */, B5D339EC1E9495E500C880DE /* CoreStoreObject+Querying.swift in Sources */, B5E84F0F1AFF847B0064E85B /* From.swift in Sources */, B5FAD6A91B50A4B400714891 /* Progress+Convenience.swift in Sources */, @@ -2021,7 +1987,6 @@ B501FDDD1CA8D05000BE22EF /* CSSectionBy.swift in Sources */, B538BA771D15B3E30003A766 /* CoreStoreBridge.m in Sources */, B512607F1E97A18000402229 /* CoreStoreObject+Convenience.swift in Sources */, - B59FA0AE1CCBAC95007C9BCA /* ICloudStore.swift in Sources */, B5E84EF81AFF846E0064E85B /* CoreStore+Transaction.swift in Sources */, B5E84F301AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift in Sources */, B5831B7A1F34ACBA00A9F647 /* Transformable.swift in Sources */, @@ -2099,7 +2064,6 @@ 82BA18A21C4BBD1D00A0916E /* CoreStoreError.swift in Sources */, B512608A1E9B252B00402229 /* NSEntityDescription+DynamicModel.swift in Sources */, 82BA18B21C4BBD3900A0916E /* ImportableObject.swift in Sources */, - B529C2061CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */, 82BA18AE1C4BBD3100A0916E /* DataStack+Transaction.swift in Sources */, 82BA18AB1C4BBD3100A0916E /* AsynchronousDataTransaction.swift in Sources */, B5D339D91E9489AB00C880DE /* CoreStoreObject.swift in Sources */, @@ -2129,7 +2093,6 @@ B5831B761F34AC7A00A9F647 /* RelationshipProtocol.swift in Sources */, B5E1B5AA1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */, B5D339F21E94AF5800C880DE /* CoreStoreStrings.swift in Sources */, - B5D3F6461C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */, B5E1B59F1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */, B5ECDC251CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, B549F6741E56A92800FBAB2D /* CoreDataNativeType.swift in Sources */, @@ -2140,14 +2103,12 @@ B56923F11EB827F6007C4DC9 /* XcodeSchemaMappingProvider.swift in Sources */, 82BA18A11C4BBD1D00A0916E /* CoreStore.swift in Sources */, B546F9591C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */, - B5677D3F1CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */, 82BA18CF1C4BBD7100A0916E /* Functions.swift in Sources */, 82BA18A31C4BBD2200A0916E /* DataStack.swift in Sources */, 82BA18C81C4BBD5900A0916E /* MigrationChain.swift in Sources */, B546F9741C9C553300D5AC55 /* SetupResult.swift in Sources */, B5831F4022126FEC00D8604C /* KeyPathGenericBindings.swift in Sources */, B53CA9A31EF1EF1600E0F440 /* PartialObject.swift in Sources */, - 82BA18B11C4BBD3100A0916E /* SaveResult.swift in Sources */, 82BA18DD1C4BBE1400A0916E /* NSFetchedResultsController+Convenience.swift in Sources */, B5831F432212700400D8604C /* Where.Expression.swift in Sources */, B51260941E9B28F100402229 /* EntityIdentifier.swift in Sources */, @@ -2217,7 +2178,6 @@ 82BA18CB1C4BBD6400A0916E /* NSManagedObject+Convenience.swift in Sources */, 82BA18B51C4BBD3F00A0916E /* BaseDataTransaction+Querying.swift in Sources */, B501FDDF1CA8D05000BE22EF /* CSSectionBy.swift in Sources */, - B59FA0B01CCBACA7007C9BCA /* ICloudStore.swift in Sources */, B538BA781D15B3E30003A766 /* CoreStoreBridge.m in Sources */, B51260801E97A18000402229 /* CoreStoreObject+Convenience.swift in Sources */, 82BA18D31C4BBD7100A0916E /* NSManagedObjectContext+CoreStore.swift in Sources */, @@ -2293,7 +2253,6 @@ B5220E1E1D13080D009BC71E /* CSListMonitor.swift in Sources */, B5DBE2D01C9914A900B5CEFA /* CSCoreStore.swift in Sources */, B5CA2B0B1F7E5ACA004B1936 /* WhereClauseType.swift in Sources */, - B5677D411CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */, B56923F81EB828BF007C4DC9 /* CSDynamicSchema.swift in Sources */, B52DD1BE1BE1F94300949AFE /* Progress+Convenience.swift in Sources */, B512608C1E9B252B00402229 /* NSEntityDescription+DynamicModel.swift in Sources */, @@ -2322,7 +2281,6 @@ B52DD1AB1BE1F93900949AFE /* From.swift in Sources */, B546F95B1C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */, B52DD1A11BE1F92C00949AFE /* DataStack+Transaction.swift in Sources */, - B5D3F6481C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */, B5220E1C1D130801009BC71E /* FetchedResultsControllerDelegate.swift in Sources */, B52DD19E1BE1F92C00949AFE /* AsynchronousDataTransaction.swift in Sources */, B5831B781F34AC7A00A9F647 /* RelationshipProtocol.swift in Sources */, @@ -2377,7 +2335,6 @@ B52DD19C1BE1F92C00949AFE /* Into.swift in Sources */, B5FE4DA51C8481E100FA6A91 /* StorageInterface.swift in Sources */, B596BBB91DD5BC67001DCDD9 /* FetchableSource.swift in Sources */, - B529C2081CA4A2DC007E7EBD /* CSSaveResult.swift in Sources */, B5FE4DAA1C84FB4400FA6A91 /* InMemoryStore.swift in Sources */, B52DD1AF1BE1F93900949AFE /* GroupBy.swift in Sources */, B52DD1B01BE1F93900949AFE /* Tweak.swift in Sources */, @@ -2388,7 +2345,6 @@ B52DD1BA1BE1F94000949AFE /* MigrationChain.swift in Sources */, B50392FB1C479640009900CA /* NSManagedObject+Transaction.swift in Sources */, B52F74321E9B50D0005F3DAC /* SchemaHistory.swift in Sources */, - B52DD1A31BE1F92C00949AFE /* SaveResult.swift in Sources */, B5220E211D130816009BC71E /* CSObjectObserver.swift in Sources */, B5D339EF1E9495E500C880DE /* CoreStoreObject+Querying.swift in Sources */, B52DD19F1BE1F92C00949AFE /* SynchronousDataTransaction.swift in Sources */, @@ -2398,7 +2354,6 @@ B5215CAC1FA4810300139E3A /* QueryChainBuilder.swift in Sources */, B53FBA0F1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */, B52F744D1E9B8740005F3DAC /* CoreStoreSchema.swift in Sources */, - B59FA0B21CCBACA8007C9BCA /* ICloudStore.swift in Sources */, B52DD19A1BE1F92800949AFE /* CoreStore+Logging.swift in Sources */, B52DD1A71BE1F93200949AFE /* BaseDataTransaction+Querying.swift in Sources */, B546F96C1C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */, @@ -2497,7 +2452,6 @@ B56321801BD65216006C9394 /* CoreStoreError.swift in Sources */, B512608B1E9B252B00402229 /* NSEntityDescription+DynamicModel.swift in Sources */, B56321AD1BD6521C006C9394 /* MigrationManager.swift in Sources */, - B529C2071CA4A2DC007E7EBD /* CSSaveResult.swift in Sources */, B563219D1BD65216006C9394 /* DataStack+Observing.swift in Sources */, B56321961BD65216006C9394 /* From.swift in Sources */, B5D339DA1E9489AB00C880DE /* CoreStoreObject.swift in Sources */, @@ -2525,7 +2479,6 @@ B53FBA151CAB63CB00F0D40A /* Progress+ObjectiveC.swift in Sources */, B5E1B5AB1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */, B5831B771F34AC7A00A9F647 /* RelationshipProtocol.swift in Sources */, - B5D3F6471C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */, B5D339F31E94AF5800C880DE /* CoreStoreStrings.swift in Sources */, B5E1B5A01CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */, B5ECDC261CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, @@ -2537,7 +2490,6 @@ B56321911BD65216006C9394 /* BaseDataTransaction+Importing.swift in Sources */, B56923F21EB827F6007C4DC9 /* XcodeSchemaMappingProvider.swift in Sources */, B546F95A1C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */, - B5677D401CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */, B56321941BD65216006C9394 /* CoreStore+Querying.swift in Sources */, B56321811BD65216006C9394 /* DataStack.swift in Sources */, B56321A81BD65219006C9394 /* NSManagedObject+Convenience.swift in Sources */, @@ -2591,7 +2543,6 @@ B56321991BD65216006C9394 /* OrderBy.swift in Sources */, B5D339EE1E9495E500C880DE /* CoreStoreObject+Querying.swift in Sources */, B56321A51BD65216006C9394 /* MigrationChain.swift in Sources */, - B563218E1BD65216006C9394 /* SaveResult.swift in Sources */, B5E222261CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */, B56321A21BD65216006C9394 /* ListObserver.swift in Sources */, B5215CAB1FA4810300139E3A /* QueryChainBuilder.swift in Sources */, @@ -2615,7 +2566,6 @@ B56321851BD65216006C9394 /* CoreStore+Logging.swift in Sources */, B56321921BD65216006C9394 /* BaseDataTransaction+Querying.swift in Sources */, B501FDE01CA8D05000BE22EF /* CSSectionBy.swift in Sources */, - B59FA0B11CCBACA7007C9BCA /* ICloudStore.swift in Sources */, B538BA791D15B3E30003A766 /* CoreStoreBridge.m in Sources */, B51260811E97A18000402229 /* CoreStoreObject+Convenience.swift in Sources */, B56321B11BD6521C006C9394 /* NSManagedObjectContext+CoreStore.swift in Sources */, diff --git a/Sources/AsynchronousDataTransaction.swift b/Sources/AsynchronousDataTransaction.swift index be5259e..d0427b7 100644 --- a/Sources/AsynchronousDataTransaction.swift +++ b/Sources/AsynchronousDataTransaction.swift @@ -212,67 +212,4 @@ public final class AsynchronousDataTransaction: BaseDataTransaction { group.wait() self.context.reset() } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use the new auto-commiting methods `DataStack.perform(asynchronous:completion:)` or `DataStack.perform(asynchronous:success:failure:)`. Please read the documentation on the behavior of the new methods.") - public func commit(_ completion: @escaping (_ result: SaveResult) -> Void = { _ in }) { - - CoreStore.assert( - self.transactionQueue.cs_isCurrentExecutionContext(), - "Attempted to commit a \(cs_typeName(self)) outside its designated queue." - ) - CoreStore.assert( - !self.isCommitted, - "Attempted to commit a \(cs_typeName(self)) more than once." - ) - self.autoCommit { (hasChanges, error) in - - if let error = error { - - completion(SaveResult(error)) - } - else { - - completion(SaveResult(hasChanges: hasChanges)) - } - } - } - - @available(*, deprecated, message: "Secondary tasks spawned from AsynchronousDataTransactions and SynchronousDataTransactions are no longer supported. ") - @discardableResult - public func beginSynchronous(_ closure: @escaping (_ transaction: SynchronousDataTransaction) -> Void) -> SaveResult? { - - CoreStore.assert( - self.transactionQueue.cs_isCurrentExecutionContext(), - "Attempted to begin a child transaction from a \(cs_typeName(self)) outside its designated queue." - ) - CoreStore.assert( - !self.isCommitted, - "Attempted to begin a child transaction from an already committed \(cs_typeName(self))." - ) - let childTransaction = SynchronousDataTransaction( - mainContext: self.context, - queue: self.childTransactionQueue - ) - childTransaction.transactionQueue.cs_sync { - - closure(childTransaction) - - if !childTransaction.isCommitted && childTransaction.hasChanges { - - CoreStore.log( - .warning, - message: "The closure for the \(cs_typeName(childTransaction)) completed without being committed. All changes made within the transaction were discarded." - ) - } - } - switch childTransaction.result { - - case .none: return nil - case .some(let hasChanges, nil): return SaveResult(hasChanges: hasChanges) - case .some(_, let error?): return SaveResult(error) - } - } } diff --git a/Sources/BaseDataTransaction+Querying.swift b/Sources/BaseDataTransaction+Querying.swift index e2a2fb5..d659fc2 100644 --- a/Sources/BaseDataTransaction+Querying.swift +++ b/Sources/BaseDataTransaction+Querying.swift @@ -561,13 +561,4 @@ extension BaseDataTransaction: FetchableSource, QueryableSource { return self.context } - - - // MARK: Obsoleted - - @available(swift, obsoleted: 3.1, renamed: "unsafeContext()") - public func internalContext() -> NSManagedObjectContext { - - fatalError() - } } diff --git a/Sources/BaseDataTransaction.swift b/Sources/BaseDataTransaction.swift index cbee498..b61bd50 100644 --- a/Sources/BaseDataTransaction.swift +++ b/Sources/BaseDataTransaction.swift @@ -442,49 +442,4 @@ public /*abstract*/ class BaseDataTransaction { self.context.reset() } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use insertedObjects(_:) and pass the specific entity type") - public func insertedObjects() -> Set { - - CoreStore.assert( - self.transactionQueue.cs_isCurrentExecutionContext(), - "Attempted to access inserted objects from a \(cs_typeName(self)) outside its designated queue." - ) - CoreStore.assert( - !self.isCommitted, - "Attempted to access inserted objects from an already committed \(cs_typeName(self))." - ) - return self.context.insertedObjects - } - - @available(*, deprecated, message: "Use updatedObjects(_:) and pass the specific entity type") - public func updatedObjects() -> Set { - - CoreStore.assert( - self.transactionQueue.cs_isCurrentExecutionContext(), - "Attempted to access updated objects from a \(cs_typeName(self)) outside its designated queue." - ) - CoreStore.assert( - !self.isCommitted, - "Attempted to access updated objects from an already committed \(cs_typeName(self))." - ) - return self.context.updatedObjects - } - - @available(*, deprecated, message: "Use deletedObjects(_:) and pass the specific entity type") - public func deletedObjects() -> Set { - - CoreStore.assert( - self.transactionQueue.cs_isCurrentExecutionContext(), - "Attempted to access deleted objects from a \(cs_typeName(self)) outside its designated queue." - ) - CoreStore.assert( - !self.isCommitted, - "Attempted to access deleted objects from an already committed \(cs_typeName(self))." - ) - return self.context.deletedObjects - } } diff --git a/Sources/CSAsynchronousDataTransaction.swift b/Sources/CSAsynchronousDataTransaction.swift index 99a432b..80ad0fc 100644 --- a/Sources/CSAsynchronousDataTransaction.swift +++ b/Sources/CSAsynchronousDataTransaction.swift @@ -156,41 +156,6 @@ public final class CSAsynchronousDataTransaction: CSBaseDataTransaction, CoreSto super.init(swiftValue) } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use the new -[CSAsynchronousDataTransaction commitWithSuccess:failure:] method.") - @objc - public func commitWithCompletion(_ completion: ((_ result: CSSaveResult) -> Void)?) { - - CoreStore.assert( - self.bridgeToSwift.transactionQueue.cs_isCurrentExecutionContext(), - "Attempted to commit a \(cs_typeName(self)) outside its designated queue." - ) - CoreStore.assert( - !self.bridgeToSwift.isCommitted, - "Attempted to commit a \(cs_typeName(self)) more than once." - ) - self.bridgeToSwift.commit { (result) in - - completion?(result.bridgeToObjectiveC) - } - } - - @available(*, deprecated, message: "Secondary tasks spawned from CSAsynchronousDataTransactions and CSSynchronousDataTransactions are no longer supported. ") - @objc - @discardableResult - public func beginSynchronous(_ closure: @escaping (_ transaction: CSSynchronousDataTransaction) -> Void) -> CSSaveResult? { - - return bridge { - - self.bridgeToSwift.beginSynchronous { (transaction) in - - closure(transaction.bridgeToObjectiveC) - } - } - } } diff --git a/Sources/CSBaseDataTransaction.swift b/Sources/CSBaseDataTransaction.swift index ae88425..c909e4b 100644 --- a/Sources/CSBaseDataTransaction.swift +++ b/Sources/CSBaseDataTransaction.swift @@ -251,28 +251,4 @@ public class CSBaseDataTransaction: NSObject { self.swiftTransaction = swiftValue super.init() } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use -[insertedObjectsOfType:] and pass the specific entity class") - @objc - public func insertedObjects() -> Set { - - return self.swiftTransaction.insertedObjects() - } - - @available(*, deprecated, message: "Use -[updatedObjectsOfType:] and pass the specific entity class") - @objc - public func updatedObjects() -> Set { - - return self.swiftTransaction.updatedObjects() - } - - @available(*, deprecated, message: "Use -[deletedObjectsOfType:] and pass the specific entity class") - @objc - public func deletedObjects() -> Set { - - return self.swiftTransaction.deletedObjects() - } } diff --git a/Sources/CSCoreStore+Setup.swift b/Sources/CSCoreStore+Setup.swift index 148d63b..667d325 100644 --- a/Sources/CSCoreStore+Setup.swift +++ b/Sources/CSCoreStore+Setup.swift @@ -125,21 +125,4 @@ extension CSCoreStore { return self.defaultStack.addSQLiteStorageAndWait(storage, error: error) } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use the new +entityTypesByNameForType: method passing `[NSManagedObject class]` as argument.") - @objc - public static var entityClassesByName: [EntityName: NSManagedObject.Type] { - - return CoreStore.entityTypesByName - } - - @available(*, deprecated, message: "Use the new +entityTypesByNameForType: method passing `[NSManagedObject class]` as argument.") - @objc - public static func entityClassWithName(_ name: EntityName) -> NSManagedObject.Type? { - - return CoreStore.entityTypesByName[name] - } } diff --git a/Sources/CSCoreStore+Transaction.swift b/Sources/CSCoreStore+Transaction.swift index 9dd96dd..74db9ef 100644 --- a/Sources/CSCoreStore+Transaction.swift +++ b/Sources/CSCoreStore+Transaction.swift @@ -91,15 +91,4 @@ extension CSCoreStore { CoreStore.refreshAndMergeAllObjects() } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use the new +[CSCoreStore beginSynchronous:error:] API that reports failure using an error instance.") - @objc - @discardableResult - public static func beginSynchronous(_ closure: @escaping (_ transaction: CSSynchronousDataTransaction) -> Void) -> CSSaveResult? { - - return self.defaultStack.beginSynchronous(closure) - } } diff --git a/Sources/CSDataStack+Transaction.swift b/Sources/CSDataStack+Transaction.swift index baee052..72e9839 100644 --- a/Sources/CSDataStack+Transaction.swift +++ b/Sources/CSDataStack+Transaction.swift @@ -131,21 +131,4 @@ extension CSDataStack { self.bridgeToSwift.refreshAndMergeAllObjects() } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use the new -[CSDataStack beginSynchronous:error:] API that reports failure using an error instance.") - @objc - @discardableResult - public func beginSynchronous(_ closure: @escaping (_ transaction: CSSynchronousDataTransaction) -> Void) -> CSSaveResult? { - - return bridge { - - self.bridgeToSwift.beginSynchronous { (transaction) in - - closure(transaction.bridgeToObjectiveC) - } - } - } } diff --git a/Sources/CSDataStack.swift b/Sources/CSDataStack.swift index a8a8f4d..55d8344 100644 --- a/Sources/CSDataStack.swift +++ b/Sources/CSDataStack.swift @@ -204,60 +204,6 @@ public final class CSDataStack: NSObject, CoreStoreObjectiveCType { self.bridgeToSwift = swiftValue super.init() } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use the -[initWithXcodeModelName:bundle:versionChain:] initializer.") - @objc - public convenience init(modelName: XcodeDataModelFileName?, bundle: Bundle?, versionChain: [String]?) { - - self.init( - DataStack( - xcodeModelName: modelName ?? DataStack.applicationName, - bundle: bundle ?? Bundle.main, - migrationChain: versionChain.flatMap { MigrationChain($0) } ?? nil - ) - ) - } - - @available(*, deprecated, message: "Use the -[initWithModelName:bundle:versionChain:] initializer.") - @objc - public convenience init(model: NSManagedObjectModel, versionChain: [String]?) { - - self.init( - DataStack( - model: model, - migrationChain: versionChain.flatMap { MigrationChain($0) } ?? nil - ) - ) - } - - @available(*, deprecated, message: "Use the -[initWithModelName:bundle:versionTree:] initializer.") - @objc - public convenience init(model: NSManagedObjectModel, versionTree: [String]?) { - - self.init( - DataStack( - model: model, - migrationChain: versionTree.flatMap { MigrationChain($0) } ?? nil - ) - ) - } - - @available(*, deprecated, message: "Use the new -entityTypesByNameForType: method passing `[NSManagedObject class]` as argument.") - @objc - public var entityClassesByName: [EntityName: NSManagedObject.Type] { - - return self.bridgeToSwift.entityTypesByName - } - - @available(*, deprecated, message: "Use the new -entityTypesByNameForType: method passing `[NSManagedObject class]` as argument.") - @objc - public func entityClassWithName(_ name: EntityName) -> NSManagedObject.Type? { - - return self.bridgeToSwift.entityTypesByName[name] - } } diff --git a/Sources/CSSQliteStore.swift b/Sources/CSSQliteStore.swift index b505558..e84e29b 100644 --- a/Sources/CSSQliteStore.swift +++ b/Sources/CSSQliteStore.swift @@ -191,23 +191,6 @@ public final class CSSQLiteStore: NSObject, CSLocalStorage, CoreStoreObjectiveCT self.bridgeToSwift = swiftValue super.init() } - - - // MARK: Obsoleted - - @available(swift, obsoleted: 3.1, message: "The `mappingModelBundles` argument of this method is ignored. Use the new -[CSSQLiteStore initWithFileURL:configuration:localStorageOptions:]) initializer instead.") - @objc - public convenience init(fileURL: URL, configuration: ModelConfiguration, mappingModelBundles: [Bundle]?, localStorageOptions: Int) { - - fatalError() - } - - @available(swift, obsoleted: 3.1, message: "The `mappingModelBundles` argument of this method is ignored. Use the new -[CSSQLiteStore initWithFileName:configuration:localStorageOptions:]) initializer instead.") - @objc - public convenience init(fileName: String, configuration: ModelConfiguration, mappingModelBundles: [Bundle]?, localStorageOptions: Int) { - - fatalError() - } } diff --git a/Sources/CSSaveResult.swift b/Sources/CSSaveResult.swift deleted file mode 100644 index 6b32b0a..0000000 --- a/Sources/CSSaveResult.swift +++ /dev/null @@ -1,147 +0,0 @@ -// -// CSSaveResult.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation -import CoreData - - -// MARK: - CSSaveResult - -@available(*, deprecated, message: "Use APIs that report failures with `CSError`s instead.") -@objc -public final class CSSaveResult: NSObject, CoreStoreObjectiveCType { - - @objc - public var isSuccess: Bool { - - return self.bridgeToSwift.boolValue - } - - @objc - public var isFailure: Bool { - - return !self.bridgeToSwift.boolValue - } - - @objc - public var hasChanges: Bool { - - guard case .success(let hasChanges) = self.bridgeToSwift else { - - return false - } - return hasChanges - } - - @objc - public var error: NSError? { - - guard case .failure(let error) = self.bridgeToSwift else { - - return nil - } - return error.bridgeToObjectiveC - } - - @objc - public func handleSuccess(_ success: (_ hasChanges: Bool) -> Void, failure: (_ error: NSError) -> Void) { - - switch self.bridgeToSwift { - - case .success(let hasChanges): - success(hasChanges) - - case .failure(let error): - failure(error.bridgeToObjectiveC) - } - } - - @objc - public func handleSuccess(_ success: (_ hasChanges: Bool) -> Void) { - - guard case .success(let hasChanges) = self.bridgeToSwift else { - - return - } - success(hasChanges) - } - - @objc - public func handleFailure(_ failure: (_ error: NSError) -> Void) { - - guard case .failure(let error) = self.bridgeToSwift else { - - return - } - failure(error.bridgeToObjectiveC) - } - - - // MARK: NSObject - - public override var hash: Int { - - return self.bridgeToSwift.hashValue - } - - public override func isEqual(_ object: Any?) -> Bool { - - guard let object = object as? CSSaveResult else { - - return false - } - return self.bridgeToSwift == object.bridgeToSwift - } - - public override var description: String { - - return "(\(String(reflecting: type(of: self)))) \(self.bridgeToSwift.coreStoreDumpString)" - } - - - // MARK: CoreStoreObjectiveCType - - public let bridgeToSwift: SaveResult - - public required init(_ swiftValue: SaveResult) { - - self.bridgeToSwift = swiftValue - super.init() - } -} - - -// MARK: - SaveResult - -@available(*, deprecated, message: "Use the new DataStack.perform(asynchronous:...) and DataStack.perform(synchronous:...) family of APIs") -extension SaveResult: CoreStoreSwiftType { - - // MARK: CoreStoreSwiftType - - public var bridgeToObjectiveC: CSSaveResult { - - return CSSaveResult(self) - } -} diff --git a/Sources/CSSynchronousDataTransaction.swift b/Sources/CSSynchronousDataTransaction.swift index 3c49d8d..4ef6205 100644 --- a/Sources/CSSynchronousDataTransaction.swift +++ b/Sources/CSSynchronousDataTransaction.swift @@ -143,33 +143,6 @@ public final class CSSynchronousDataTransaction: CSBaseDataTransaction, CoreStor super.init(swiftValue) } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use the new -[CSSynchronousDataTransaction commitAndWaitWithError:] method") - @objc - public func commitAndWait() -> CSSaveResult { - - return bridge { - - self.bridgeToSwift.commitAndWait() - } - } - - @available(*, deprecated, message: "Secondary tasks spawned from CSAsynchronousDataTransactions and CSSynchronousDataTransactions are no longer supported. ") - @objc - @discardableResult - public func beginSynchronous(_ closure: @escaping (_ transaction: CSSynchronousDataTransaction) -> Void) -> CSSaveResult? { - - return bridge { - - self.bridgeToSwift.beginSynchronous { (transaction) in - - closure(transaction.bridgeToObjectiveC) - } - } - } } diff --git a/Sources/CSUnsafeDataTransaction.swift b/Sources/CSUnsafeDataTransaction.swift index b56ab1d..b2a7e9d 100644 --- a/Sources/CSUnsafeDataTransaction.swift +++ b/Sources/CSUnsafeDataTransaction.swift @@ -203,51 +203,6 @@ public final class CSUnsafeDataTransaction: CSBaseDataTransaction, CoreStoreObje super.init(swiftValue) } - - - // MARK: Deprecated - - @available(*, deprecated, renamed: "unsafeContext()") - @objc - public var internalContext: NSManagedObjectContext { - - return self.bridgeToSwift.context - } - - @available(*, deprecated, message: "Use the new -[CSUnsafeDataTransaction commitWithSuccess:failure:] method") - @objc - public func commit(_ completion: ((_ result: CSSaveResult) -> Void)?) { - - self.bridgeToSwift.context.saveAsynchronouslyWithCompletion { (hasChanges, error) in - - defer { - - withExtendedLifetime(self, {}) - } - if let error = error { - - completion?(SaveResult(error).bridgeToObjectiveC) - } - else { - - completion?(SaveResult(hasChanges: hasChanges).bridgeToObjectiveC) - } - } - } - - @available(*, deprecated, message: "Use the new -[CSUnsafeDataTransaction commitAndWaitWithError:] method") - @objc - public func commitAndWait() -> CSSaveResult { - - return bridge { () -> SaveResult in - - switch self.bridgeToSwift.context.saveSynchronously(waitForMerge: true) { - - case (let hasChanges, nil): return SaveResult(hasChanges: hasChanges) - case (_, let error?): return SaveResult(error) - } - } - } } diff --git a/Sources/CoreStore+Setup.swift b/Sources/CoreStore+Setup.swift index a0810e8..c3e3e41 100644 --- a/Sources/CoreStore+Setup.swift +++ b/Sources/CoreStore+Setup.swift @@ -139,22 +139,4 @@ extension CoreStore { return try self.defaultStack.addStorageAndWait(storage) } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use the new CoreStore.entityTypesByName(for:) method passing `NSManagedObject.self` as argument.") - public static var entityTypesByName: [EntityName: NSManagedObject.Type] { - - return self.defaultStack.entityTypesByName - } - - - // MARK: Obsolete - - @available(swift, obsoleted: 3.1, renamed: "entityDescription(for:)") - public static func entityDescriptionForType(_ type: NSManagedObject.Type) -> NSEntityDescription? { - - return self.entityDescription(for: type) - } } diff --git a/Sources/CoreStore+Transaction.swift b/Sources/CoreStore+Transaction.swift index 334b9a6..8f8f3ae 100644 --- a/Sources/CoreStore+Transaction.swift +++ b/Sources/CoreStore+Transaction.swift @@ -84,20 +84,4 @@ extension CoreStore { self.defaultStack.refreshAndMergeAllObjects() } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use the new auto-commiting methods `perform(asynchronous:completion:)` or `perform(asynchronous:success:failure:)`. Please read the documentation on the behavior of the new methods.") - public static func beginAsynchronous(_ closure: @escaping (_ transaction: AsynchronousDataTransaction) -> Void) { - - self.defaultStack.beginAsynchronous(closure) - } - - @available(*, deprecated, message: "Use the new auto-commiting method `perform(synchronous:)`. Please read the documentation on the behavior of the new methods.") - @discardableResult - public static func beginSynchronous(_ closure: @escaping (_ transaction: SynchronousDataTransaction) -> Void) -> SaveResult? { - - return self.defaultStack.beginSynchronous(closure) - } } diff --git a/Sources/CoreStoreObject+Querying.swift b/Sources/CoreStoreObject+Querying.swift index c3b8ce3..c5bb581 100644 --- a/Sources/CoreStoreObject+Querying.swift +++ b/Sources/CoreStoreObject+Querying.swift @@ -258,69 +258,3 @@ extension RelationshipContainer.ToOne { return Where(relationship.keyPath, isMemberOf: sequence) } } - - -// MARK: Deprecated - -extension DynamicObject where Self: CoreStoreObject { - - @available(*, deprecated, message: "Use the String(keyPath:) initializer and pass the KeyPath: String(keyPath: \\Person.name)") - public static func keyPath(_ attribute: (Self) -> ValueContainer.Required) -> String { - - return attribute(self.meta).keyPath - } - - @available(*, deprecated, message: "Use the String(keyPath:) initializer and pass the KeyPath: String(keyPath: \\Person.name)") - public static func keyPath(_ attribute: (Self) -> ValueContainer.Optional) -> String { - - return attribute(self.meta).keyPath - } - - @available(*, deprecated, message: "Use the String(keyPath:) initializer and pass the KeyPath: String(keyPath: \\Person.friend)") - public static func keyPath(_ relationship: (Self) -> RelationshipContainer.ToOne) -> String { - - return relationship(self.meta).keyPath - } - - @available(*, deprecated, message: "Use the String(keyPath:) initializer and pass the KeyPath: String(keyPath: \\Person.friends)") - public static func keyPath(_ relationship: (Self) -> RelationshipContainer.ToManyOrdered) -> String { - - return relationship(self.meta).keyPath - } - - @available(*, deprecated, message: "Use the String(keyPath:) initializer and pass the KeyPath: String(keyPath: \\Person.friends)") - public static func keyPath(_ relationship: (Self) -> RelationshipContainer.ToManyUnordered) -> String { - - return relationship(self.meta).keyPath - } - - @available(*, deprecated, message: "Use the Where(_:) initializer that accepts the same closure argument") - public static func `where`(_ condition: (Self) -> Where) -> Where { - - return condition(self.meta) - } - - @available(*, deprecated, message: "Use the new OrderBy(ascending:) overload that accepts the same closure argument") - public static func orderBy(ascending attribute: (Self) -> ValueContainer.Required) -> OrderBy { - - return OrderBy(.ascending(attribute(self.meta).keyPath)) - } - - @available(*, deprecated, message: "Use the new OrderBy(ascending:) overload that accepts the same closure argument") - public static func orderBy(ascending attribute: (Self) -> ValueContainer.Optional) -> OrderBy { - - return OrderBy(.ascending(attribute(self.meta).keyPath)) - } - - @available(*, deprecated, message: "Use the new OrderBy(descending:) overload that accepts the same closure argument") - public static func orderBy(descending attribute: (Self) -> ValueContainer.Required) -> OrderBy { - - return OrderBy(.descending(attribute(self.meta).keyPath)) - } - - @available(*, deprecated, message: "Use the new OrderBy(descending:) overload that accepts the same closure argument") - public static func orderBy(descending attribute: (Self) -> ValueContainer.Optional) -> OrderBy { - - return OrderBy(.descending(attribute(self.meta).keyPath)) - } -} diff --git a/Sources/DataStack+Querying.swift b/Sources/DataStack+Querying.swift index 872007f..7a7a7ac 100644 --- a/Sources/DataStack+Querying.swift +++ b/Sources/DataStack+Querying.swift @@ -507,13 +507,4 @@ extension DataStack: FetchableSource, QueryableSource { return self.mainContext } - - - // MARK: Obsoleted - - @available(swift, obsoleted: 3.1, renamed: "unsafeContext()") - public func internalContext() -> NSManagedObjectContext { - - fatalError() - } } diff --git a/Sources/DataStack+Transaction.swift b/Sources/DataStack+Transaction.swift index aeaba3b..162a811 100644 --- a/Sources/DataStack+Transaction.swift +++ b/Sources/DataStack+Transaction.swift @@ -164,56 +164,4 @@ extension DataStack { ) self.mainContext.refreshAndMergeAllObjects() } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use the new auto-commiting methods `perform(asynchronous:completion:)` or `perform(asynchronous:success:failure:)`. Please read the documentation on the behavior of the new methods.") - public func beginAsynchronous(_ closure: @escaping (_ transaction: AsynchronousDataTransaction) -> Void) { - - let transaction = AsynchronousDataTransaction( - mainContext: self.rootSavingContext, - queue: self.childTransactionQueue - ) - transaction.transactionQueue.cs_async { - - closure(transaction) - - if !transaction.isCommitted && transaction.hasChanges { - - CoreStore.log( - .warning, - message: "The closure for the \(cs_typeName(transaction)) completed without being committed. All changes made within the transaction were discarded." - ) - } - } - } - - @available(*, deprecated, message: "Use the new auto-commiting method `perform(synchronous:)`. Please read the documentation on the behavior of the new methods.") - @discardableResult - public func beginSynchronous(_ closure: @escaping (_ transaction: SynchronousDataTransaction) -> Void) -> SaveResult? { - - let transaction = SynchronousDataTransaction( - mainContext: self.rootSavingContext, - queue: self.childTransactionQueue - ) - transaction.transactionQueue.cs_sync { - - closure(transaction) - - if !transaction.isCommitted && transaction.hasChanges { - - CoreStore.log( - .warning, - message: "The closure for the \(cs_typeName(transaction)) completed without being committed. All changes made within the transaction were discarded." - ) - } - } - switch transaction.result { - - case .none: return nil - case .some(let hasChanges, nil): return SaveResult(hasChanges: hasChanges) - case .some(_, let error?): return SaveResult(error) - } - } } diff --git a/Sources/DataStack.swift b/Sources/DataStack.swift index f1a9566..6a320c2 100644 --- a/Sources/DataStack.swift +++ b/Sources/DataStack.swift @@ -614,57 +614,4 @@ public final class DataStack: Equatable { } } } - - - // MARK: Deprecated - - @available(*, deprecated, renamed: "init(xcodeModelName:bundle:migrationChain:)") - public convenience init(modelName: XcodeDataModelFileName, bundle: Bundle = Bundle.main, migrationChain: MigrationChain = nil) { - - self.init( - xcodeModelName: modelName, - bundle: bundle, - migrationChain: migrationChain - ) - } - - - @available(*, deprecated, message: "Use the new DataStack.init(schemaHistory:) initializer passing an UnsafeDataModelSchema instance as argument") - public convenience init(model: NSManagedObjectModel, migrationChain: MigrationChain = nil) { - - let modelVersion = migrationChain.leafVersions.first! - self.init( - schemaHistory: SchemaHistory( - allSchema: [ - UnsafeDataModelSchema( - modelName: modelVersion, - model: model - ) - ], - migrationChain: migrationChain, - exactCurrentModelVersion: modelVersion - ) - ) - } - - @available(*, deprecated, message: "Use the new DataStack.entityTypesByName(for:) method passing `NSManagedObject.self` as argument.") - public var entityTypesByName: [EntityName: NSManagedObject.Type] { - - return self.entityTypesByName(for: NSManagedObject.self) - } - - - // MARK: Obsolete - - @available(swift, obsoleted: 3.1, renamed: "entityDescription(for:)") - public func entityDescriptionForType(_ type: NSManagedObject.Type) -> NSEntityDescription? { - - return self.entityDescription(for: type) - } - - @available(swift, obsoleted: 3.1, renamed: "objectID(forURIRepresentation:)") - public func objectIDForURIRepresentation(_ url: URL) -> NSManagedObjectID? { - - return self.objectID(forURIRepresentation: url) - } } diff --git a/Sources/ICloudStore.swift b/Sources/ICloudStore.swift deleted file mode 100644 index eeddaaa..0000000 --- a/Sources/ICloudStore.swift +++ /dev/null @@ -1,569 +0,0 @@ -// -// ICloudStore.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation -import CoreData - - -#if os(iOS) || os(macOS) - -// MARK: - ICloudStore - -/** - A storage interface backed by an SQLite database managed by iCloud. - */ -@available(*, deprecated, message: "Please see the release notes and Core Data documentation.") -public final class ICloudStore: CloudStorage, CustomDebugStringConvertible, CoreStoreDebugStringConvertible { - - /** - Initializes an iCloud store interface from the given ubiquitous store information. Returns `nil` if the container could not be located or if iCloud storage is unavailable for the current user or device - ``` - guard let storage = ICloudStore( - ubiquitousContentName: "MyAppCloudData", - ubiquitousContentTransactionLogsSubdirectory: "logs/config1", - ubiquitousContainerID: "iCloud.com.mycompany.myapp.containername", - ubiquitousPeerToken: "9614d658014f4151a95d8048fb717cf0", - configuration: "Config1", - cloudStorageOptions: .recreateLocalStoreOnModelMismatch - ) else { - // iCloud is not available on the device - return - } - CoreStore.addStorage( - storage, - completion: { result in - // ... - } - ) - ``` - - parameter ubiquitousContentName: the name of the store in iCloud. This is required and should not be empty, and should not contain periods (`.`). - - parameter ubiquitousContentTransactionLogsSubdirectory: a required relative path for the transaction logs - - parameter ubiquitousContainerID: a container if your app has multiple ubiquity container identifiers in its entitlements - - parameter ubiquitousPeerToken: a per-application salt to allow multiple apps on the same device to share a Core Data store integrated with iCloud - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to `nil`, the "Default" configuration. Note that if you have multiple configurations, you will need to specify a different `ubiquitousContentName` explicitly for each of them. - - parameter cloudStorageOptions: When the `ICloudStore` is passed to the `DataStack`'s `addStorage()` methods, tells the `DataStack` how to setup the persistent store. Defaults to `.None`. - */ - public required init?(ubiquitousContentName: String, ubiquitousContentTransactionLogsSubdirectory: String, ubiquitousContainerID: String? = nil, ubiquitousPeerToken: String? = nil, configuration: ModelConfiguration = nil, cloudStorageOptions: CloudStorageOptions = nil) { - - CoreStore.assert( - !ubiquitousContentName.isEmpty, - "The ubiquitousContentName cannot be empty." - ) - CoreStore.assert( - !ubiquitousContentName.contains("."), - "The ubiquitousContentName cannot contain periods." - ) - CoreStore.assert( - !ubiquitousContentTransactionLogsSubdirectory.isEmpty, - "The ubiquitousContentURLRelativePath should not be empty." - ) - CoreStore.assert( - ubiquitousPeerToken?.isEmpty != true, - "The ubiquitousPeerToken should not be empty if provided." - ) - - let fileManager = FileManager.default - guard let cacheFolderURL = fileManager.url(forUbiquityContainerIdentifier: ubiquitousContainerID) else { - - return nil - } - let cacheFileURL = cacheFolderURL.appendingPathComponent(ubiquitousContentTransactionLogsSubdirectory) - - var storeOptions: [String: Any] = [ - NSSQLitePragmasOption: ["journal_mode": "WAL"], - NSPersistentStoreUbiquitousContentNameKey: ubiquitousContentName - ] - storeOptions[NSPersistentStoreUbiquitousContentURLKey] = ubiquitousContentTransactionLogsSubdirectory - storeOptions[NSPersistentStoreUbiquitousContainerIdentifierKey] = ubiquitousContainerID - storeOptions[NSPersistentStoreUbiquitousPeerTokenOption] = ubiquitousPeerToken - - self.cacheFileURL = cacheFileURL - self.configuration = configuration - self.cloudStorageOptions = cloudStorageOptions - self.storeOptions = storeOptions - } - - /** - Registers an `ICloudStoreObserver` to start receive notifications from the ubiquitous store - - - parameter observer: the observer to start sending ubiquitous notifications to - */ - public func addObserver(_ observer: T) { - - CoreStore.assert( - Thread.isMainThread, - "Attempted to add an observer of type \(cs_typeName(observer)) outside the main thread." - ) - - self.removeObserver(observer) - - self.registerNotification( - &self.willFinishInitialImportKey, - name: Notification.Name.iCloudUbiquitousStoreWillFinishInitialImport, - toObserver: observer, - callback: { (observer, storage, dataStack) in - - observer.iCloudStoreWillFinishUbiquitousStoreInitialImport(storage: storage, dataStack: dataStack) - } - ) - self.registerNotification( - &self.didFinishInitialImportKey, - name: Notification.Name.iCloudUbiquitousStoreDidFinishInitialImport, - toObserver: observer, - callback: { (observer, storage, dataStack) in - - observer.iCloudStoreDidFinishUbiquitousStoreInitialImport(storage: storage, dataStack: dataStack) - } - ) - self.registerNotification( - &self.willAddAccountKey, - name: Notification.Name.iCloudUbiquitousStoreWillAddAccount, - toObserver: observer, - callback: { (observer, storage, dataStack) in - - observer.iCloudStoreWillAddAccount(storage: storage, dataStack: dataStack) - } - ) - self.registerNotification( - &self.didAddAccountKey, - name: Notification.Name.iCloudUbiquitousStoreDidAddAccount, - toObserver: observer, - callback: { (observer, storage, dataStack) in - - observer.iCloudStoreDidAddAccount(storage: storage, dataStack: dataStack) - } - ) - self.registerNotification( - &self.willRemoveAccountKey, - name: Notification.Name.iCloudUbiquitousStoreWillRemoveAccount, - toObserver: observer, - callback: { (observer, storage, dataStack) in - - observer.iCloudStoreWillRemoveAccount(storage: storage, dataStack: dataStack) - } - ) - self.registerNotification( - &self.didRemoveAccountKey, - name: Notification.Name.iCloudUbiquitousStoreDidRemoveAccount, - toObserver: observer, - callback: { (observer, storage, dataStack) in - - observer.iCloudStoreDidRemoveAccount(storage: storage, dataStack: dataStack) - } - ) - self.registerNotification( - &self.willRemoveContentKey, - name: Notification.Name.iCloudUbiquitousStoreWillRemoveContent, - toObserver: observer, - callback: { (observer, storage, dataStack) in - - observer.iCloudStoreWillRemoveContent(storage: storage, dataStack: dataStack) - } - ) - self.registerNotification( - &self.didRemoveContentKey, - name: Notification.Name.iCloudUbiquitousStoreDidRemoveContent, - toObserver: observer, - callback: { (observer, storage, dataStack) in - - observer.iCloudStoreDidRemoveContent(storage: storage, dataStack: dataStack) - } - ) - } - - /** - Unregisters an `ICloudStoreObserver` to stop receiving notifications from the ubiquitous store - - - parameter observer: the observer to stop sending ubiquitous notifications to - */ - public func removeObserver(_ observer: ICloudStoreObserver) { - - CoreStore.assert( - Thread.isMainThread, - "Attempted to remove an observer of type \(cs_typeName(observer)) outside the main thread." - ) - let nilValue: AnyObject? = nil - cs_setAssociatedRetainedObject( - nilValue, - forKey: &self.willFinishInitialImportKey, - inObject: observer - ) - cs_setAssociatedRetainedObject( - nilValue, - forKey: &self.didFinishInitialImportKey, - inObject: observer - ) - cs_setAssociatedRetainedObject( - nilValue, - forKey: &self.willAddAccountKey, - inObject: observer - ) - cs_setAssociatedRetainedObject( - nilValue, - forKey: &self.didAddAccountKey, - inObject: observer - ) - cs_setAssociatedRetainedObject( - nilValue, - forKey: &self.willRemoveAccountKey, - inObject: observer - ) - cs_setAssociatedRetainedObject( - nilValue, - forKey: &self.didRemoveAccountKey, - inObject: observer - ) - cs_setAssociatedRetainedObject( - nilValue, - forKey: &self.willRemoveContentKey, - inObject: observer - ) - cs_setAssociatedRetainedObject( - nilValue, - forKey: &self.didRemoveContentKey, - inObject: observer - ) - } - - - // MARK: StorageInterface - - /** - The string identifier for the `NSPersistentStore`'s `type` property. For `SQLiteStore`s, this is always set to `NSSQLiteStoreType`. - */ - public static let storeType = NSSQLiteStoreType - - /** - The configuration name in the model file - */ - public let configuration: ModelConfiguration - - /** - The options dictionary for the `NSPersistentStore`. For `SQLiteStore`s, this is always set to - ``` - [NSSQLitePragmasOption: ["journal_mode": "WAL"]] - ``` - */ - public let storeOptions: [AnyHashable: Any]? - - /** - Do not call directly. Used by the `DataStack` internally. - */ - public func cs_didAddToDataStack(_ dataStack: DataStack) { - - self.cs_didRemoveFromDataStack(dataStack) - - self.dataStack = dataStack - let coordinator = dataStack.coordinator - - cs_setAssociatedRetainedObject( - NotificationObserver( - notificationName: Notification.Name.NSPersistentStoreCoordinatorStoresWillChange, - object: coordinator, - closure: { [weak self, weak dataStack] (note) -> Void in - - guard let `self` = self, - let dataStack = dataStack, - let userInfo = note.userInfo, - let transitionType = userInfo[NSPersistentStoreUbiquitousTransitionTypeKey] as? NSNumber else { - - return - } - - let notification: Notification.Name - switch NSPersistentStoreUbiquitousTransitionType(rawValue: transitionType.uintValue) { - - case .initialImportCompleted?: - notification = Notification.Name.iCloudUbiquitousStoreWillFinishInitialImport - - case .accountAdded?: - notification = Notification.Name.iCloudUbiquitousStoreWillAddAccount - - case .accountRemoved?: - notification = Notification.Name.iCloudUbiquitousStoreWillRemoveAccount - - case .contentRemoved?: - notification = Notification.Name.iCloudUbiquitousStoreWillRemoveContent - - default: - return - } - NotificationCenter.default.post( - name: notification, - object: self, - userInfo: [String(describing: DataStack.self): dataStack] - ) - } - ), - forKey: &Static.persistentStoreCoordinatorWillChangeStores, - inObject: self - ) - cs_setAssociatedRetainedObject( - NotificationObserver( - notificationName: NSNotification.Name.NSPersistentStoreCoordinatorStoresDidChange, - object: coordinator, - closure: { [weak self, weak dataStack] (note) -> Void in - - guard let `self` = self, - let dataStack = dataStack, - let userInfo = note.userInfo, - let transitionType = userInfo[NSPersistentStoreUbiquitousTransitionTypeKey] as? NSNumber else { - - return - } - - let notification: Notification.Name - switch NSPersistentStoreUbiquitousTransitionType(rawValue: transitionType.uintValue) { - - case .initialImportCompleted?: - notification = Notification.Name.iCloudUbiquitousStoreDidFinishInitialImport - - case .accountAdded?: - notification = Notification.Name.iCloudUbiquitousStoreDidAddAccount - - case .accountRemoved?: - notification = Notification.Name.iCloudUbiquitousStoreDidRemoveAccount - - case .contentRemoved?: - notification = Notification.Name.iCloudUbiquitousStoreDidRemoveContent - - default: - return - } - NotificationCenter.default.post( - name: notification, - object: self, - userInfo: [String(describing: DataStack.self): dataStack] - ) - } - ), - forKey: &Static.persistentStoreCoordinatorDidChangeStores, - inObject: self - ) - } - - /** - Do not call directly. Used by the `DataStack` internally. - */ - public func cs_didRemoveFromDataStack(_ dataStack: DataStack) { - - let coordinator = dataStack.coordinator - let nilValue: AnyObject? = nil - cs_setAssociatedRetainedObject( - nilValue, - forKey: &Static.persistentStoreCoordinatorWillChangeStores, - inObject: coordinator - ) - cs_setAssociatedRetainedObject( - nilValue, - forKey: &Static.persistentStoreCoordinatorDidChangeStores, - inObject: coordinator - ) - - self.dataStack = nil - } - - - // MARK: CloudStorage - - /** - The `NSURL` that points to the ubiquity container file - */ - public let cacheFileURL: URL - - /** - Options that tell the `DataStack` how to setup the persistent store - */ - public var cloudStorageOptions: CloudStorageOptions - - /** - The options dictionary for the specified `CloudStorageOptions` - */ - public func dictionary(forOptions options: CloudStorageOptions) -> [AnyHashable: Any]? { - - if options == .none { - - return self.storeOptions - } - - var storeOptions = self.storeOptions ?? [:] - if options.contains(.allowSynchronousLightweightMigration) { - - storeOptions[NSMigratePersistentStoresAutomaticallyOption] = true - storeOptions[NSInferMappingModelAutomaticallyOption] = true - } - if options.contains(.recreateLocalStoreOnModelMismatch) { - - storeOptions[NSPersistentStoreRebuildFromUbiquitousContentOption] = true - } - return storeOptions - } - - /** - Called by the `DataStack` to perform actual deletion of the store file from disk. Do not call directly! The `sourceModel` argument is a hint for the existing store's model version. For `SQLiteStore`, this converts the database's WAL journaling mode to DELETE before deleting the file. - */ - public func cs_eraseStorageAndWait(soureModel: NSManagedObjectModel) throws { - - let cacheFileURL = self.cacheFileURL - try autoreleasepool { - - let journalUpdatingCoordinator = NSPersistentStoreCoordinator(managedObjectModel: soureModel) - let options = [ - NSSQLitePragmasOption: ["journal_mode": "DELETE"], - NSPersistentStoreRemoveUbiquitousMetadataOption: true - ] as [String : Any] - let store = try journalUpdatingCoordinator.addPersistentStore( - ofType: type(of: self).storeType, - configurationName: self.configuration, - at: cacheFileURL, - options: options - ) - try journalUpdatingCoordinator.remove(store) - try NSPersistentStoreCoordinator.removeUbiquitousContentAndPersistentStore( - at: cacheFileURL, - options: options - ) - } - } - - - // MARK: CustomDebugStringConvertible - - public var debugDescription: String { - - func formattedValue(_ any: Any) -> String { - - switch any { - - case let any as CoreStoreDebugStringConvertible: - return any.coreStoreDumpString - - default: - return "\(any)" - } - } - var string = "(\(String(reflecting: type(of: self)))) " - string.append(formattedValue(self)) - return string - } - - - // MARK: CoreStoreDebugStringConvertible - - public var coreStoreDumpString: String { - - func formattedValue(_ any: Any) -> String { - - switch any { - - case let any as CoreStoreDebugStringConvertible: - return any.coreStoreDumpString - - default: - return "\(any)" - } - } - func createFormattedString(_ firstLine: String, _ lastLine: String, _ info: [(key: String, value: Any)]) -> String { - - var string = firstLine - for (key, value) in info { - - string.append("\n.\(key) = \(formattedValue(value));") - } - string = string.replacingOccurrences(of: "\n", with: "\n\(String(repeating: " ", count: 4))") - string.append("\n\(lastLine)") - return string - } - return createFormattedString( - "(", ")", - [ - ("configuration", self.configuration as Any), - ("storeOptions", self.storeOptions as Any), - ("cacheFileURL", self.cacheFileURL), - ("cloudStorageOptions", self.cloudStorageOptions) - ] - ) - } - - - // MARK: Private - - fileprivate struct Static { - - fileprivate static var persistentStoreCoordinatorWillChangeStores: Void? - fileprivate static var persistentStoreCoordinatorDidChangeStores: Void? - } - - private var willFinishInitialImportKey: Void? - private var didFinishInitialImportKey: Void? - private var willAddAccountKey: Void? - private var didAddAccountKey: Void? - private var willRemoveAccountKey: Void? - private var didRemoveAccountKey: Void? - private var willRemoveContentKey: Void? - private var didRemoveContentKey: Void? - - private weak var dataStack: DataStack? - - private func registerNotification(_ notificationKey: UnsafeRawPointer, name: Notification.Name, toObserver observer: T, callback: @escaping (_ observer: T, _ storage: ICloudStore, _ dataStack: DataStack) -> Void) { - - cs_setAssociatedRetainedObject( - NotificationObserver( - notificationName: name, - object: self, - closure: { [weak self, weak observer] (note) -> Void in - - guard let `self` = self, - let observer = observer, - let dataStack = note.userInfo?[String(describing: DataStack.self)] as? DataStack, - self.dataStack === dataStack else { - - return - } - callback(observer, self, dataStack) - } - ), - forKey: notificationKey, - inObject: observer - ) - } -} - - -// MARK: - Notification Keys - -extension Notification.Name { - - fileprivate static let iCloudUbiquitousStoreWillFinishInitialImport = Notification.Name(rawValue: "iCloudUbiquitousStoreWillFinishInitialImport") - fileprivate static let iCloudUbiquitousStoreDidFinishInitialImport = Notification.Name(rawValue: "iCloudUbiquitousStoreDidFinishInitialImport") - fileprivate static let iCloudUbiquitousStoreWillAddAccount = Notification.Name(rawValue: "iCloudUbiquitousStoreWillAddAccount") - fileprivate static let iCloudUbiquitousStoreDidAddAccount = Notification.Name(rawValue: "iCloudUbiquitousStoreDidAddAccount") - fileprivate static let iCloudUbiquitousStoreWillRemoveAccount = Notification.Name(rawValue: "iCloudUbiquitousStoreWillRemoveAccount") - fileprivate static let iCloudUbiquitousStoreDidRemoveAccount = Notification.Name(rawValue: "iCloudUbiquitousStoreDidRemoveAccount") - fileprivate static let iCloudUbiquitousStoreWillRemoveContent = Notification.Name(rawValue: "iCloudUbiquitousStoreWillRemoveContent") - fileprivate static let iCloudUbiquitousStoreDidRemoveContent = Notification.Name(rawValue: "iCloudUbiquitousStoreDidRemoveContent") -} - -#endif diff --git a/Sources/ICloudStoreObserver.swift b/Sources/ICloudStoreObserver.swift deleted file mode 100644 index a3a451b..0000000 --- a/Sources/ICloudStoreObserver.swift +++ /dev/null @@ -1,108 +0,0 @@ -// -// ICloudStoreObserver.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation - - -#if os(iOS) || os(macOS) - -// MARK: - ICloudStoreObserver - -/** - Implement the `ICloudStoreObserver` protocol to observe ubiquitous storage notifications from the specified iCloud store. - Note that `ICloudStoreObserver` methods are only called when all the following conditions are true: - - the observer is registered to the `ICloudStore` via the `ICloudStore.addObserver(_:)` method - - the `ICloudStore` was added to a `DataStack` - - the `ICloudStore` and the `DataStack` are still persisted in memory - */ -@available(*, deprecated, message: "Please see the release notes and Core Data documentation.") -public protocol ICloudStoreObserver: class { - - /** - Notifies that the initial ubiquitous store import will complete - - - parameter storage: the `ICloudStore` instance being observed - - parameter dataStack: the `DataStack` that manages the peristent store - */ - func iCloudStoreWillFinishUbiquitousStoreInitialImport(storage: ICloudStore, dataStack: DataStack) - - /** - Notifies that the initial ubiquitous store import completed - - - parameter storage: the `ICloudStore` instance being observed - - parameter dataStack: the `DataStack` that manages the peristent store - */ - func iCloudStoreDidFinishUbiquitousStoreInitialImport(storage: ICloudStore, dataStack: DataStack) - - /** - Notifies that an iCloud account will be added to the coordinator - - - parameter storage: the `ICloudStore` instance being observed - - parameter dataStack: the `DataStack` that manages the peristent store - */ - func iCloudStoreWillAddAccount(storage: ICloudStore, dataStack: DataStack) - - /** - Notifies that an iCloud account was added to the coordinator - - - parameter storage: the `ICloudStore` instance being observed - - parameter dataStack: the `DataStack` that manages the peristent store - */ - func iCloudStoreDidAddAccount(storage: ICloudStore, dataStack: DataStack) - - /** - Notifies that an iCloud account will be removed from the coordinator - - - parameter storage: the `ICloudStore` instance being observed - - parameter dataStack: the `DataStack` that manages the peristent store - */ - func iCloudStoreWillRemoveAccount(storage: ICloudStore, dataStack: DataStack) - - /** - Notifies that an iCloud account was removed from the coordinator - - - parameter storage: the `ICloudStore` instance being observed - - parameter dataStack: the `DataStack` that manages the peristent store - */ - func iCloudStoreDidRemoveAccount(storage: ICloudStore, dataStack: DataStack) - - /** - Notifies that iCloud contents will be deleted - - - parameter storage: the `ICloudStore` instance being observed - - parameter dataStack: the `DataStack` that manages the peristent store - */ - func iCloudStoreWillRemoveContent(storage: ICloudStore, dataStack: DataStack) - - /** - Notifies that iCloud contents were deleted - - - parameter storage: the `ICloudStore` instance being observed - - parameter dataStack: the `DataStack` that manages the peristent store - */ - func iCloudStoreDidRemoveContent(storage: ICloudStore, dataStack: DataStack) -} - -#endif diff --git a/Sources/ImportableObject.swift b/Sources/ImportableObject.swift index a3f6718..b90c3c3 100644 --- a/Sources/ImportableObject.swift +++ b/Sources/ImportableObject.swift @@ -86,19 +86,4 @@ extension ImportableObject { return true } - - - // MARK: Obsolete - - @available(swift, obsoleted: 3.0.0, renamed: "shouldInsert(from:in:)") - public static func shouldInsertFromImportSource(_ source: ImportSource, inTransaction transaction: BaseDataTransaction) -> Bool { - - return Self.shouldInsert(from: source, in: transaction) - } - - @available(swift, obsoleted: 3.0.0, renamed: "didInsert(from:in:)") - public func didInsertFromImportSource(_ source: ImportSource, inTransaction transaction: BaseDataTransaction) throws { - - try self.didInsert(from: source, in: transaction) - } } diff --git a/Sources/ImportableUniqueObject.swift b/Sources/ImportableUniqueObject.swift index d55672b..db8b915 100644 --- a/Sources/ImportableUniqueObject.swift +++ b/Sources/ImportableUniqueObject.swift @@ -160,37 +160,4 @@ extension ImportableUniqueObject { try self.update(from: source, in: transaction) } - - - // MARK: Obsolete - - @available(swift, obsoleted: 3.1, renamed: "shouldInsert(from:in:)") - public static func shouldInsertFromImportSource(_ source: ImportSource, inTransaction transaction: BaseDataTransaction) -> Bool { - - return Self.shouldInsert(from: source, in: transaction) - } - - @available(swift, obsoleted: 3.1, renamed: "shouldUpdate(from:in:)") - public static func shouldUpdateFromImportSource(_ source: ImportSource, inTransaction transaction: BaseDataTransaction) -> Bool { - - return Self.shouldUpdate(from: source, in: transaction) - } - - @available(swift, obsoleted: 3.1, renamed: "uniqueID(from:in:)") - public static func uniqueIDFromImportSource(_ source: ImportSource, inTransaction transaction: BaseDataTransaction) throws -> UniqueIDType? { - - return try Self.uniqueID(from: source, in: transaction) - } - - @available(swift, obsoleted: 3.1, renamed: "didInsert(from:in:)") - public func didInsertFromImportSource(_ source: ImportSource, inTransaction transaction: BaseDataTransaction) throws { - - try self.didInsert(from: source, in: transaction) - } - - @available(swift, obsoleted: 3.1, renamed: "update(from:in:)") - public func updateFromImportSource(_ source: ImportSource, inTransaction transaction: BaseDataTransaction) throws { - - try self.update(from: source, in: transaction) - } } diff --git a/Sources/LegacySQLiteStore.swift b/Sources/LegacySQLiteStore.swift deleted file mode 100644 index 983c704..0000000 --- a/Sources/LegacySQLiteStore.swift +++ /dev/null @@ -1,103 +0,0 @@ -// -// LegacySQLiteStore.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation -import CoreData - - -// MARK: - LegacySQLiteStore - -/** - A storage interface backed by an SQLite database that was created before CoreStore 2.0.0. - */ -@available(swift, obsoleted: 3.1, message: "`LegacySQLiteStore` previous users should now use `SQLiteStore`'s new SQLiteStore.legacy(fileName:configuration:migrationMappingProviders:localStorageOptions:) or SQLiteStore.legacy() methods to create an `SQLiteStore` with legacy paths.") -public final class LegacySQLiteStore: LocalStorage { - - @available(swift, obsoleted: 3.1, message: "Use `SQLiteStore`'s new SQLiteStore.init(fileURL:configuration:migrationMappingProviders:localStorageOptions:) initializer.") - public init(fileURL: URL, configuration: ModelConfiguration = nil, mappingModelBundles: [Bundle] = Bundle.allBundles, localStorageOptions: LocalStorageOptions = nil) { - - fatalError() - } - - @available(swift, obsoleted: 3.1, message: "Use `SQLiteStore`'s new SQLiteStore.legacy(fileName:configuration:migrationMappingProviders:localStorageOptions:) factory method.") - public init(fileName: String, configuration: ModelConfiguration = nil, mappingModelBundles: [Bundle] = Bundle.allBundles, localStorageOptions: LocalStorageOptions = nil) { - - fatalError() - } - - @available(swift, obsoleted: 3.1, message: "Use `SQLiteStore`'s new SQLiteStore.legacy(...) factory method.") - public init() { - - fatalError() - } - - - // MARK: StorageInterface - - public static let storeType = NSSQLiteStoreType - - public func dictionary(forOptions options: LocalStorageOptions) -> [AnyHashable: Any]? { - - fatalError() - } - - public let configuration: ModelConfiguration - - public let storeOptions: [AnyHashable: Any]? = [NSSQLitePragmasOption: ["journal_mode": "WAL"]] - - public func cs_didAddToDataStack(_ dataStack: DataStack) { - - fatalError() - } - - public func cs_didRemoveFromDataStack(_ dataStack: DataStack) { - - fatalError() - } - - - // MAKR: LocalStorage - - public let fileURL: URL - - public let migrationMappingProviders: [SchemaMappingProvider] - - public var localStorageOptions: LocalStorageOptions - - public func cs_finalizeStorageAndWait(soureModelHint: NSManagedObjectModel) throws { - - fatalError() - } - - public func cs_eraseStorageAndWait(metadata: [String: Any], soureModelHint: NSManagedObjectModel?) throws { - - fatalError() - } - - - // MARK: Private - - private weak var dataStack: DataStack? -} diff --git a/Sources/NSFetchedResultsController+ObjectiveC.swift b/Sources/NSFetchedResultsController+ObjectiveC.swift index 8befb8a..b71c943 100644 --- a/Sources/NSFetchedResultsController+ObjectiveC.swift +++ b/Sources/NSFetchedResultsController+ObjectiveC.swift @@ -25,44 +25,6 @@ import Foundation import CoreData - - -// MARK: - CSDataStack - -@available(macOS 10.12, *) -extension CSDataStack { - - @available(*, deprecated, message: "CoreStore will obsolete NSFetchedResultsController support in the future in favor of CSListMonitor") - @objc - public func createFetchedResultsControllerFrom(_ from: CSFrom, sectionBy: CSSectionBy, fetchClauses: [CSFetchClause]) -> NSFetchedResultsController { - - return createFRC( - fromContext: self.bridgeToSwift.mainContext, - from: from, - sectionBy: sectionBy, - fetchClauses: fetchClauses - ) - } -} - - -// MARK: - CSUnsafeDataTransaction - -@available(macOS 10.12, *) -extension CSUnsafeDataTransaction { - - @available(*, deprecated, message: "CoreStore will obsolete NSFetchedResultsController support in the future in favor of CSListMonitor") - @objc - public func createFetchedResultsControllerFrom(_ from: CSFrom, sectionBy: CSSectionBy, fetchClauses: [CSFetchClause]) -> NSFetchedResultsController { - - return createFRC( - fromContext: self.bridgeToSwift.context, - from: from, - sectionBy: sectionBy, - fetchClauses: fetchClauses - ) - } -} // MARK: - Private diff --git a/Sources/NSManagedObject+Convenience.swift b/Sources/NSManagedObject+Convenience.swift index ae344e3..c9ee8c7 100644 --- a/Sources/NSManagedObject+Convenience.swift +++ b/Sources/NSManagedObject+Convenience.swift @@ -206,58 +206,4 @@ extension NSManagedObject { self.managedObjectContext?.refresh(self, mergeChanges: true) } - - - // MARK: Deprecated - - @available(*, deprecated, renamed: "getValue(forKvcKey:)") - @nonobjc - public func accessValueForKVCKey(_ KVCKey: KeyPathString) -> Any? { - - self.willAccessValue(forKey: KVCKey) - defer { - - self.didAccessValue(forKey: KVCKey) - } - return self.primitiveValue(forKey: KVCKey) - } - - @available(*, deprecated, renamed: "getValue(forKvcKey:didGetValue:)") - @discardableResult - @nonobjc - public func accessValueForKVCKey(_ KVCKey: KeyPathString, _ didAccessPrimitiveValue: (Any?) throws -> T) rethrows -> T { - - self.willAccessValue(forKey: KVCKey) - defer { - - self.didAccessValue(forKey: KVCKey) - } - return try didAccessPrimitiveValue(self.primitiveValue(forKey: KVCKey)) - } - - @available(*, deprecated, renamed: "setValue(_:forKvcKey:)") - @nonobjc - public func setValue(_ value: Any?, forKVCKey KVCKey: KeyPathString) { - - self.willChangeValue(forKey: KVCKey) - defer { - - self.didChangeValue(forKey: KVCKey) - } - self.setPrimitiveValue(value, forKey: KVCKey) - } - - @available(*, deprecated, renamed: "setValue(_:forKvcKey:didSetValue:)") - @discardableResult - @nonobjc - public func setValue(_ value: Any?, forKVCKey KVCKey: KeyPathString, _ didSetPrimitiveValue: (Any?) throws -> T) rethrows -> T { - - self.willChangeValue(forKey: KVCKey) - defer { - - self.didChangeValue(forKey: KVCKey) - } - self.setPrimitiveValue(value, forKey: KVCKey) - return try didSetPrimitiveValue(value) - } } diff --git a/Sources/NSManagedObjectContext+Querying.swift b/Sources/NSManagedObjectContext+Querying.swift index ada9e4c..b7d655c 100644 --- a/Sources/NSManagedObjectContext+Querying.swift +++ b/Sources/NSManagedObjectContext+Querying.swift @@ -333,15 +333,6 @@ extension NSManagedObjectContext: FetchableSource, QueryableSource { return try self.deleteAll(fetchRequest) } - - - // MARK: Deprecated - - @available(*, deprecated, renamed: "unsafeContext()") - public func internalContext() -> NSManagedObjectContext { - - return self.unsafeContext() - } } diff --git a/Sources/SQLiteStore.swift b/Sources/SQLiteStore.swift index 965b06e..867a7f8 100644 --- a/Sources/SQLiteStore.swift +++ b/Sources/SQLiteStore.swift @@ -352,19 +352,4 @@ public final class SQLiteStore: LocalStorage { // MARK: Private private weak var dataStack: DataStack? - - - // MARK: Obsoleted - - @available(swift, obsoleted: 3.1, message: "The `mappingModelBundles` argument of this method is ignored. Use the new SQLiteStore.init(fileURL:configuration:migrationMappingProviders:localStorageOptions:) initializer instead.") - public convenience init(fileURL: URL, configuration: ModelConfiguration = nil, mappingModelBundles: [Bundle], localStorageOptions: LocalStorageOptions = nil) { - - fatalError() - } - - @available(swift, obsoleted: 3.1, message: "The `mappingModelBundles` argument of this method is ignored. Use the new SQLiteStore.init(fileName:configuration:migrationMappingProviders:localStorageOptions:) initializer instead.") - public convenience init(fileName: String, configuration: ModelConfiguration = nil, mappingModelBundles: [Bundle], localStorageOptions: LocalStorageOptions = nil) { - - fatalError() - } } diff --git a/Sources/SaveResult.swift b/Sources/SaveResult.swift deleted file mode 100644 index 46ee49a..0000000 --- a/Sources/SaveResult.swift +++ /dev/null @@ -1,58 +0,0 @@ -// -// SaveResult.swift -// CoreStore -// -// Copyright © 2018 John Rommel Estropia -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -import Foundation - - -// MARK: - SaveResult - -@available(*, deprecated, message: "Use the new DataStack.perform(asynchronous:...) and DataStack.perform(synchronous:...) family of APIs") -public enum SaveResult: Hashable { - - case success(hasChanges: Bool) - case failure(CoreStoreError) - - public var boolValue: Bool { - - switch self { - - case .success: return true - case .failure: return false - } - } - - - // MARK: Internal - - internal init(hasChanges: Bool) { - - self = .success(hasChanges: hasChanges) - } - - internal init(_ error: CoreStoreError) { - - self = .failure(error) - } -} diff --git a/Sources/SynchronousDataTransaction.swift b/Sources/SynchronousDataTransaction.swift index 4847838..d99ae0a 100644 --- a/Sources/SynchronousDataTransaction.swift +++ b/Sources/SynchronousDataTransaction.swift @@ -164,79 +164,4 @@ public final class SynchronousDataTransaction: BaseDataTransaction { } return result } - - - // MARK: Deprecated - - @available(*, deprecated, message: "Use the new auto-commit method DataStack.perform(synchronous:waitForAllObservers:)") - public func commitAndWait() -> SaveResult { - - CoreStore.assert( - self.transactionQueue.cs_isCurrentExecutionContext(), - "Attempted to commit a \(cs_typeName(self)) outside its designated queue." - ) - CoreStore.assert( - !self.isCommitted, - "Attempted to commit a \(cs_typeName(self)) more than once." - ) - switch self.autoCommit(waitForMerge: true) { - - case (let hasChanges, nil): return SaveResult(hasChanges: hasChanges) - case (_, let error?): return SaveResult(error) - } - } - - @available(*, deprecated, message: "Use the new auto-commit method DataStack.perform(synchronous:waitForAllObservers:)") - public func commit() -> SaveResult { - - CoreStore.assert( - self.transactionQueue.cs_isCurrentExecutionContext(), - "Attempted to commit a \(cs_typeName(self)) outside its designated queue." - ) - CoreStore.assert( - !self.isCommitted, - "Attempted to commit a \(cs_typeName(self)) more than once." - ) - switch self.autoCommit(waitForMerge: false) { - - case (let hasChanges, nil): return SaveResult(hasChanges: hasChanges) - case (_, let error?): return SaveResult(error) - } - } - - @available(*, deprecated, message: "Secondary tasks spawned from AsynchronousDataTransactions and SynchronousDataTransactions are no longer supported. ") - @discardableResult - public func beginSynchronous(_ closure: @escaping (_ transaction: SynchronousDataTransaction) -> Void) -> SaveResult? { - - CoreStore.assert( - self.transactionQueue.cs_isCurrentExecutionContext(), - "Attempted to begin a child transaction from a \(cs_typeName(self)) outside its designated queue." - ) - CoreStore.assert( - !self.isCommitted, - "Attempted to begin a child transaction from an already committed \(cs_typeName(self))." - ) - let childTransaction = SynchronousDataTransaction( - mainContext: self.context, - queue: self.childTransactionQueue - ) - childTransaction.transactionQueue.cs_sync { - - closure(childTransaction) - - if !childTransaction.isCommitted && childTransaction.hasChanges { - - CoreStore.log( - .warning, - message: "The closure for the \(cs_typeName(childTransaction)) completed without being committed. All changes made within the transaction were discarded." - ) - } - } - switch childTransaction.result { - - case .none: return nil - case .some(let hasChanges, nil): return SaveResult(hasChanges: hasChanges) - case .some(_, let error?): return SaveResult(error) - } - } } diff --git a/Sources/Transformable.swift b/Sources/Transformable.swift index 7a6317e..02ade8d 100644 --- a/Sources/Transformable.swift +++ b/Sources/Transformable.swift @@ -254,25 +254,6 @@ public enum TransformableContainer { private let customGetter: ((_ partialObject: PartialObject) -> V)? private let customSetter: ((_ partialObject: PartialObject, _ newValue: V) -> Void)? - - - // MARK: Deprecated - - @available(*, unavailable, message: "Indexes are now set through the Entity initializer, which now supports compound indexes.") - public convenience init( - _ keyPath: KeyPathString, - initial: @autoclosure @escaping () -> V, - isIndexed: Bool, - isTransient: Bool = false, - allowsExternalBinaryDataStorage: Bool = false, - versionHashModifier: @autoclosure @escaping () -> String? = nil, - renamingIdentifier: @autoclosure @escaping () -> String? = nil, - customGetter: ((_ partialObject: PartialObject) -> V)? = nil, - customSetter: ((_ partialObject: PartialObject, _ newValue: V) -> Void)? = nil, - affectedByKeyPaths: @autoclosure @escaping () -> Set = []) { - - fatalError() - } } @@ -467,25 +448,6 @@ public enum TransformableContainer { private let customGetter: ((_ partialObject: PartialObject) -> V?)? private let customSetter: ((_ partialObject: PartialObject, _ newValue: V?) -> Void)? - - - // MARK: Deprecated - - @available(*, unavailable, message: "Indexes are now set through the Entity initializer, which now supports compound indexes.") - public convenience init( - _ keyPath: KeyPathString, - initial: @autoclosure @escaping () -> V? = nil, - isIndexed: Bool, - isTransient: Bool = false, - allowsExternalBinaryDataStorage: Bool = false, - versionHashModifier: @autoclosure @escaping () -> String? = nil, - renamingIdentifier: @autoclosure @escaping () -> String? = nil, - customGetter: ((_ partialObject: PartialObject) -> V?)? = nil, - customSetter: ((_ partialObject: PartialObject, _ newValue: V?) -> Void)? = nil, - affectedByKeyPaths: @autoclosure @escaping () -> Set = []) { - - fatalError() - } } } diff --git a/Sources/Value.swift b/Sources/Value.swift index c0e63e6..bd72074 100644 --- a/Sources/Value.swift +++ b/Sources/Value.swift @@ -249,24 +249,6 @@ public enum ValueContainer { private let customGetter: ((_ partialObject: PartialObject) -> V)? private let customSetter: ((_ partialObject: PartialObject, _ newValue: V) -> Void)? - - - // MARK: Deprecated - - @available(*, unavailable, message: "Indexes are now set through the Entity initializer, which now supports compound indexes.") - public convenience init( - _ keyPath: KeyPathString, - initial: @autoclosure @escaping () -> V, - isIndexed: Bool, - isTransient: Bool = false, - versionHashModifier: @autoclosure @escaping () -> String? = nil, - renamingIdentifier: @autoclosure @escaping () -> String? = nil, - customGetter: ((_ partialObject: PartialObject) -> V)? = nil, - customSetter: ((_ partialObject: PartialObject, _ newValue: V) -> Void)? = nil, - affectedByKeyPaths: @autoclosure @escaping () -> Set = []) { - - fatalError() - } } @@ -461,24 +443,6 @@ public enum ValueContainer { private let customGetter: ((_ partialObject: PartialObject) -> V?)? private let customSetter: ((_ partialObject: PartialObject, _ newValue: V?) -> Void)? - - - // MARK: Deprecated - - @available(*, unavailable, message: "Indexes are now set through the Entity initializer, which now supports compound indexes.") - public convenience init( - _ keyPath: KeyPathString, - initial: @autoclosure @escaping () -> V? = nil, - isIndexed: Bool, - isTransient: Bool = false, - versionHashModifier: @autoclosure @escaping () -> String? = nil, - renamingIdentifier: @autoclosure @escaping () -> String? = nil, - customGetter: ((_ partialObject: PartialObject) -> V?)? = nil, - customSetter: ((_ partialObject: PartialObject, _ newValue: V?) -> Void)? = nil, - affectedByKeyPaths: @autoclosure @escaping () -> Set = []) { - - fatalError() - } } } diff --git a/Sources/Where.swift b/Sources/Where.swift index 5ddb14d..7dfd06a 100644 --- a/Sources/Where.swift +++ b/Sources/Where.swift @@ -545,49 +545,3 @@ extension Sequence where Iterator.Element: WhereClauseType { return Where(NSCompoundPredicate(type: .or, subpredicates: self.map({ $0.predicate }))) } } - - -// MARK: - Deprecated - -extension Where { - - @available(*, deprecated, renamed: "&&?") - public static func && (left: Where, right: Where?) -> Where { - - if let right = right { - - return left && right - } - return left - } - - @available(*, deprecated, renamed: "&&?") - public static func && (left: Where?, right: Where) -> Where { - - if let left = left { - - return left && right - } - return right - } - - @available(*, deprecated, renamed: "||?") - public static func || (left: Where, right: Where?) -> Where { - - if let right = right { - - return left || right - } - return left - } - - @available(*, deprecated, renamed: "||?") - public static func || (left: Where?, right: Where) -> Where { - - if let left = left { - - return left || right - } - return right - } -}