From ca49ea3a816bfd23e3c45625711699a53f47c0dd Mon Sep 17 00:00:00 2001 From: John Rommel Estropia Date: Wed, 23 Mar 2016 22:21:05 +0900 Subject: [PATCH] iOS 7 full support --- .travis.yml | 1 + Cartfile | 2 +- Cartfile.resolved | 2 +- Carthage/Checkouts/GCDKit | 2 +- CoreStore.podspec | 4 +- CoreStore.xcodeproj/project.pbxproj | 280 ++++++++++++++++-- CoreStore/CartFile | 1 - CoreStore/Info.plist | 2 +- .../NSManagedObjectContext+CoreStore.swift | 13 +- .../NSPersistentStoreCoordinator+Setup.swift | 80 +++++ CoreStore/Migrating/DataStack+Migration.swift | 13 +- CoreStore/Setting Up/DataStack.swift | 20 +- README.md | 39 +-- 13 files changed, 400 insertions(+), 59 deletions(-) delete mode 100644 CoreStore/CartFile create mode 100644 CoreStore/Internal/NSPersistentStoreCoordinator+Setup.swift diff --git a/.travis.yml b/.travis.yml index 5baf74c..ca29d13 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,6 +16,7 @@ env: - DESTINATION="OS=8.3,name=iPhone 5S" SCHEME="CoreStore iOS" SDK=iphonesimulator9.3 RUN_TESTS="YES" POD_LINT="NO" - DESTINATION="OS=8.2,name=iPhone 5" SCHEME="CoreStore iOS" SDK=iphonesimulator9.3 RUN_TESTS="YES" POD_LINT="NO" - DESTINATION="OS=8.1,name=iPhone 4S" SCHEME="CoreStore iOS" SDK=iphonesimulator9.3 RUN_TESTS="YES" POD_LINT="YES" + - DESTINATION="OS=8.1,name=iPhone 4S" SCHEME="CoreStore iOS7" SDK=iphonesimulator9.3 RUN_TESTS="YES" POD_LINT="YES" - DESTINATION="arch=x86_64" SCHEME="CoreStore OSX" SDK=macosx10.11 RUN_TESTS="YES" POD_LINT="NO" - DESTINATION="OS=2.2,name=Apple Watch - 42mm" SCHEME="CoreStore watchOS" SDK=watchsimulator2.2 RUN_TESTS="NO" POD_LINT="NO" - DESTINATION="OS=9.2,name=Apple TV 1080p" SCHEME="CoreStore tvOS" SDK=appletvsimulator9.2 RUN_TESTS="YES" POD_LINT="NO" diff --git a/Cartfile b/Cartfile index d8f515a..8858845 100644 --- a/Cartfile +++ b/Cartfile @@ -1 +1 @@ -github "JohnEstropia/GCDKit" == 1.1.7 +github "JohnEstropia/GCDKit" == 1.2.2 diff --git a/Cartfile.resolved b/Cartfile.resolved index 2c136d3..5a1701e 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1 +1 @@ -github "JohnEstropia/GCDKit" "1.1.7" +github "JohnEstropia/GCDKit" "1.2.2" diff --git a/Carthage/Checkouts/GCDKit b/Carthage/Checkouts/GCDKit index 5d8c347..07866b9 160000 --- a/Carthage/Checkouts/GCDKit +++ b/Carthage/Checkouts/GCDKit @@ -1 +1 @@ -Subproject commit 5d8c34772c32573cb8892e83596071c80fcfe0ad +Subproject commit 07866b93ee052e3becc7b79eb12b87786acdfc2e diff --git a/CoreStore.podspec b/CoreStore.podspec index 8ffcebb..fc12668 100644 --- a/CoreStore.podspec +++ b/CoreStore.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "CoreStore" - s.version = "1.5.4" + s.version = "1.6.0" s.license = "MIT" s.summary = "Unleashing the real power of Core Data with the elegance and safety of Swift" s.homepage = "https://github.com/JohnEstropia/CoreStore" @@ -18,5 +18,5 @@ Pod::Spec.new do |s| s.requires_arc = true s.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-D USE_FRAMEWORKS' } - s.dependency "GCDKit", "1.2.1" + s.dependency "GCDKit", "1.2.2" end \ No newline at end of file diff --git a/CoreStore.xcodeproj/project.pbxproj b/CoreStore.xcodeproj/project.pbxproj index eea6690..eb53d19 100644 --- a/CoreStore.xcodeproj/project.pbxproj +++ b/CoreStore.xcodeproj/project.pbxproj @@ -219,6 +219,74 @@ B5D372861A39CDDB00F583D9 /* TestEntity1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D372851A39CDDB00F583D9 /* TestEntity1.swift */; }; B5D39A0219FD00C9000E91BB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5D39A0119FD00C9000E91BB /* Foundation.framework */; }; B5D5E0CF1A4D6AAB006468AF /* TestEntity2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D5E0CE1A4D6AAB006468AF /* TestEntity2.swift */; }; + B5D9E2EF1CA2C317007A9D52 /* ObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1C1AFF84860064E85B /* ObjectMonitor.swift */; }; + B5D9E2F01CA2C317007A9D52 /* CoreStoreFetchedResultsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E61C6E3A5900B1AF90 /* CoreStoreFetchedResultsController.swift */; }; + B5D9E2F11CA2C317007A9D52 /* ImportableUniqueObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */; }; + B5D9E2F21CA2C317007A9D52 /* CoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */; }; + B5D9E2F31CA2C317007A9D52 /* NSError+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* NSError+CoreStore.swift */; }; + B5D9E2F41CA2C317007A9D52 /* Where.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F051AFF847B0064E85B /* Where.swift */; }; + B5D9E2F51CA2C317007A9D52 /* FetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */; }; + B5D9E2F61CA2C317007A9D52 /* MigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A261201B64BFDB006EB6D3 /* MigrationType.swift */; }; + B5D9E2F71CA2C317007A9D52 /* DataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F061AFF847B0064E85B /* DataStack+Querying.swift */; }; + B5D9E2F81CA2C317007A9D52 /* SectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007131B3F6C2800A9A8F9 /* SectionBy.swift */; }; + B5D9E2F91CA2C317007A9D52 /* NSManagedObjectContext+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F331AFF85470064E85B /* NSManagedObjectContext+Transaction.swift */; }; + B5D9E2FA1CA2C317007A9D52 /* UnsafeDataTransaction+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */; }; + B5D9E2FB1CA2C317007A9D52 /* MigrationChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007151B4018AB00A9A8F9 /* MigrationChain.swift */; }; + B5D9E2FC1CA2C317007A9D52 /* Tweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F001AFF847B0064E85B /* Tweak.swift */; }; + B5D9E2FD1CA2C317007A9D52 /* OrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F041AFF847B0064E85B /* OrderBy.swift */; }; + B5D9E2FE1CA2C317007A9D52 /* NSManagedObjectContext+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F321AFF85470064E85B /* NSManagedObjectContext+Setup.swift */; }; + B5D9E2FF1CA2C317007A9D52 /* CoreStore+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */; }; + B5D9E3001CA2C317007A9D52 /* CoreStore+Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE41AFF84610064E85B /* CoreStore+Logging.swift */; }; + B5D9E3011CA2C317007A9D52 /* Into.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007101B3F6BD500A9A8F9 /* Into.swift */; }; + B5D9E3021CA2C317007A9D52 /* Select.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F031AFF847B0064E85B /* Select.swift */; }; + B5D9E3031CA2C317007A9D52 /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; + B5D9E3041CA2C317007A9D52 /* NSFetchedResultsController+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5202CF91C04688100DED140 /* NSFetchedResultsController+Convenience.swift */; }; + B5D9E3051CA2C317007A9D52 /* PersistentStoreResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDE1AFF84500064E85B /* PersistentStoreResult.swift */; }; + B5D9E3061CA2C317007A9D52 /* ObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1F1AFF84860064E85B /* ObjectObserver.swift */; }; + B5D9E3071CA2C317007A9D52 /* NotificationObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2B1AFF849C0064E85B /* NotificationObserver.swift */; }; + B5D9E3081CA2C317007A9D52 /* ImportableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */; }; + B5D9E3091CA2C317007A9D52 /* MigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56965231B356B820075EE4A /* MigrationResult.swift */; }; + B5D9E30A1CA2C317007A9D52 /* CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F291E2619C6D3CF007AF63F /* CoreStore.swift */; }; + B5D9E30B1CA2C317007A9D52 /* ClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F401AFF8CCD0064E85B /* ClauseTypes.swift */; }; + B5D9E30C1CA2C317007A9D52 /* BaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EFE1AFF847B0064E85B /* BaseDataTransaction+Querying.swift */; }; + B5D9E30D1CA2C317007A9D52 /* MigrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AB1B51285300714891 /* MigrationManager.swift */; }; + B5D9E30E1CA2C317007A9D52 /* DataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEC1AFF846E0064E85B /* DataStack+Transaction.swift */; }; + B5D9E30F1CA2C317007A9D52 /* DataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDB1AFF84500064E85B /* DataStack.swift */; }; + B5D9E3101CA2C317007A9D52 /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834BA1B7691F3001D3D50 /* Functions.swift */; }; + B5D9E3111CA2C317007A9D52 /* ListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1D1AFF84860064E85B /* ListMonitor.swift */; }; + B5D9E3121CA2C317007A9D52 /* UnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EED1AFF846E0064E85B /* UnsafeDataTransaction.swift */; }; + B5D9E3131CA2C317007A9D52 /* DataStack+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56964D31B22FFAD0075EE4A /* DataStack+Migration.swift */; }; + B5D9E3141CA2C317007A9D52 /* BaseDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEB1AFF846E0064E85B /* BaseDataTransaction.swift */; }; + B5D9E3151CA2C317007A9D52 /* SaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF21AFF846E0064E85B /* SaveResult.swift */; }; + B5D9E3161CA2C317007A9D52 /* From.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F011AFF847B0064E85B /* From.swift */; }; + B5D9E3171CA2C317007A9D52 /* NSFileManager+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59D5C211B5BA34B00453479 /* NSFileManager+Setup.swift */; }; + B5D9E3181CA2C317007A9D52 /* NSProgress+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6A81B50A4B300714891 /* NSProgress+Convenience.swift */; }; + B5D9E3191CA2C317007A9D52 /* SynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EF31AFF846E0064E85B /* SynchronousDataTransaction.swift */; }; + B5D9E31A1CA2C317007A9D52 /* NSManagedObject+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F271AFF84920064E85B /* NSManagedObject+Convenience.swift */; }; + B5D9E31B1CA2C317007A9D52 /* NSManagedObjectModel+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */; }; + B5D9E31C1CA2C317007A9D52 /* NSManagedObjectContext+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F351AFF85470064E85B /* NSManagedObjectContext+Querying.swift */; }; + B5D9E31D1CA2C317007A9D52 /* CoreStoreLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE51AFF84610064E85B /* CoreStoreLogger.swift */; }; + B5D9E31E1CA2C317007A9D52 /* WeakObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2D1AFF849C0064E85B /* WeakObject.swift */; }; + B5D9E31F1CA2C317007A9D52 /* GroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F021AFF847B0064E85B /* GroupBy.swift */; }; + B5D9E3201CA2C317007A9D52 /* DataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1A1AFF84860064E85B /* DataStack+Observing.swift */; }; + B5D9E3211CA2C317007A9D52 /* CoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEE1AFF846E0064E85B /* CoreStore+Transaction.swift */; }; + B5D9E3221CA2C317007A9D52 /* NSManagedObjectContext+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2C1AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift */; }; + B5D9E3231CA2C317007A9D52 /* CoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1B1AFF84860064E85B /* CoreStore+Observing.swift */; }; + B5D9E3241CA2C317007A9D52 /* BaseDataTransaction+Importing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834B81B76311F001D3D50 /* BaseDataTransaction+Importing.swift */; }; + B5D9E3251CA2C317007A9D52 /* DefaultLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE31AFF84610064E85B /* DefaultLogger.swift */; }; + B5D9E3261CA2C317007A9D52 /* AsynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EEA1AFF846E0064E85B /* AsynchronousDataTransaction.swift */; }; + B5D9E3271CA2C317007A9D52 /* CoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F071AFF847B0064E85B /* CoreStore+Querying.swift */; }; + B5D9E3281CA2C317007A9D52 /* ListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1E1AFF84860064E85B /* ListObserver.swift */; }; + B5D9E3291CA2C317007A9D52 /* AssociatedObjects.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2A1AFF849C0064E85B /* AssociatedObjects.swift */; }; + B5D9E32C1CA2C317007A9D52 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5D39A0119FD00C9000E91BB /* Foundation.framework */; }; + B5D9E32D1CA2C317007A9D52 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F03A54C19C5C872005002A5 /* CoreData.framework */; }; + B5D9E32F1CA2C317007A9D52 /* CoreStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F03A53519C5C6DA005002A5 /* CoreStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5D9E3431CA2C6C4007A9D52 /* GCDBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E3371CA2C6BF007A9D52 /* GCDBlock.swift */; }; + B5D9E3441CA2C6C4007A9D52 /* GCDGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E3381CA2C6BF007A9D52 /* GCDGroup.swift */; }; + B5D9E3451CA2C6C4007A9D52 /* GCDKit.h in Headers */ = {isa = PBXBuildFile; fileRef = B5D9E3391CA2C6BF007A9D52 /* GCDKit.h */; }; + B5D9E3461CA2C6C4007A9D52 /* GCDQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E33A1CA2C6BF007A9D52 /* GCDQueue.swift */; }; + B5D9E3471CA2C6C4007A9D52 /* GCDSemaphore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E33B1CA2C6BF007A9D52 /* GCDSemaphore.swift */; }; + B5D9E3481CA2C6C4007A9D52 /* GCDTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E33C1CA2C6BF007A9D52 /* GCDTimer.swift */; }; B5E834B91B76311F001D3D50 /* BaseDataTransaction+Importing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834B81B76311F001D3D50 /* BaseDataTransaction+Importing.swift */; }; B5E834BB1B7691F3001D3D50 /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834BA1B7691F3001D3D50 /* Functions.swift */; }; B5E84EDF1AFF84500064E85B /* DataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDB1AFF84500064E85B /* DataStack.swift */; }; @@ -321,7 +389,7 @@ B56965231B356B820075EE4A /* MigrationResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MigrationResult.swift; sourceTree = ""; }; B59D5C211B5BA34B00453479 /* NSFileManager+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSFileManager+Setup.swift"; sourceTree = ""; }; B5A261201B64BFDB006EB6D3 /* MigrationType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MigrationType.swift; sourceTree = ""; }; - B5BDC91A1C202269008147CD /* CartFile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CartFile; sourceTree = ""; }; + B5BDC91A1C202269008147CD /* Cartfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Cartfile; path = ../Cartfile; sourceTree = ""; }; B5BDC9271C2024F2008147CD /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .travis.yml; sourceTree = SOURCE_ROOT; }; B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UnsafeDataTransaction+Observing.swift"; sourceTree = ""; }; B5C976E61C6E3A5900B1AF90 /* CoreStoreFetchedResultsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreStoreFetchedResultsController.swift; sourceTree = ""; }; @@ -331,6 +399,13 @@ B5D39A0119FD00C9000E91BB /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; B5D5E0CE1A4D6AAB006468AF /* TestEntity2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestEntity2.swift; sourceTree = ""; }; B5D9C8F61B160ED200E64F0E /* CoreStore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; path = CoreStore.podspec; sourceTree = SOURCE_ROOT; }; + B5D9E3341CA2C317007A9D52 /* CoreStore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreStore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B5D9E3371CA2C6BF007A9D52 /* GCDBlock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GCDBlock.swift; path = Carthage/Checkouts/GCDKit/Sources/GCDBlock.swift; sourceTree = ""; }; + B5D9E3381CA2C6BF007A9D52 /* GCDGroup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GCDGroup.swift; path = Carthage/Checkouts/GCDKit/Sources/GCDGroup.swift; sourceTree = ""; }; + B5D9E3391CA2C6BF007A9D52 /* GCDKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GCDKit.h; path = Carthage/Checkouts/GCDKit/Sources/GCDKit.h; sourceTree = ""; }; + B5D9E33A1CA2C6BF007A9D52 /* GCDQueue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GCDQueue.swift; path = Carthage/Checkouts/GCDKit/Sources/GCDQueue.swift; sourceTree = ""; }; + B5D9E33B1CA2C6BF007A9D52 /* GCDSemaphore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GCDSemaphore.swift; path = Carthage/Checkouts/GCDKit/Sources/GCDSemaphore.swift; sourceTree = ""; }; + B5D9E33C1CA2C6BF007A9D52 /* GCDTimer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GCDTimer.swift; path = Carthage/Checkouts/GCDKit/Sources/GCDTimer.swift; sourceTree = ""; }; B5E834B81B76311F001D3D50 /* BaseDataTransaction+Importing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "BaseDataTransaction+Importing.swift"; sourceTree = ""; }; B5E834BA1B7691F3001D3D50 /* Functions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Functions.swift; sourceTree = ""; }; B5E84ED81AFF82360064E85B /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = SOURCE_ROOT; }; @@ -442,6 +517,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B5D9E32A1CA2C317007A9D52 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B5D9E32C1CA2C317007A9D52 /* Foundation.framework in Frameworks */, + B5D9E32D1CA2C317007A9D52 /* CoreData.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -465,6 +549,7 @@ B52DD17D1BE1F8CC00949AFE /* CoreStoreTests.xctest */, 82BA18891C4BBCBA00A0916E /* CoreStore.framework */, 82BA18921C4BBCBA00A0916E /* CoreStoreTests.xctest */, + B5D9E3341CA2C317007A9D52 /* CoreStore.framework */, ); name = Products; sourceTree = ""; @@ -496,7 +581,7 @@ B5E84ED81AFF82360064E85B /* README.md */, B5E84ED91AFF82360064E85B /* LICENSE */, B5D9C8F61B160ED200E64F0E /* CoreStore.podspec */, - B5BDC91A1C202269008147CD /* CartFile */, + B5BDC91A1C202269008147CD /* Cartfile */, B5BDC9271C2024F2008147CD /* .travis.yml */, ); name = "Supporting Files"; @@ -525,6 +610,7 @@ 2F291E3119C6D4D3007AF63F /* Frameworks */ = { isa = PBXGroup; children = ( + B5D9E3361CA2C6A3007A9D52 /* GCDKit iOS7 */, B519E4571C4CD2CA00E7B469 /* GCDKit.framework */, B5548CD71BD65AE50077652A /* CoreData.framework */, B56321791BD650DE006C9394 /* CoreData.framework */, @@ -550,6 +636,19 @@ path = Migrating; sourceTree = ""; }; + B5D9E3361CA2C6A3007A9D52 /* GCDKit iOS7 */ = { + isa = PBXGroup; + children = ( + B5D9E3371CA2C6BF007A9D52 /* GCDBlock.swift */, + B5D9E3381CA2C6BF007A9D52 /* GCDGroup.swift */, + B5D9E3391CA2C6BF007A9D52 /* GCDKit.h */, + B5D9E33A1CA2C6BF007A9D52 /* GCDQueue.swift */, + B5D9E33B1CA2C6BF007A9D52 /* GCDSemaphore.swift */, + B5D9E33C1CA2C6BF007A9D52 /* GCDTimer.swift */, + ); + name = "GCDKit iOS7"; + sourceTree = ""; + }; B5E834B61B7630BD001D3D50 /* Importing Data */ = { isa = PBXGroup; children = ( @@ -709,6 +808,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B5D9E32E1CA2C317007A9D52 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B5D9E3451CA2C6C4007A9D52 /* GCDKit.h in Headers */, + B5D9E32F1CA2C317007A9D52 /* CoreStore.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -838,6 +946,24 @@ productReference = B563216F1BD65082006C9394 /* CoreStore.framework */; productType = "com.apple.product-type.framework"; }; + B5D9E2ED1CA2C317007A9D52 /* CoreStore iOS7 */ = { + isa = PBXNativeTarget; + buildConfigurationList = B5D9E3311CA2C317007A9D52 /* Build configuration list for PBXNativeTarget "CoreStore iOS7" */; + buildPhases = ( + B5D9E2EE1CA2C317007A9D52 /* Sources */, + B5D9E32A1CA2C317007A9D52 /* Frameworks */, + B5D9E32E1CA2C317007A9D52 /* Headers */, + B5D9E3301CA2C317007A9D52 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "CoreStore iOS7"; + productName = CoreStore; + productReference = B5D9E3341CA2C317007A9D52 /* CoreStore.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -885,6 +1011,7 @@ projectRoot = ""; targets = ( 2F03A52F19C5C6DA005002A5 /* CoreStore iOS */, + B5D9E2ED1CA2C317007A9D52 /* CoreStore iOS7 */, 2F03A53A19C5C6DA005002A5 /* CoreStoreTests iOS */, 82BA18881C4BBCBA00A0916E /* CoreStore tvOS */, 82BA18911C4BBCBA00A0916E /* CoreStoreTests tvOS */, @@ -945,6 +1072,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B5D9E3301CA2C317007A9D52 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -1234,6 +1368,77 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B5D9E2EE1CA2C317007A9D52 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B5D9E2EF1CA2C317007A9D52 /* ObjectMonitor.swift in Sources */, + B5D9E2F01CA2C317007A9D52 /* CoreStoreFetchedResultsController.swift in Sources */, + B5D9E3461CA2C6C4007A9D52 /* GCDQueue.swift in Sources */, + B5D9E2F11CA2C317007A9D52 /* ImportableUniqueObject.swift in Sources */, + B5D9E2F21CA2C317007A9D52 /* CoreStore+Setup.swift in Sources */, + B5D9E2F31CA2C317007A9D52 /* NSError+CoreStore.swift in Sources */, + B5D9E2F41CA2C317007A9D52 /* Where.swift in Sources */, + B5D9E2F51CA2C317007A9D52 /* FetchedResultsControllerDelegate.swift in Sources */, + B5D9E2F61CA2C317007A9D52 /* MigrationType.swift in Sources */, + B5D9E2F71CA2C317007A9D52 /* DataStack+Querying.swift in Sources */, + B5D9E2F81CA2C317007A9D52 /* SectionBy.swift in Sources */, + B5D9E2F91CA2C317007A9D52 /* NSManagedObjectContext+Transaction.swift in Sources */, + B5D9E2FA1CA2C317007A9D52 /* UnsafeDataTransaction+Observing.swift in Sources */, + B5D9E2FB1CA2C317007A9D52 /* MigrationChain.swift in Sources */, + B5D9E2FC1CA2C317007A9D52 /* Tweak.swift in Sources */, + B5D9E2FD1CA2C317007A9D52 /* OrderBy.swift in Sources */, + B5D9E2FE1CA2C317007A9D52 /* NSManagedObjectContext+Setup.swift in Sources */, + B5D9E2FF1CA2C317007A9D52 /* CoreStore+Migration.swift in Sources */, + B5D9E3001CA2C317007A9D52 /* CoreStore+Logging.swift in Sources */, + B5D9E3011CA2C317007A9D52 /* Into.swift in Sources */, + B5D9E3021CA2C317007A9D52 /* Select.swift in Sources */, + B5D9E3031CA2C317007A9D52 /* NSManagedObject+Transaction.swift in Sources */, + B5D9E3041CA2C317007A9D52 /* NSFetchedResultsController+Convenience.swift in Sources */, + B5D9E3051CA2C317007A9D52 /* PersistentStoreResult.swift in Sources */, + B5D9E3061CA2C317007A9D52 /* ObjectObserver.swift in Sources */, + B5D9E3071CA2C317007A9D52 /* NotificationObserver.swift in Sources */, + B5D9E3081CA2C317007A9D52 /* ImportableObject.swift in Sources */, + B5D9E3091CA2C317007A9D52 /* MigrationResult.swift in Sources */, + B5D9E30A1CA2C317007A9D52 /* CoreStore.swift in Sources */, + B5D9E30B1CA2C317007A9D52 /* ClauseTypes.swift in Sources */, + B5D9E30C1CA2C317007A9D52 /* BaseDataTransaction+Querying.swift in Sources */, + B5D9E30D1CA2C317007A9D52 /* MigrationManager.swift in Sources */, + B5D9E30E1CA2C317007A9D52 /* DataStack+Transaction.swift in Sources */, + B5D9E30F1CA2C317007A9D52 /* DataStack.swift in Sources */, + B5D9E3101CA2C317007A9D52 /* Functions.swift in Sources */, + B5D9E3431CA2C6C4007A9D52 /* GCDBlock.swift in Sources */, + B5D9E3111CA2C317007A9D52 /* ListMonitor.swift in Sources */, + B5D9E3121CA2C317007A9D52 /* UnsafeDataTransaction.swift in Sources */, + B5D9E3131CA2C317007A9D52 /* DataStack+Migration.swift in Sources */, + B5D9E3141CA2C317007A9D52 /* BaseDataTransaction.swift in Sources */, + B5D9E3151CA2C317007A9D52 /* SaveResult.swift in Sources */, + B5D9E3161CA2C317007A9D52 /* From.swift in Sources */, + B5D9E3171CA2C317007A9D52 /* NSFileManager+Setup.swift in Sources */, + B5D9E3181CA2C317007A9D52 /* NSProgress+Convenience.swift in Sources */, + B5D9E3191CA2C317007A9D52 /* SynchronousDataTransaction.swift in Sources */, + B5D9E31A1CA2C317007A9D52 /* NSManagedObject+Convenience.swift in Sources */, + B5D9E31B1CA2C317007A9D52 /* NSManagedObjectModel+Setup.swift in Sources */, + B5D9E3441CA2C6C4007A9D52 /* GCDGroup.swift in Sources */, + B5D9E31C1CA2C317007A9D52 /* NSManagedObjectContext+Querying.swift in Sources */, + B5D9E31D1CA2C317007A9D52 /* CoreStoreLogger.swift in Sources */, + B5D9E31E1CA2C317007A9D52 /* WeakObject.swift in Sources */, + B5D9E3471CA2C6C4007A9D52 /* GCDSemaphore.swift in Sources */, + B5D9E31F1CA2C317007A9D52 /* GroupBy.swift in Sources */, + B5D9E3201CA2C317007A9D52 /* DataStack+Observing.swift in Sources */, + B5D9E3211CA2C317007A9D52 /* CoreStore+Transaction.swift in Sources */, + B5D9E3221CA2C317007A9D52 /* NSManagedObjectContext+CoreStore.swift in Sources */, + B5D9E3481CA2C6C4007A9D52 /* GCDTimer.swift in Sources */, + B5D9E3231CA2C317007A9D52 /* CoreStore+Observing.swift in Sources */, + B5D9E3241CA2C317007A9D52 /* BaseDataTransaction+Importing.swift in Sources */, + B5D9E3251CA2C317007A9D52 /* DefaultLogger.swift in Sources */, + B5D9E3261CA2C317007A9D52 /* AsynchronousDataTransaction.swift in Sources */, + B5D9E3271CA2C317007A9D52 /* CoreStore+Querying.swift in Sources */, + B5D9E3281CA2C317007A9D52 /* ListObserver.swift in Sources */, + B5D9E3291CA2C317007A9D52 /* AssociatedObjects.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -1291,11 +1496,14 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = CoreStore/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; OTHER_SWIFT_FLAGS = "-D USE_FRAMEWORKS -D DEBUG"; + PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.CoreStore; + PRODUCT_NAME = CoreStore; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1336,10 +1544,13 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = CoreStore/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO; OTHER_SWIFT_FLAGS = "-D USE_FRAMEWORKS"; + PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.CoreStore; + PRODUCT_NAME = CoreStore; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1359,11 +1570,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = CoreStore/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.johnestropia.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = CoreStore; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; @@ -1377,11 +1585,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = CoreStore/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.johnestropia.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = CoreStore; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; @@ -1424,11 +1629,8 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = CoreStore/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.johnestropia.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = CoreStore; SDKROOT = appletvos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = 3; @@ -1443,11 +1645,8 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = CoreStore/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.johnestropia.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = CoreStore; SDKROOT = appletvos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = 3; @@ -1494,11 +1693,8 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_VERSION = A; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = CoreStore/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.CoreStore; - PRODUCT_NAME = CoreStore; SDKROOT = macosx; SKIP_INSTALL = YES; }; @@ -1518,11 +1714,8 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_VERSION = A; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = CoreStore/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.CoreStore; - PRODUCT_NAME = CoreStore; SDKROOT = macosx; SKIP_INSTALL = YES; }; @@ -1571,11 +1764,8 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = CoreStore/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.CoreStore; - PRODUCT_NAME = CoreStore; SDKROOT = watchos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = 4; @@ -1592,17 +1782,46 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = CoreStore/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.CoreStore; - PRODUCT_NAME = CoreStore; SDKROOT = watchos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = 4; }; name = Release; }; + B5D9E3321CA2C317007A9D52 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_SWIFT_FLAGS = "-D DEBUG"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + B5D9E3331CA2C317007A9D52 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_SWIFT_FLAGS = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -1678,6 +1897,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + B5D9E3311CA2C317007A9D52 /* Build configuration list for PBXNativeTarget "CoreStore iOS7" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B5D9E3321CA2C317007A9D52 /* Debug */, + B5D9E3331CA2C317007A9D52 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ /* Begin XCVersionGroup section */ diff --git a/CoreStore/CartFile b/CoreStore/CartFile deleted file mode 100644 index 02fe6a3..0000000 --- a/CoreStore/CartFile +++ /dev/null @@ -1 +0,0 @@ -github "JohnEstropia/GCDKit" == 1.2.1 diff --git a/CoreStore/Info.plist b/CoreStore/Info.plist index a5a90db..a1dfe14 100644 --- a/CoreStore/Info.plist +++ b/CoreStore/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.5.4 + 1.6.0 CFBundleSignature ???? CFBundleVersion diff --git a/CoreStore/Internal/NSManagedObjectContext+CoreStore.swift b/CoreStore/Internal/NSManagedObjectContext+CoreStore.swift index ffcc064..2d8a44d 100644 --- a/CoreStore/Internal/NSManagedObjectContext+CoreStore.swift +++ b/CoreStore/Internal/NSManagedObjectContext+CoreStore.swift @@ -74,8 +74,17 @@ internal extension NSManagedObjectContext { } internal func setupForCoreStoreWithContextName(contextName: String) { - - self.name = contextName + + #if USE_FRAMEWORKS + + self.name = contextName + #else + + if #available(iOS 8.0, *) { + + self.name = contextName + } + #endif self.observerForWillSaveNotification = NotificationObserver( notificationName: NSManagedObjectContextWillSaveNotification, diff --git a/CoreStore/Internal/NSPersistentStoreCoordinator+Setup.swift b/CoreStore/Internal/NSPersistentStoreCoordinator+Setup.swift new file mode 100644 index 0000000..b316053 --- /dev/null +++ b/CoreStore/Internal/NSPersistentStoreCoordinator+Setup.swift @@ -0,0 +1,80 @@ +// +// NSPersistentStoreCoordinator+Setup.swift +// CoreStore +// +// Copyright © 2016 John Rommel Estropia. All rights reserved. +// +// 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 USE_FRAMEWORKS + import GCDKit +#endif + + +// MARK: - NSPersistentStoreCoordinator + +internal extension NSPersistentStoreCoordinator { + + internal func performAsynchronously(closure: () -> Void) { + + #if USE_FRAMEWORKS + + self.performBlock(closure) + #else + + if #available(iOS 8.0, *) { + + self.performBlock(closure) + } + else { + + self.lock() + GCDQueue.Default.async { + + closure() + self.unlock() + } + } + #endif + } + + internal func performSynchronously(closure: () -> Void) { + + #if USE_FRAMEWORKS + + self.performBlockAndWait(closure) + #else + + if #available(iOS 8.0, *) { + + self.performBlockAndWait(closure) + } + else { + + self.lock() + autoreleasepool(closure) + self.unlock() + } + #endif + } +} \ No newline at end of file diff --git a/CoreStore/Migrating/DataStack+Migration.swift b/CoreStore/Migrating/DataStack+Migration.swift index 8017d0d..83d5248 100644 --- a/CoreStore/Migrating/DataStack+Migration.swift +++ b/CoreStore/Migrating/DataStack+Migration.swift @@ -42,7 +42,7 @@ public extension DataStack { */ public func addInMemoryStore(configuration configuration: String? = nil, completion: (PersistentStoreResult) -> Void) { - self.coordinator.performBlock { + self.coordinator.performAsynchronously { do { @@ -438,7 +438,16 @@ public extension DataStack { } let migrationOperation = NSBlockOperation() - migrationOperation.qualityOfService = .Utility + #if USE_FRAMEWORKS + + migrationOperation.qualityOfService = .Utility + #else + + if #available(iOS 8.0, *) { + + migrationOperation.qualityOfService = .Utility + } + #endif operations.forEach { migrationOperation.addDependency($0) } migrationOperation.addExecutionBlock { () -> Void in diff --git a/CoreStore/Setting Up/DataStack.swift b/CoreStore/Setting Up/DataStack.swift index 76ddacd..551ba4e 100644 --- a/CoreStore/Setting Up/DataStack.swift +++ b/CoreStore/Setting Up/DataStack.swift @@ -126,7 +126,7 @@ public final class DataStack { var store: NSPersistentStore? var storeError: NSError? - coordinator.performBlockAndWait { + coordinator.performSynchronously { do { @@ -220,7 +220,7 @@ public final class DataStack { var store: NSPersistentStore? var storeError: NSError? let options = self.optionsForSQLiteStore() - coordinator.performBlockAndWait { + coordinator.performSynchronously { do { @@ -249,7 +249,7 @@ public final class DataStack { fileManager.removeSQLiteStoreAtURL(fileURL) var store: NSPersistentStore? - coordinator.performBlockAndWait { + coordinator.performSynchronously { do { @@ -295,8 +295,18 @@ public final class DataStack { let migrationQueue = NSOperationQueue() migrationQueue.maxConcurrentOperationCount = 1 migrationQueue.name = "com.coreStore.migrationOperationQueue" - migrationQueue.qualityOfService = .Utility - migrationQueue.underlyingQueue = dispatch_queue_create("com.coreStore.migrationQueue", DISPATCH_QUEUE_SERIAL) + #if USE_FRAMEWORKS + + migrationQueue.qualityOfService = .Utility + migrationQueue.underlyingQueue = dispatch_queue_create("com.coreStore.migrationQueue", DISPATCH_QUEUE_SERIAL) + #else + + if #available(iOS 8.0, *) { + + migrationQueue.qualityOfService = .Utility + migrationQueue.underlyingQueue = dispatch_queue_create("com.coreStore.migrationQueue", DISPATCH_QUEUE_SERIAL) + } + #endif return migrationQueue }() diff --git a/README.md b/README.md index ee60c5d..aa5b65b 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,19 @@ -# CoreStore -[![Build Status](https://img.shields.io/travis/JohnEstropia/CoreStore/master.svg)](https://travis-ci.org/JohnEstropia/CoreStore) -[![Version](https://img.shields.io/cocoapods/v/CoreStore.svg?style=flat)](http://cocoadocs.org/docsets/CoreStore) -[![Platform](https://img.shields.io/cocoapods/p/CoreStore.svg?style=flat)](http://cocoadocs.org/docsets/CoreStore) -[![License](https://img.shields.io/cocoapods/l/CoreStore.svg?style=flat)](https://raw.githubusercontent.com/JohnEstropia/CoreStore/master/LICENSE) -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) - +

+CoreStore +
+
Unleashing the real power of Core Data with the elegance and safety of Swift -* Swift 2.2 (Xcode 7.3), iOS 8+/OSX 10.10+ (or try out the [iOS 7 branch](https://github.com/JohnEstropia/CoreStore/tree/ios7_support_alpha)) - -[Click here for a wiki version of this README](https://github.com/JohnEstropia/CoreStore/wiki) +
+
+Build Status +Version" +Platform +License +Carthage compatible +
+

+* Swift 2.2 (Xcode 7.3) +* iOS 7+ / OSX 10.10+ / watchOS 2.0+ / tvOS 9.0+ @@ -1166,12 +1171,12 @@ let person2 = self.monitor[1, 2] # Installation - Requires: - - iOS 8 SDK and above - - Swift 2.1 (Xcode 7.2) + - iOS 7 SDK and above + - Swift 2.2 (Xcode 7.3) - Dependencies: - [GCDKit](https://github.com/JohnEstropia/GCDKit) -### Install with CocoaPods +### Install with CocoaPods (iOS 7 not supported) ``` pod 'CoreStore' ``` @@ -1180,8 +1185,8 @@ This installs CoreStore as a framework. Declare `import CoreStore` in your swift ### Install with Carthage In your `Cartfile`, add ``` -github "JohnEstropia/CoreStore" >= 1.4.4 -github "JohnEstropia/GCDKit" >= 1.1.7 +github "JohnEstropia/CoreStore" >= 1.6.0 +github "JohnEstropia/GCDKit" >= 1.2.2 ``` and run ``` @@ -1194,7 +1199,7 @@ git submodule add https://github.com/JohnEstropia/CoreStore.git