diff --git a/CoreStore.png b/CoreStore.png new file mode 100644 index 0000000..b2feee1 Binary files /dev/null and b/CoreStore.png differ diff --git a/CoreStore.podspec b/CoreStore.podspec index dcb9f17..4044620 100644 --- a/CoreStore.podspec +++ b/CoreStore.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "CoreStore" - s.version = "1.6.10" + s.version = "2.0.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" @@ -12,11 +12,12 @@ Pod::Spec.new do |s| s.watchos.deployment_target = "2.0" s.tvos.deployment_target = "9.0" - s.source_files = "CoreStore", "CoreStore/**/*.{swift}" - s.osx.exclude_files = "CoreStore/Observing/*.{swift}", "CoreStore/Internal/FetchedResultsControllerDelegate.swift", "CoreStore/Internal/CoreStoreFetchedResultsController.swift", "CoreStore/Convenience Helpers/NSFetchedResultsController+Convenience.swift" + s.source_files = "Sources", "Sources/**/*.{swift,h,m}" + s.public_header_files = "Sources/**/*.h" s.frameworks = "Foundation", "CoreData" s.requires_arc = true - s.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-D USE_FRAMEWORKS' } + s.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-D USE_FRAMEWORKS', + 'GCC_PREPROCESSOR_DEFINITIONS' => 'USE_FRAMEWORKS=1' } s.dependency "GCDKit", "1.2.5" end \ No newline at end of file diff --git a/CoreStore.sketch b/CoreStore.sketch new file mode 100644 index 0000000..d82850b Binary files /dev/null and b/CoreStore.sketch differ diff --git a/CoreStore.xcodeproj/project.pbxproj b/CoreStore.xcodeproj/project.pbxproj index bd7b837..2fc29e6 100644 --- a/CoreStore.xcodeproj/project.pbxproj +++ b/CoreStore.xcodeproj/project.pbxproj @@ -8,15 +8,13 @@ /* Begin PBXBuildFile section */ 2F03A53619C5C6DA005002A5 /* CoreStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F03A53519C5C6DA005002A5 /* CoreStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2F03A54019C5C6DA005002A5 /* CoreStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F03A53F19C5C6DA005002A5 /* CoreStoreTests.swift */; }; 2F03A54D19C5C872005002A5 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F03A54C19C5C872005002A5 /* CoreData.framework */; }; 2F291E2719C6D3CF007AF63F /* CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F291E2619C6D3CF007AF63F /* CoreStore.swift */; }; 82BA18931C4BBCBA00A0916E /* CoreStore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82BA18891C4BBCBA00A0916E /* CoreStore.framework */; }; 82BA18A01C4BBD1400A0916E /* CoreStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F03A53519C5C6DA005002A5 /* CoreStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; 82BA18A11C4BBD1D00A0916E /* CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F291E2619C6D3CF007AF63F /* CoreStore.swift */; }; - 82BA18A21C4BBD1D00A0916E /* NSError+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* NSError+CoreStore.swift */; }; + 82BA18A21C4BBD1D00A0916E /* CoreStoreError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* CoreStoreError.swift */; }; 82BA18A31C4BBD2200A0916E /* DataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDB1AFF84500064E85B /* DataStack.swift */; }; - 82BA18A41C4BBD2200A0916E /* PersistentStoreResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDE1AFF84500064E85B /* PersistentStoreResult.swift */; }; 82BA18A51C4BBD2200A0916E /* CoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */; }; 82BA18A61C4BBD2900A0916E /* DefaultLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE31AFF84610064E85B /* DefaultLogger.swift */; }; 82BA18A71C4BBD2900A0916E /* CoreStore+Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE41AFF84610064E85B /* CoreStore+Logging.swift */; }; @@ -57,25 +55,32 @@ 82BA18CA1C4BBD5900A0916E /* MigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56965231B356B820075EE4A /* MigrationResult.swift */; }; 82BA18CB1C4BBD6400A0916E /* NSManagedObject+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F271AFF84920064E85B /* NSManagedObject+Convenience.swift */; }; 82BA18CC1C4BBD6400A0916E /* NSProgress+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6A81B50A4B300714891 /* NSProgress+Convenience.swift */; }; - 82BA18CD1C4BBD7100A0916E /* AssociatedObjects.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2A1AFF849C0064E85B /* AssociatedObjects.swift */; }; 82BA18CE1C4BBD7100A0916E /* FetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */; }; 82BA18CF1C4BBD7100A0916E /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834BA1B7691F3001D3D50 /* Functions.swift */; }; 82BA18D01C4BBD7100A0916E /* MigrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AB1B51285300714891 /* MigrationManager.swift */; }; 82BA18D11C4BBD7100A0916E /* NotificationObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2B1AFF849C0064E85B /* NotificationObserver.swift */; }; - 82BA18D21C4BBD7100A0916E /* NSFileManager+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59D5C211B5BA34B00453479 /* NSFileManager+Setup.swift */; }; 82BA18D31C4BBD7100A0916E /* NSManagedObjectContext+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2C1AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift */; }; 82BA18D41C4BBD7100A0916E /* NSManagedObjectContext+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F351AFF85470064E85B /* NSManagedObjectContext+Querying.swift */; }; 82BA18D51C4BBD7100A0916E /* NSManagedObjectContext+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F321AFF85470064E85B /* NSManagedObjectContext+Setup.swift */; }; 82BA18D61C4BBD7100A0916E /* NSManagedObjectContext+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F331AFF85470064E85B /* NSManagedObjectContext+Transaction.swift */; }; 82BA18D71C4BBD7100A0916E /* NSManagedObjectModel+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */; }; 82BA18D81C4BBD7100A0916E /* WeakObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2D1AFF849C0064E85B /* WeakObject.swift */; }; - 82BA18D91C4BBD9700A0916E /* CoreStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F03A53F19C5C6DA005002A5 /* CoreStoreTests.swift */; }; - 82BA18DA1C4BBD9700A0916E /* TestEntity1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D372851A39CDDB00F583D9 /* TestEntity1.swift */; }; - 82BA18DB1C4BBD9700A0916E /* TestEntity2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D5E0CE1A4D6AAB006468AF /* TestEntity2.swift */; }; 82BA18DC1C4BBD9C00A0916E /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B5D372821A39CD6900F583D9 /* Model.xcdatamodeld */; }; 82BA18DD1C4BBE1400A0916E /* NSFetchedResultsController+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5202CF91C04688100DED140 /* NSFetchedResultsController+Convenience.swift */; }; 82BA18DF1C4BBE2600A0916E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82BA18DE1C4BBE2600A0916E /* Foundation.framework */; }; 82BA18E11C4BBE2C00A0916E /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82BA18E01C4BBE2C00A0916E /* CoreData.framework */; }; + B501FDDD1CA8D05000BE22EF /* CSSectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDDC1CA8D05000BE22EF /* CSSectionBy.swift */; }; + B501FDDE1CA8D05000BE22EF /* CSSectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDDC1CA8D05000BE22EF /* CSSectionBy.swift */; }; + B501FDDF1CA8D05000BE22EF /* CSSectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDDC1CA8D05000BE22EF /* CSSectionBy.swift */; }; + B501FDE01CA8D05000BE22EF /* CSSectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDDC1CA8D05000BE22EF /* CSSectionBy.swift */; }; + B501FDE21CA8D1F500BE22EF /* CSListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */; }; + B501FDE31CA8D1F500BE22EF /* CSListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */; }; + B501FDE41CA8D1F500BE22EF /* CSListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */; }; + B501FDE51CA8D1F500BE22EF /* CSListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */; }; + B501FDE71CA8D20500BE22EF /* CSListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE61CA8D20500BE22EF /* CSListObserver.swift */; }; + B501FDE81CA8D20500BE22EF /* CSListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE61CA8D20500BE22EF /* CSListObserver.swift */; }; + B501FDE91CA8D20500BE22EF /* CSListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE61CA8D20500BE22EF /* CSListObserver.swift */; }; + B501FDEA1CA8D20500BE22EF /* CSListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE61CA8D20500BE22EF /* CSListObserver.swift */; }; B50392F91C478FF3009900CA /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; B50392FA1C47963F009900CA /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; B50392FB1C479640009900CA /* NSManagedObject+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */; }; @@ -85,21 +90,82 @@ B519E45A1C4CD2DA00E7B469 /* GCDKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B519E4571C4CD2CA00E7B469 /* GCDKit.framework */; }; B519E45B1C4CD2ED00E7B469 /* GCDKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B519E4571C4CD2CA00E7B469 /* GCDKit.framework */; }; B51BE06A1B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */; }; + B51FE5AB1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; }; + B51FE5AC1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; }; + B51FE5AD1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; }; + B51FE5AE1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; }; + B51FE5AF1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */; }; B5202CFA1C04688100DED140 /* NSFetchedResultsController+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5202CF91C04688100DED140 /* NSFetchedResultsController+Convenience.swift */; }; B5202CFD1C046E8400DED140 /* NSFetchedResultsController+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5202CF91C04688100DED140 /* NSFetchedResultsController+Convenience.swift */; }; + B5220E081D0C5F8D009BC71E /* ObjectObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5220E071D0C5F8D009BC71E /* ObjectObserverTests.swift */; }; + B5220E091D0C5F8D009BC71E /* ObjectObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5220E071D0C5F8D009BC71E /* ObjectObserverTests.swift */; }; + B5220E0C1D0D0D19009BC71E /* ImportTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5220E0B1D0D0D19009BC71E /* ImportTests.swift */; }; + B5220E0D1D0D0D19009BC71E /* ImportTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5220E0B1D0D0D19009BC71E /* ImportTests.swift */; }; + B5220E0E1D0D0D19009BC71E /* ImportTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5220E0B1D0D0D19009BC71E /* ImportTests.swift */; }; + B5220E101D0DA6AB009BC71E /* ListObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5220E0F1D0DA6AB009BC71E /* ListObserverTests.swift */; }; + B5220E111D0DA6AB009BC71E /* ListObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5220E0F1D0DA6AB009BC71E /* ListObserverTests.swift */; }; + B5220E131D1305ED009BC71E /* SectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007131B3F6C2800A9A8F9 /* SectionBy.swift */; }; + B5220E141D130614009BC71E /* DataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1A1AFF84860064E85B /* DataStack+Observing.swift */; }; + B5220E151D130663009BC71E /* CoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1B1AFF84860064E85B /* CoreStore+Observing.swift */; }; + B5220E161D13067C009BC71E /* ObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1C1AFF84860064E85B /* ObjectMonitor.swift */; }; + B5220E171D1306DF009BC71E /* UnsafeDataTransaction+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */; }; + B5220E181D130711009BC71E /* ObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1F1AFF84860064E85B /* ObjectObserver.swift */; }; + B5220E191D130761009BC71E /* ListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1D1AFF84860064E85B /* ListMonitor.swift */; }; + B5220E1A1D130791009BC71E /* CoreStoreFetchedResultsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E61C6E3A5900B1AF90 /* CoreStoreFetchedResultsController.swift */; }; + B5220E1B1D13079B009BC71E /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; }; + B5220E1C1D130801009BC71E /* FetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */; }; + B5220E1D1D13080A009BC71E /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; }; + B5220E1E1D13080D009BC71E /* CSListMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */; }; + B5220E1F1D130810009BC71E /* CSListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDE61CA8D20500BE22EF /* CSListObserver.swift */; }; + B5220E201D130813009BC71E /* CSObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */; }; + B5220E211D130816009BC71E /* CSObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5971CAA0C23007FD580 /* CSObjectObserver.swift */; }; + B5220E221D130818009BC71E /* CSSectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B501FDDC1CA8D05000BE22EF /* CSSectionBy.swift */; }; + B5220E231D130826009BC71E /* NSFetchedResultsController+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA1D1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift */; }; + B5220E241D13085E009BC71E /* NSFetchedResultsController+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5202CF91C04688100DED140 /* NSFetchedResultsController+Convenience.swift */; }; + B5220E251D13088E009BC71E /* ListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1E1AFF84860064E85B /* ListObserver.swift */; }; + B5220E261D1308C2009BC71E /* ListObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5220E0F1D0DA6AB009BC71E /* ListObserverTests.swift */; }; + B5220E271D1308D1009BC71E /* ObjectObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5220E071D0C5F8D009BC71E /* ObjectObserverTests.swift */; }; + B5220E281D1308E5009BC71E /* SectionByTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557831D02A07400E51965 /* SectionByTests.swift */; }; + B525576C1CFAF18F00E51965 /* IntoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525576B1CFAF18F00E51965 /* IntoTests.swift */; }; + B525576D1CFAF18F00E51965 /* IntoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525576B1CFAF18F00E51965 /* IntoTests.swift */; }; + B525576E1CFAF18F00E51965 /* IntoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525576B1CFAF18F00E51965 /* IntoTests.swift */; }; + B52557701D02561A00E51965 /* SelectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525576F1D02561A00E51965 /* SelectTests.swift */; }; + B52557711D02561A00E51965 /* SelectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525576F1D02561A00E51965 /* SelectTests.swift */; }; + B52557721D02561A00E51965 /* SelectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525576F1D02561A00E51965 /* SelectTests.swift */; }; + B52557741D02791400E51965 /* WhereTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557731D02791400E51965 /* WhereTests.swift */; }; + B52557751D02791400E51965 /* WhereTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557731D02791400E51965 /* WhereTests.swift */; }; + B52557761D02791400E51965 /* WhereTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557731D02791400E51965 /* WhereTests.swift */; }; + B52557781D02826E00E51965 /* OrderByTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557771D02826E00E51965 /* OrderByTests.swift */; }; + B52557791D02826E00E51965 /* OrderByTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557771D02826E00E51965 /* OrderByTests.swift */; }; + B525577A1D02826E00E51965 /* OrderByTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557771D02826E00E51965 /* OrderByTests.swift */; }; + B525577C1D0291FE00E51965 /* GroupByTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525577B1D0291FE00E51965 /* GroupByTests.swift */; }; + B525577D1D0291FE00E51965 /* GroupByTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525577B1D0291FE00E51965 /* GroupByTests.swift */; }; + B525577E1D0291FE00E51965 /* GroupByTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525577B1D0291FE00E51965 /* GroupByTests.swift */; }; + B52557801D029D2500E51965 /* TweakTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525577F1D029D2500E51965 /* TweakTests.swift */; }; + B52557811D029D2500E51965 /* TweakTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525577F1D029D2500E51965 /* TweakTests.swift */; }; + B52557821D029D2500E51965 /* TweakTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B525577F1D029D2500E51965 /* TweakTests.swift */; }; + B52557841D02A07400E51965 /* SectionByTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557831D02A07400E51965 /* SectionByTests.swift */; }; + B52557851D02A07400E51965 /* SectionByTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52557831D02A07400E51965 /* SectionByTests.swift */; }; + 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 */; }; B52661401CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; }; B52661411CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; }; B52661421CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; }; B52661431CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; }; B52661441CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */; }; + B529C2041CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */; }; + B529C2051CA4A2DB007E7EBD /* 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 */; }; B52DD1911BE1F8EB00949AFE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5548CD51BD65AE00077652A /* Foundation.framework */; }; B52DD1921BE1F8F000949AFE /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5548CD71BD65AE50077652A /* CoreData.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 */; }; - B52DD1951BE1F92500949AFE /* NSError+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* NSError+CoreStore.swift */; }; + B52DD1951BE1F92500949AFE /* CoreStoreError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* CoreStoreError.swift */; }; B52DD1961BE1F92500949AFE /* DataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDB1AFF84500064E85B /* DataStack.swift */; }; - B52DD1971BE1F92500949AFE /* PersistentStoreResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDE1AFF84500064E85B /* PersistentStoreResult.swift */; }; B52DD1981BE1F92500949AFE /* CoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */; }; B52DD1991BE1F92800949AFE /* DefaultLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE31AFF84610064E85B /* DefaultLogger.swift */; }; B52DD19A1BE1F92800949AFE /* CoreStore+Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE41AFF84610064E85B /* CoreStore+Logging.swift */; }; @@ -132,22 +198,112 @@ B52DD1BC1BE1F94000949AFE /* MigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56965231B356B820075EE4A /* MigrationResult.swift */; }; B52DD1BD1BE1F94300949AFE /* NSManagedObject+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F271AFF84920064E85B /* NSManagedObject+Convenience.swift */; }; B52DD1BE1BE1F94300949AFE /* NSProgress+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6A81B50A4B300714891 /* NSProgress+Convenience.swift */; }; - B52DD1BF1BE1F94600949AFE /* AssociatedObjects.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2A1AFF849C0064E85B /* AssociatedObjects.swift */; }; B52DD1C11BE1F94600949AFE /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834BA1B7691F3001D3D50 /* Functions.swift */; }; B52DD1C21BE1F94600949AFE /* MigrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AB1B51285300714891 /* MigrationManager.swift */; }; B52DD1C31BE1F94600949AFE /* NotificationObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2B1AFF849C0064E85B /* NotificationObserver.swift */; }; - B52DD1C41BE1F94600949AFE /* NSFileManager+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59D5C211B5BA34B00453479 /* NSFileManager+Setup.swift */; }; B52DD1C61BE1F94600949AFE /* NSManagedObjectContext+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2C1AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift */; }; B52DD1C71BE1F94600949AFE /* NSManagedObjectContext+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F351AFF85470064E85B /* NSManagedObjectContext+Querying.swift */; }; B52DD1C81BE1F94600949AFE /* NSManagedObjectContext+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F321AFF85470064E85B /* NSManagedObjectContext+Setup.swift */; }; B52DD1C91BE1F94600949AFE /* NSManagedObjectContext+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F331AFF85470064E85B /* NSManagedObjectContext+Transaction.swift */; }; B52DD1CA1BE1F94600949AFE /* NSManagedObjectModel+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */; }; B52DD1CB1BE1F94600949AFE /* WeakObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2D1AFF849C0064E85B /* WeakObject.swift */; }; - B52DD1CC1BE1F94D00949AFE /* CoreStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F03A53F19C5C6DA005002A5 /* CoreStoreTests.swift */; }; - B52DD1CD1BE1F94D00949AFE /* TestEntity1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D372851A39CDDB00F583D9 /* TestEntity1.swift */; }; - B52DD1CE1BE1F94D00949AFE /* TestEntity2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D5E0CE1A4D6AAB006468AF /* TestEntity2.swift */; }; + B538BA761D15B3E30003A766 /* CoreStoreBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B538BA701D15B3E30003A766 /* CoreStoreBridge.m */; }; + B538BA771D15B3E30003A766 /* CoreStoreBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B538BA701D15B3E30003A766 /* CoreStoreBridge.m */; }; + B538BA781D15B3E30003A766 /* CoreStoreBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B538BA701D15B3E30003A766 /* CoreStoreBridge.m */; }; + B538BA791D15B3E30003A766 /* CoreStoreBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B538BA701D15B3E30003A766 /* CoreStoreBridge.m */; }; + B538BA7A1D15B3E30003A766 /* CoreStoreBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = B538BA701D15B3E30003A766 /* CoreStoreBridge.m */; }; + B53FB9FE1CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */; }; + B53FB9FF1CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */; }; + B53FBA001CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */; }; + B53FBA011CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */; }; + B53FBA021CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */; }; + B53FBA041CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; }; + B53FBA051CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; }; + B53FBA061CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; }; + B53FBA071CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; }; + B53FBA081CAB300C00F0D40A /* CSMigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */; }; + B53FBA0B1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; }; + B53FBA0C1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; }; + B53FBA0D1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; }; + B53FBA0E1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; }; + B53FBA0F1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */; }; + B53FBA121CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift */; }; + B53FBA131CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift */; }; + B53FBA141CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift */; }; + B53FBA151CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift */; }; + B53FBA161CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA111CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift */; }; + B53FBA181CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; }; + B53FBA191CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; }; + B53FBA1A1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; }; + B53FBA1B1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; }; + B53FBA1C1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */; }; + B53FBA1E1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA1D1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift */; }; + B53FBA1F1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA1D1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift */; }; + B53FBA201CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA1D1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift */; }; + B53FBA211CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53FBA1D1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift */; }; + B546F9581C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */; }; + B546F9591C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */; }; + B546F95A1C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */; }; + B546F95B1C99B17400D5AC55 /* CSCoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */; }; + B546F95D1C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F95C1C9A12B800D5AC55 /* CSSQliteStore.swift */; }; + B546F95E1C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F95C1C9A12B800D5AC55 /* CSSQliteStore.swift */; }; + B546F95F1C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F95C1C9A12B800D5AC55 /* CSSQliteStore.swift */; }; + B546F9601C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F95C1C9A12B800D5AC55 /* CSSQliteStore.swift */; }; + B546F9691C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9681C9AF26D00D5AC55 /* CSInMemoryStore.swift */; }; + B546F96A1C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9681C9AF26D00D5AC55 /* CSInMemoryStore.swift */; }; + B546F96B1C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9681C9AF26D00D5AC55 /* CSInMemoryStore.swift */; }; + B546F96C1C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9681C9AF26D00D5AC55 /* CSInMemoryStore.swift */; }; + B546F9731C9C553300D5AC55 /* SetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9721C9C553300D5AC55 /* SetupResult.swift */; }; + B546F9741C9C553300D5AC55 /* SetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9721C9C553300D5AC55 /* SetupResult.swift */; }; + B546F9751C9C553300D5AC55 /* SetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9721C9C553300D5AC55 /* SetupResult.swift */; }; + B546F9761C9C553300D5AC55 /* SetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9721C9C553300D5AC55 /* SetupResult.swift */; }; + B5489F3F1CF5EEBC008B4978 /* TestEntity1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F3D1CF5EEBC008B4978 /* TestEntity1.swift */; }; + B5489F401CF5EEBC008B4978 /* TestEntity1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F3D1CF5EEBC008B4978 /* TestEntity1.swift */; }; + B5489F411CF5EEBC008B4978 /* TestEntity1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F3D1CF5EEBC008B4978 /* TestEntity1.swift */; }; + B5489F421CF5EEBC008B4978 /* TestEntity2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F3E1CF5EEBC008B4978 /* TestEntity2.swift */; }; + B5489F431CF5EEBC008B4978 /* TestEntity2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F3E1CF5EEBC008B4978 /* TestEntity2.swift */; }; + B5489F441CF5EEBC008B4978 /* TestEntity2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F3E1CF5EEBC008B4978 /* TestEntity2.swift */; }; + B5489F461CF5F017008B4978 /* TransactionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F451CF5F017008B4978 /* TransactionTests.swift */; }; + B5489F471CF5F017008B4978 /* TransactionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F451CF5F017008B4978 /* TransactionTests.swift */; }; + B5489F481CF5F017008B4978 /* TransactionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F451CF5F017008B4978 /* TransactionTests.swift */; }; + B5489F4C1CF5F743008B4978 /* BaseTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F4B1CF5F743008B4978 /* BaseTestCase.swift */; }; + B5489F4D1CF5F743008B4978 /* BaseTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F4B1CF5F743008B4978 /* BaseTestCase.swift */; }; + B5489F4E1CF5F743008B4978 /* BaseTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F4B1CF5F743008B4978 /* BaseTestCase.swift */; }; + B5489F501CF603D5008B4978 /* FromTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F4F1CF603D5008B4978 /* FromTests.swift */; }; + B5489F511CF603D5008B4978 /* FromTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F4F1CF603D5008B4978 /* FromTests.swift */; }; + B5489F521CF603D5008B4978 /* FromTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5489F4F1CF603D5008B4978 /* FromTests.swift */; }; B54A6A551BA15F2A007870FD /* FetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */; }; + B5519A401CA1B17B002BEF78 /* ErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A3F1CA1B17B002BEF78 /* ErrorTests.swift */; }; + B5519A411CA1B17B002BEF78 /* ErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A3F1CA1B17B002BEF78 /* ErrorTests.swift */; }; + B5519A421CA1B17B002BEF78 /* ErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A3F1CA1B17B002BEF78 /* ErrorTests.swift */; }; + B5519A4A1CA1F4FB002BEF78 /* CSError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A491CA1F4FB002BEF78 /* CSError.swift */; }; + B5519A4B1CA1F4FB002BEF78 /* CSError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A491CA1F4FB002BEF78 /* CSError.swift */; }; + B5519A4C1CA1F4FB002BEF78 /* CSError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A491CA1F4FB002BEF78 /* CSError.swift */; }; + B5519A4D1CA1F4FB002BEF78 /* CSError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A491CA1F4FB002BEF78 /* CSError.swift */; }; + B5519A591CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A581CA2008C002BEF78 /* CSBaseDataTransaction.swift */; }; + B5519A5A1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A581CA2008C002BEF78 /* CSBaseDataTransaction.swift */; }; + B5519A5B1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A581CA2008C002BEF78 /* CSBaseDataTransaction.swift */; }; + B5519A5C1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A581CA2008C002BEF78 /* CSBaseDataTransaction.swift */; }; + B5519A5F1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A5E1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift */; }; + B5519A601CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A5E1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift */; }; + B5519A611CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A5E1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift */; }; + B5519A621CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A5E1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift */; }; + B55717431D15B09D009BDBCA /* CoreStoreBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = B55717421D15AF9C009BDBCA /* CoreStoreBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B55717441D15B09E009BDBCA /* CoreStoreBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = B55717421D15AF9C009BDBCA /* CoreStoreBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B55717451D15B09F009BDBCA /* CoreStoreBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = B55717421D15AF9C009BDBCA /* CoreStoreBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B55717461D15B0A1009BDBCA /* CoreStoreBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = B55717421D15AF9C009BDBCA /* CoreStoreBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B55717471D15B0A1009BDBCA /* CoreStoreBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = B55717421D15AF9C009BDBCA /* CoreStoreBridge.h */; settings = {ATTRIBUTES = (Public, ); }; }; B5598BCC1BE2093D0092EFCE /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B5D372821A39CD6900F583D9 /* Model.xcdatamodeld */; }; + B559CD431CAA8B6300E4D58B /* CSSetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */; }; + B559CD441CAA8B6300E4D58B /* CSSetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */; }; + B559CD451CAA8B6300E4D58B /* CSSetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */; }; + B559CD461CAA8B6300E4D58B /* CSSetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */; }; + B559CD471CAA8B6300E4D58B /* CSSetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */; }; + B559CD491CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD481CAA8C6D00E4D58B /* CSStorageInterface.swift */; }; + B559CD4A1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD481CAA8C6D00E4D58B /* CSStorageInterface.swift */; }; + B559CD4B1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD481CAA8C6D00E4D58B /* CSStorageInterface.swift */; }; + B559CD4C1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD481CAA8C6D00E4D58B /* CSStorageInterface.swift */; }; + B559CD4D1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B559CD481CAA8C6D00E4D58B /* CSStorageInterface.swift */; }; B56007111B3F6BD500A9A8F9 /* Into.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007101B3F6BD500A9A8F9 /* Into.swift */; }; B56007141B3F6C2800A9A8F9 /* SectionBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007131B3F6C2800A9A8F9 /* SectionBy.swift */; }; B56007161B4018AB00A9A8F9 /* MigrationChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56007151B4018AB00A9A8F9 /* MigrationChain.swift */; }; @@ -155,9 +311,8 @@ B563217C1BD650E3006C9394 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B563217B1BD650E3006C9394 /* Foundation.framework */; }; B563217E1BD65110006C9394 /* CoreStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F03A53519C5C6DA005002A5 /* CoreStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; B563217F1BD65216006C9394 /* CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F291E2619C6D3CF007AF63F /* CoreStore.swift */; }; - B56321801BD65216006C9394 /* NSError+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* NSError+CoreStore.swift */; }; + B56321801BD65216006C9394 /* CoreStoreError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* CoreStoreError.swift */; }; B56321811BD65216006C9394 /* DataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDB1AFF84500064E85B /* DataStack.swift */; }; - B56321821BD65216006C9394 /* PersistentStoreResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDE1AFF84500064E85B /* PersistentStoreResult.swift */; }; B56321831BD65216006C9394 /* CoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */; }; B56321841BD65216006C9394 /* DefaultLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE31AFF84610064E85B /* DefaultLogger.swift */; }; B56321851BD65216006C9394 /* CoreStore+Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE41AFF84610064E85B /* CoreStore+Logging.swift */; }; @@ -197,38 +352,82 @@ B56321A71BD65216006C9394 /* MigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56965231B356B820075EE4A /* MigrationResult.swift */; }; B56321A81BD65219006C9394 /* NSManagedObject+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F271AFF84920064E85B /* NSManagedObject+Convenience.swift */; }; B56321A91BD65219006C9394 /* NSProgress+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6A81B50A4B300714891 /* NSProgress+Convenience.swift */; }; - B56321AA1BD6521C006C9394 /* AssociatedObjects.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2A1AFF849C0064E85B /* AssociatedObjects.swift */; }; B56321AB1BD6521C006C9394 /* FetchedResultsControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */; }; B56321AC1BD6521C006C9394 /* Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E834BA1B7691F3001D3D50 /* Functions.swift */; }; B56321AD1BD6521C006C9394 /* MigrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AB1B51285300714891 /* MigrationManager.swift */; }; B56321AE1BD6521C006C9394 /* NotificationObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2B1AFF849C0064E85B /* NotificationObserver.swift */; }; - B56321AF1BD6521C006C9394 /* NSFileManager+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59D5C211B5BA34B00453479 /* NSFileManager+Setup.swift */; }; B56321B11BD6521C006C9394 /* NSManagedObjectContext+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2C1AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift */; }; B56321B21BD6521C006C9394 /* NSManagedObjectContext+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F351AFF85470064E85B /* NSManagedObjectContext+Querying.swift */; }; B56321B31BD6521C006C9394 /* NSManagedObjectContext+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F321AFF85470064E85B /* NSManagedObjectContext+Setup.swift */; }; B56321B41BD6521C006C9394 /* NSManagedObjectContext+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F331AFF85470064E85B /* NSManagedObjectContext+Transaction.swift */; }; B56321B51BD6521C006C9394 /* NSManagedObjectModel+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */; }; B56321B61BD6521C006C9394 /* WeakObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2D1AFF849C0064E85B /* WeakObject.swift */; }; + B5677D3D1CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */; }; + B5677D3E1CD3B1E400322BFC /* 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 */; }; B56964D41B22FFAD0075EE4A /* DataStack+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56964D31B22FFAD0075EE4A /* DataStack+Migration.swift */; }; B56965241B356B820075EE4A /* MigrationResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56965231B356B820075EE4A /* MigrationResult.swift */; }; - B59D5C221B5BA34B00453479 /* NSFileManager+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59D5C211B5BA34B00453479 /* NSFileManager+Setup.swift */; }; + B57D27BE1D0BBE8200539C58 /* BaseTestDataTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = B57D27BD1D0BBE8200539C58 /* BaseTestDataTestCase.swift */; }; + B57D27BF1D0BBE8200539C58 /* BaseTestDataTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = B57D27BD1D0BBE8200539C58 /* BaseTestDataTestCase.swift */; }; + B57D27C01D0BBE8200539C58 /* BaseTestDataTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = B57D27BD1D0BBE8200539C58 /* BaseTestDataTestCase.swift */; }; + B57D27C21D0BC20100539C58 /* QueryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B57D27C11D0BC20100539C58 /* QueryTests.swift */; }; + B57D27C31D0BC20100539C58 /* QueryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B57D27C11D0BC20100539C58 /* QueryTests.swift */; }; + B57D27C41D0BC20100539C58 /* QueryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B57D27C11D0BC20100539C58 /* QueryTests.swift */; }; + B580857A1CDF808C004C2EEB /* SetupTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B58085741CDF7F00004C2EEB /* SetupTests.swift */; }; + B580857B1CDF808D004C2EEB /* SetupTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B58085741CDF7F00004C2EEB /* SetupTests.swift */; }; + B580857C1CDF808F004C2EEB /* SetupTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B58085741CDF7F00004C2EEB /* SetupTests.swift */; }; + B58B22F51C93C1BA00521925 /* CoreStore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F03A53019C5C6DA005002A5 /* CoreStore.framework */; }; + B59851491C90289D00C99590 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59AFF401C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift */; }; + 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 */; }; + B59983491CA54BC100E1A417 /* CSBaseDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A581CA2008C002BEF78 /* CSBaseDataTransaction.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 */; }; + B59FA0AF1CCBACA6007C9BCA /* 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 */; }; B5A261211B64BFDB006EB6D3 /* MigrationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A261201B64BFDB006EB6D3 /* MigrationType.swift */; }; + B5A5F2661CAEC50F004AB9AF /* CSSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A5F2651CAEC50F004AB9AF /* CSSelect.swift */; }; + B5A5F2671CAEC50F004AB9AF /* CSSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A5F2651CAEC50F004AB9AF /* CSSelect.swift */; }; + B5A5F2681CAEC50F004AB9AF /* CSSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A5F2651CAEC50F004AB9AF /* CSSelect.swift */; }; + B5A5F2691CAEC50F004AB9AF /* CSSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A5F2651CAEC50F004AB9AF /* CSSelect.swift */; }; + B5A5F26A1CAEC50F004AB9AF /* CSSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A5F2651CAEC50F004AB9AF /* CSSelect.swift */; }; + B5AEFAB51C9962AE00AD137F /* CoreStoreBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5AEFAB41C9962AE00AD137F /* CoreStoreBridge.swift */; }; + B5AEFAB61C9962AE00AD137F /* CoreStoreBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5AEFAB41C9962AE00AD137F /* CoreStoreBridge.swift */; }; + B5AEFAB71C9962AE00AD137F /* CoreStoreBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5AEFAB41C9962AE00AD137F /* CoreStoreBridge.swift */; }; + B5AEFAB81C9962AE00AD137F /* CoreStoreBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5AEFAB41C9962AE00AD137F /* CoreStoreBridge.swift */; }; B5C976E31C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */; }; B5C976E41C6C9F9A00B1AF90 /* UnsafeDataTransaction+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */; }; B5C976E51C6C9F9B00B1AF90 /* UnsafeDataTransaction+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E21C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift */; }; B5C976E71C6E3A5A00B1AF90 /* CoreStoreFetchedResultsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E61C6E3A5900B1AF90 /* CoreStoreFetchedResultsController.swift */; }; B5C976E81C6E3A5D00B1AF90 /* CoreStoreFetchedResultsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E61C6E3A5900B1AF90 /* CoreStoreFetchedResultsController.swift */; }; B5C976E91C6E3A5E00B1AF90 /* CoreStoreFetchedResultsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C976E61C6E3A5900B1AF90 /* CoreStoreFetchedResultsController.swift */; }; - B5D1E22C19FA9FBC003B2874 /* NSError+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* NSError+CoreStore.swift */; }; + B5D1E22C19FA9FBC003B2874 /* CoreStoreError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* CoreStoreError.swift */; }; B5D372841A39CD6900F583D9 /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B5D372821A39CD6900F583D9 /* Model.xcdatamodeld */; }; - 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 */; }; + 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 */; }; + B5D7A5AF1CA3B738005C752B /* (null) in Sources */ = {isa = PBXBuildFile; }; + B5D7A5B01CA3B738005C752B /* StorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */; }; + B5D7A5B11CA3B738005C752B /* InMemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA61C84FB4400FA6A91 /* InMemoryStore.swift */; }; + B5D7A5B21CA3B738005C752B /* SQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DAB1C85D44E00FA6A91 /* SQLiteStore.swift */; }; + B5D7A5B31CA3B738005C752B /* LegacySQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */; }; + B5D7A5B41CA3BAE7005C752B /* NSPersistentStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FEC18D1C9166E200532541 /* NSPersistentStore+Setup.swift */; }; + B5D7A5B61CA3BF8F005C752B /* CSInto.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D7A5B51CA3BF8F005C752B /* CSInto.swift */; }; + B5D7A5B71CA3BF8F005C752B /* 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 */; }; + B5D7A5BA1CA3BF8F005C752B /* CSInto.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D7A5B51CA3BF8F005C752B /* CSInto.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 */; }; + B5D9E2F31CA2C317007A9D52 /* CoreStoreError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D1E22B19FA9FBC003B2874 /* CoreStoreError.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 */; }; @@ -246,7 +445,7 @@ 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 */; }; + B5D9E3051CA2C317007A9D52 /* (null) in Sources */ = {isa = PBXBuildFile; }; 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 */; }; @@ -264,7 +463,6 @@ 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 */; }; @@ -282,7 +480,6 @@ 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, ); }; }; @@ -291,15 +488,57 @@ 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 */; }; - B5D9E3501CA2D0D7007A9D52 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E34F1CA2D0D7007A9D52 /* NSPersistentStoreCoordinator+Setup.swift */; }; - B5D9E3511CA2D0DD007A9D52 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E34F1CA2D0D7007A9D52 /* NSPersistentStoreCoordinator+Setup.swift */; }; - B5D9E3521CA2D0DE007A9D52 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E34F1CA2D0D7007A9D52 /* NSPersistentStoreCoordinator+Setup.swift */; }; - B5D9E3531CA2D0DE007A9D52 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E34F1CA2D0D7007A9D52 /* NSPersistentStoreCoordinator+Setup.swift */; }; - B5D9E3541CA2D0DF007A9D52 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5D9E34F1CA2D0D7007A9D52 /* NSPersistentStoreCoordinator+Setup.swift */; }; + B5DBE2CD1C9914A900B5CEFA /* CSCoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2CC1C9914A900B5CEFA /* CSCoreStore.swift */; }; + B5DBE2CE1C9914A900B5CEFA /* CSCoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2CC1C9914A900B5CEFA /* CSCoreStore.swift */; }; + B5DBE2CF1C9914A900B5CEFA /* CSCoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2CC1C9914A900B5CEFA /* CSCoreStore.swift */; }; + B5DBE2D01C9914A900B5CEFA /* CSCoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2CC1C9914A900B5CEFA /* CSCoreStore.swift */; }; + B5DBE2D21C991B3E00B5CEFA /* CSDataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2D11C991B3E00B5CEFA /* CSDataStack.swift */; }; + B5DBE2D31C991B3E00B5CEFA /* CSDataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2D11C991B3E00B5CEFA /* CSDataStack.swift */; }; + B5DBE2D41C991B3E00B5CEFA /* CSDataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2D11C991B3E00B5CEFA /* CSDataStack.swift */; }; + B5DBE2D51C991B3E00B5CEFA /* CSDataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2D11C991B3E00B5CEFA /* CSDataStack.swift */; }; + B5DBE2DF1C9939E100B5CEFA /* BridgingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2DE1C9939E100B5CEFA /* BridgingTests.m */; }; + B5DBE2E01C9939E100B5CEFA /* BridgingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2DE1C9939E100B5CEFA /* BridgingTests.m */; }; + B5DBE2E11C9939E100B5CEFA /* BridgingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2DE1C9939E100B5CEFA /* BridgingTests.m */; }; + B5DC47C61C93D22900FA3BF3 /* MigrationChainTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DC47C51C93D22900FA3BF3 /* MigrationChainTests.swift */; }; + B5DC47C71C93D22900FA3BF3 /* MigrationChainTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DC47C51C93D22900FA3BF3 /* MigrationChainTests.swift */; }; + B5DC47C81C93D22900FA3BF3 /* MigrationChainTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DC47C51C93D22900FA3BF3 /* MigrationChainTests.swift */; }; + B5DC47CA1C93D9C800FA3BF3 /* StorageInterfaceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DC47C91C93D9C800FA3BF3 /* StorageInterfaceTests.swift */; }; + B5DC47CB1C93D9C800FA3BF3 /* StorageInterfaceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DC47C91C93D9C800FA3BF3 /* StorageInterfaceTests.swift */; }; + B5DC47CC1C93D9C800FA3BF3 /* StorageInterfaceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DC47C91C93D9C800FA3BF3 /* StorageInterfaceTests.swift */; }; + B5E1B5931CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */; }; + B5E1B5941CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */; }; + B5E1B5951CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */; }; + B5E1B5961CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */; }; + B5E1B5981CAA0C23007FD580 /* CSObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5971CAA0C23007FD580 /* CSObjectObserver.swift */; }; + B5E1B5991CAA0C23007FD580 /* CSObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5971CAA0C23007FD580 /* CSObjectObserver.swift */; }; + B5E1B59A1CAA0C23007FD580 /* CSObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5971CAA0C23007FD580 /* CSObjectObserver.swift */; }; + B5E1B59B1CAA0C23007FD580 /* CSObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5971CAA0C23007FD580 /* CSObjectObserver.swift */; }; + B5E1B59D1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; }; + B5E1B59E1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; }; + B5E1B59F1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; }; + B5E1B5A01CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */; }; + B5E1B5A21CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; }; + B5E1B5A31CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; }; + B5E1B5A41CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; }; + B5E1B5A51CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */; }; + B5E1B5A81CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; }; + B5E1B5A91CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; }; + B5E1B5AA1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; }; + B5E1B5AB1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; }; + B5E1B5AC1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */; }; + B5E222231CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */; }; + B5E222241CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */; }; + B5E222251CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */; }; + B5E222261CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */; }; + B5E222271CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */; }; + B5E2222A1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */; }; + B5E2222B1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */; }; + B5E2222C1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */; }; + B5E2222D1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */; }; + B5E2222E1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.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 */; }; - B5E84EE11AFF84500064E85B /* PersistentStoreResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EDE1AFF84500064E85B /* PersistentStoreResult.swift */; }; B5E84EE61AFF84610064E85B /* DefaultLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE31AFF84610064E85B /* DefaultLogger.swift */; }; B5E84EE71AFF84610064E85B /* CoreStore+Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE41AFF84610064E85B /* CoreStore+Logging.swift */; }; B5E84EE81AFF84610064E85B /* CoreStoreLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84EE51AFF84610064E85B /* CoreStoreLogger.swift */; }; @@ -326,7 +565,6 @@ B5E84F241AFF84860064E85B /* ListObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1E1AFF84860064E85B /* ListObserver.swift */; }; B5E84F251AFF84860064E85B /* ObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F1F1AFF84860064E85B /* ObjectObserver.swift */; }; B5E84F281AFF84920064E85B /* NSManagedObject+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F271AFF84920064E85B /* NSManagedObject+Convenience.swift */; }; - B5E84F2E1AFF849C0064E85B /* AssociatedObjects.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2A1AFF849C0064E85B /* AssociatedObjects.swift */; }; B5E84F2F1AFF849C0064E85B /* NotificationObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2B1AFF849C0064E85B /* NotificationObserver.swift */; }; B5E84F301AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2C1AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift */; }; B5E84F311AFF849C0064E85B /* WeakObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F2D1AFF849C0064E85B /* WeakObject.swift */; }; @@ -334,11 +572,97 @@ B5E84F371AFF85470064E85B /* NSManagedObjectContext+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F331AFF85470064E85B /* NSManagedObjectContext+Transaction.swift */; }; B5E84F391AFF85470064E85B /* NSManagedObjectContext+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F351AFF85470064E85B /* NSManagedObjectContext+Querying.swift */; }; B5E84F411AFF8CCD0064E85B /* ClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E84F401AFF8CCD0064E85B /* ClauseTypes.swift */; }; + B5EA11DD1CA3AFD9002282F8 /* NSPersistentStoreCoordinator+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59AFF401C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift */; }; + B5ECDBDF1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */; }; + B5ECDBE01CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */; }; + B5ECDBE11CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */; }; + B5ECDBE21CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */; }; + B5ECDBE31CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */; }; + B5ECDBE51CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBE41CA6BEA300C7F112 /* CSClauseTypes.swift */; }; + B5ECDBE61CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBE41CA6BEA300C7F112 /* CSClauseTypes.swift */; }; + B5ECDBE71CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBE41CA6BEA300C7F112 /* CSClauseTypes.swift */; }; + B5ECDBE81CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBE41CA6BEA300C7F112 /* CSClauseTypes.swift */; }; + B5ECDBE91CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBE41CA6BEA300C7F112 /* CSClauseTypes.swift */; }; + B5ECDBEC1CA6BF2000C7F112 /* CSFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBEB1CA6BF2000C7F112 /* CSFrom.swift */; }; + B5ECDBED1CA6BF2000C7F112 /* CSFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBEB1CA6BF2000C7F112 /* CSFrom.swift */; }; + B5ECDBEE1CA6BF2000C7F112 /* CSFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBEB1CA6BF2000C7F112 /* CSFrom.swift */; }; + B5ECDBEF1CA6BF2000C7F112 /* CSFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBEB1CA6BF2000C7F112 /* CSFrom.swift */; }; + B5ECDBF01CA6BF2000C7F112 /* CSFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBEB1CA6BF2000C7F112 /* CSFrom.swift */; }; + B5ECDBF91CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBF81CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift */; }; + B5ECDBFA1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBF81CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift */; }; + B5ECDBFB1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBF81CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift */; }; + B5ECDBFC1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBF81CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift */; }; + B5ECDBFD1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBF81CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift */; }; + B5ECDBFF1CA80CBA00C7F112 /* CSWhere.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBFE1CA80CBA00C7F112 /* CSWhere.swift */; }; + B5ECDC001CA80CBA00C7F112 /* CSWhere.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBFE1CA80CBA00C7F112 /* CSWhere.swift */; }; + B5ECDC011CA80CBA00C7F112 /* CSWhere.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBFE1CA80CBA00C7F112 /* CSWhere.swift */; }; + B5ECDC021CA80CBA00C7F112 /* CSWhere.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBFE1CA80CBA00C7F112 /* CSWhere.swift */; }; + B5ECDC031CA80CBA00C7F112 /* CSWhere.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDBFE1CA80CBA00C7F112 /* CSWhere.swift */; }; + B5ECDC051CA8138100C7F112 /* CSOrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC041CA8138100C7F112 /* CSOrderBy.swift */; }; + B5ECDC061CA8138100C7F112 /* CSOrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC041CA8138100C7F112 /* CSOrderBy.swift */; }; + B5ECDC071CA8138100C7F112 /* CSOrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC041CA8138100C7F112 /* CSOrderBy.swift */; }; + B5ECDC081CA8138100C7F112 /* CSOrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC041CA8138100C7F112 /* CSOrderBy.swift */; }; + B5ECDC091CA8138100C7F112 /* CSOrderBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC041CA8138100C7F112 /* CSOrderBy.swift */; }; + B5ECDC0B1CA8161B00C7F112 /* CSGroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */; }; + B5ECDC0C1CA8161B00C7F112 /* CSGroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */; }; + B5ECDC0D1CA8161B00C7F112 /* CSGroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */; }; + B5ECDC0E1CA8161B00C7F112 /* CSGroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */; }; + B5ECDC0F1CA8161B00C7F112 /* CSGroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */; }; + B5ECDC111CA816E500C7F112 /* CSTweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC101CA816E500C7F112 /* CSTweak.swift */; }; + B5ECDC121CA816E500C7F112 /* CSTweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC101CA816E500C7F112 /* CSTweak.swift */; }; + B5ECDC131CA816E500C7F112 /* CSTweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC101CA816E500C7F112 /* CSTweak.swift */; }; + B5ECDC141CA816E500C7F112 /* CSTweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC101CA816E500C7F112 /* CSTweak.swift */; }; + B5ECDC151CA816E500C7F112 /* CSTweak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC101CA816E500C7F112 /* CSTweak.swift */; }; + B5ECDC1D1CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; }; + B5ECDC1E1CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; }; + B5ECDC1F1CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; }; + B5ECDC201CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; }; + B5ECDC211CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */; }; + B5ECDC231CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; }; + B5ECDC241CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; }; + B5ECDC251CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; }; + B5ECDC261CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; }; + B5ECDC271CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */; }; + B5ECDC291CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; }; + B5ECDC2A1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; }; + B5ECDC2B1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; }; + B5ECDC2C1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; }; + B5ECDC2D1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */; }; + B5ECDC2F1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; }; + B5ECDC301CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; }; + B5ECDC311CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; }; + B5ECDC321CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; }; + B5ECDC331CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */; }; + B5ECDC3A1CA8369400C7F112 /* CSDataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2D11C991B3E00B5CEFA /* CSDataStack.swift */; }; + B5ECDC3B1CA836AD00C7F112 /* CoreStoreBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5AEFAB41C9962AE00AD137F /* CoreStoreBridge.swift */; }; + B5ECDC3C1CA836B600C7F112 /* CSCoreStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBE2CC1C9914A900B5CEFA /* CSCoreStore.swift */; }; + B5ECDC3D1CA836BA00C7F112 /* CSError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A491CA1F4FB002BEF78 /* CSError.swift */; }; + B5ECDC3E1CA836BE00C7F112 /* CSCoreStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */; }; + B5ECDC401CA836C800C7F112 /* CSInMemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9681C9AF26D00D5AC55 /* CSInMemoryStore.swift */; }; + B5ECDC411CA836C800C7F112 /* CSSQliteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F95C1C9A12B800D5AC55 /* CSSQliteStore.swift */; }; + B5ECDC421CA836CF00C7F112 /* CSAsynchronousDataTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5519A5E1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift */; }; + B5ECDC431CA836F800C7F112 /* SetupResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B546F9721C9C553300D5AC55 /* SetupResult.swift */; }; B5F1DA8D1B9AA97D007C5CBB /* ImportableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */; }; B5F1DA901B9AA991007C5CBB /* ImportableUniqueObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */; }; B5FAD6A91B50A4B400714891 /* NSProgress+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6A81B50A4B300714891 /* NSProgress+Convenience.swift */; }; B5FAD6AC1B51285300714891 /* MigrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AB1B51285300714891 /* MigrationManager.swift */; }; B5FAD6AE1B518DCB00714891 /* CoreStore+Migration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */; }; + B5FE4DA21C8481E100FA6A91 /* StorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */; }; + B5FE4DA31C8481E100FA6A91 /* StorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */; }; + B5FE4DA41C8481E100FA6A91 /* StorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */; }; + B5FE4DA51C8481E100FA6A91 /* StorageInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */; }; + B5FE4DA71C84FB4400FA6A91 /* InMemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA61C84FB4400FA6A91 /* InMemoryStore.swift */; }; + B5FE4DA81C84FB4400FA6A91 /* InMemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA61C84FB4400FA6A91 /* InMemoryStore.swift */; }; + B5FE4DA91C84FB4400FA6A91 /* InMemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA61C84FB4400FA6A91 /* InMemoryStore.swift */; }; + B5FE4DAA1C84FB4400FA6A91 /* InMemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DA61C84FB4400FA6A91 /* InMemoryStore.swift */; }; + B5FE4DAC1C85D44E00FA6A91 /* SQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DAB1C85D44E00FA6A91 /* SQLiteStore.swift */; }; + B5FE4DAD1C85D44E00FA6A91 /* SQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DAB1C85D44E00FA6A91 /* SQLiteStore.swift */; }; + B5FE4DAE1C85D44E00FA6A91 /* SQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DAB1C85D44E00FA6A91 /* SQLiteStore.swift */; }; + B5FE4DAF1C85D44E00FA6A91 /* SQLiteStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FE4DAB1C85D44E00FA6A91 /* SQLiteStore.swift */; }; + B5FEC18E1C9166E200532541 /* NSPersistentStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FEC18D1C9166E200532541 /* NSPersistentStore+Setup.swift */; }; + B5FEC18F1C9166E600532541 /* NSPersistentStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FEC18D1C9166E200532541 /* NSPersistentStore+Setup.swift */; }; + B5FEC1901C9166E700532541 /* NSPersistentStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FEC18D1C9166E200532541 /* NSPersistentStore+Setup.swift */; }; + B5FEC1911C9166E700532541 /* NSPersistentStore+Setup.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5FEC18D1C9166E200532541 /* NSPersistentStore+Setup.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -371,43 +695,89 @@ 2F03A53519C5C6DA005002A5 /* CoreStore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreStore.h; sourceTree = ""; }; 2F03A53B19C5C6DA005002A5 /* CoreStoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreStoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 2F03A53E19C5C6DA005002A5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 2F03A53F19C5C6DA005002A5 /* CoreStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = CoreStoreTests.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 2F03A54C19C5C872005002A5 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 2F291E2619C6D3CF007AF63F /* CoreStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = CoreStore.swift; sourceTree = ""; }; 82BA18891C4BBCBA00A0916E /* CoreStore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreStore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 82BA18921C4BBCBA00A0916E /* CoreStoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreStoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 82BA18DE1C4BBE2600A0916E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.1.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 82BA18E01C4BBE2C00A0916E /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.1.sdk/System/Library/Frameworks/CoreData.framework; sourceTree = DEVELOPER_DIR; }; + B501FDDC1CA8D05000BE22EF /* CSSectionBy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSSectionBy.swift; sourceTree = ""; }; + B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSListMonitor.swift; sourceTree = ""; }; + B501FDE61CA8D20500BE22EF /* CSListObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSListObserver.swift; sourceTree = ""; }; B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Transaction.swift"; sourceTree = ""; }; B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+Setup.swift"; sourceTree = ""; }; B519E4571C4CD2CA00E7B469 /* GCDKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GCDKit.framework; path = "../../Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphoneos/GCDKit.framework"; sourceTree = ""; }; B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectModel+Setup.swift"; sourceTree = ""; }; + B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+CustomDebugStringConvertible.swift"; sourceTree = ""; }; B5202CF91C04688100DED140 /* NSFetchedResultsController+Convenience.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSFetchedResultsController+Convenience.swift"; sourceTree = ""; }; + B5220E071D0C5F8D009BC71E /* ObjectObserverTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObjectObserverTests.swift; sourceTree = ""; }; + B5220E0B1D0D0D19009BC71E /* ImportTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportTests.swift; sourceTree = ""; }; + B5220E0F1D0DA6AB009BC71E /* ListObserverTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListObserverTests.swift; sourceTree = ""; }; + B525576B1CFAF18F00E51965 /* IntoTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IntoTests.swift; sourceTree = ""; }; + B525576F1D02561A00E51965 /* SelectTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectTests.swift; sourceTree = ""; }; + B52557731D02791400E51965 /* WhereTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WhereTests.swift; sourceTree = ""; }; + B52557771D02826E00E51965 /* OrderByTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OrderByTests.swift; sourceTree = ""; }; + B525577B1D0291FE00E51965 /* GroupByTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GroupByTests.swift; sourceTree = ""; }; + 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 = ""; }; B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreStoreFetchRequest.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; }; + B538BA701D15B3E30003A766 /* CoreStoreBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CoreStoreBridge.m; sourceTree = ""; }; + B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSMigrationResult.swift; sourceTree = ""; }; + B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSMigrationType.swift; sourceTree = ""; }; + B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSCoreStore+Migrating.swift"; sourceTree = ""; }; + B53FBA111CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSProgress+ObjectiveC.swift"; sourceTree = ""; }; + B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+ObjectiveC.swift"; sourceTree = ""; }; + B53FBA1D1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSFetchedResultsController+ObjectiveC.swift"; sourceTree = ""; }; + B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSCoreStore+Setup.swift"; sourceTree = ""; }; + B546F95C1C9A12B800D5AC55 /* CSSQliteStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSSQliteStore.swift; sourceTree = ""; }; + B546F9681C9AF26D00D5AC55 /* CSInMemoryStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSInMemoryStore.swift; sourceTree = ""; }; + B546F9721C9C553300D5AC55 /* SetupResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupResult.swift; sourceTree = ""; }; + B5489F3D1CF5EEBC008B4978 /* TestEntity1.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestEntity1.swift; sourceTree = ""; }; + B5489F3E1CF5EEBC008B4978 /* TestEntity2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestEntity2.swift; sourceTree = ""; }; + B5489F451CF5F017008B4978 /* TransactionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransactionTests.swift; sourceTree = ""; }; + B5489F4B1CF5F743008B4978 /* BaseTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseTestCase.swift; sourceTree = ""; }; + B5489F4F1CF603D5008B4978 /* FromTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FromTests.swift; sourceTree = ""; }; B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchedResultsControllerDelegate.swift; sourceTree = ""; }; + B5519A3F1CA1B17B002BEF78 /* ErrorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ErrorTests.swift; sourceTree = ""; }; + B5519A491CA1F4FB002BEF78 /* CSError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSError.swift; sourceTree = ""; }; + B5519A581CA2008C002BEF78 /* CSBaseDataTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSBaseDataTransaction.swift; sourceTree = ""; }; + B5519A5E1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSAsynchronousDataTransaction.swift; sourceTree = ""; }; B5548CD51BD65AE00077652A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; B5548CD71BD65AE50077652A /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/CoreData.framework; sourceTree = DEVELOPER_DIR; }; + B55717421D15AF9C009BDBCA /* CoreStoreBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreStoreBridge.h; sourceTree = ""; }; + B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSSetupResult.swift; sourceTree = ""; }; + B559CD481CAA8C6D00E4D58B /* CSStorageInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSStorageInterface.swift; sourceTree = ""; }; B56007101B3F6BD500A9A8F9 /* Into.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Into.swift; sourceTree = ""; }; B56007131B3F6C2800A9A8F9 /* SectionBy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SectionBy.swift; sourceTree = ""; }; B56007151B4018AB00A9A8F9 /* MigrationChain.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MigrationChain.swift; sourceTree = ""; }; B563216F1BD65082006C9394 /* CoreStore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreStore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B56321791BD650DE006C9394 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS2.0.sdk/System/Library/Frameworks/CoreData.framework; sourceTree = DEVELOPER_DIR; }; B563217B1BD650E3006C9394 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS2.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ICloudStoreObserver.swift; sourceTree = ""; }; B56964D31B22FFAD0075EE4A /* DataStack+Migration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DataStack+Migration.swift"; sourceTree = ""; }; 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 = ""; }; + B57D27BD1D0BBE8200539C58 /* BaseTestDataTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseTestDataTestCase.swift; sourceTree = ""; }; + B57D27C11D0BC20100539C58 /* QueryTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QueryTests.swift; sourceTree = ""; }; + B58085741CDF7F00004C2EEB /* SetupTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupTests.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 = ""; }; 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 = ""; }; + B5AD60CD1C90141E00F2B2E8 /* Package.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = SOURCE_ROOT; }; + B5AEFAB41C9962AE00AD137F /* CoreStoreBridge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreStoreBridge.swift; 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 = ""; }; - B5D1E22B19FA9FBC003B2874 /* NSError+CoreStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSError+CoreStore.swift"; sourceTree = ""; }; + B5D1E22B19FA9FBC003B2874 /* CoreStoreError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreStoreError.swift; sourceTree = ""; }; B5D372831A39CD6900F583D9 /* Model.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Model.xcdatamodel; sourceTree = ""; }; - B5D372851A39CDDB00F583D9 /* TestEntity1.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestEntity1.swift; sourceTree = ""; }; 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 = ""; }; + 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; }; B5D9E3341CA2C317007A9D52 /* CoreStore_iOS7.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreStore_iOS7.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 = ""; }; @@ -415,13 +785,25 @@ 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 = ""; }; - B5D9E34F1CA2D0D7007A9D52 /* NSPersistentStoreCoordinator+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSPersistentStoreCoordinator+Setup.swift"; sourceTree = ""; }; + B5DBE2CC1C9914A900B5CEFA /* CSCoreStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSCoreStore.swift; sourceTree = ""; }; + B5DBE2D11C991B3E00B5CEFA /* CSDataStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSDataStack.swift; sourceTree = ""; }; + B5DBE2DA1C9939E100B5CEFA /* CoreStoreTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CoreStoreTests-Bridging-Header.h"; sourceTree = ""; }; + B5DBE2DD1C9939E100B5CEFA /* BridgingTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BridgingTests.h; sourceTree = ""; }; + B5DBE2DE1C9939E100B5CEFA /* BridgingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BridgingTests.m; sourceTree = ""; }; + B5DC47C51C93D22900FA3BF3 /* MigrationChainTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MigrationChainTests.swift; sourceTree = ""; }; + B5DC47C91C93D9C800FA3BF3 /* StorageInterfaceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StorageInterfaceTests.swift; sourceTree = ""; }; + B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSObjectMonitor.swift; sourceTree = ""; }; + B5E1B5971CAA0C23007FD580 /* CSObjectObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSObjectObserver.swift; sourceTree = ""; }; + B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSDataStack+Observing.swift"; sourceTree = ""; }; + B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSCoreStore+Observing.swift"; sourceTree = ""; }; + B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSDataStack+Migrating.swift"; sourceTree = ""; }; + B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSSynchronousDataTransaction.swift; sourceTree = ""; }; + B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSUnsafeDataTransaction.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; }; B5E84ED91AFF82360064E85B /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = SOURCE_ROOT; }; B5E84EDB1AFF84500064E85B /* DataStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataStack.swift; sourceTree = ""; }; - B5E84EDE1AFF84500064E85B /* PersistentStoreResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PersistentStoreResult.swift; sourceTree = ""; }; B5E84EE31AFF84610064E85B /* DefaultLogger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultLogger.swift; sourceTree = ""; }; B5E84EE41AFF84610064E85B /* CoreStore+Logging.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+Logging.swift"; sourceTree = ""; }; B5E84EE51AFF84610064E85B /* CoreStoreLogger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreStoreLogger.swift; sourceTree = ""; }; @@ -448,7 +830,6 @@ B5E84F1E1AFF84860064E85B /* ListObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListObserver.swift; sourceTree = ""; }; B5E84F1F1AFF84860064E85B /* ObjectObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObjectObserver.swift; sourceTree = ""; }; B5E84F271AFF84920064E85B /* NSManagedObject+Convenience.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Convenience.swift"; sourceTree = ""; }; - B5E84F2A1AFF849C0064E85B /* AssociatedObjects.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AssociatedObjects.swift; sourceTree = ""; }; B5E84F2B1AFF849C0064E85B /* NotificationObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationObserver.swift; sourceTree = ""; }; B5E84F2C1AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+CoreStore.swift"; sourceTree = ""; }; B5E84F2D1AFF849C0064E85B /* WeakObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WeakObject.swift; sourceTree = ""; }; @@ -456,11 +837,27 @@ B5E84F331AFF85470064E85B /* NSManagedObjectContext+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+Transaction.swift"; sourceTree = ""; }; B5E84F351AFF85470064E85B /* NSManagedObjectContext+Querying.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+Querying.swift"; sourceTree = ""; }; B5E84F401AFF8CCD0064E85B /* ClauseTypes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClauseTypes.swift; sourceTree = ""; }; + B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSBaseDataTransaction+Querying.swift"; sourceTree = ""; }; + B5ECDBE41CA6BEA300C7F112 /* CSClauseTypes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSClauseTypes.swift; sourceTree = ""; }; + B5ECDBEB1CA6BF2000C7F112 /* CSFrom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSFrom.swift; sourceTree = ""; }; + B5ECDBF81CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+ObjectiveC.swift"; sourceTree = ""; }; + B5ECDBFE1CA80CBA00C7F112 /* CSWhere.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSWhere.swift; sourceTree = ""; }; + B5ECDC041CA8138100C7F112 /* CSOrderBy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSOrderBy.swift; sourceTree = ""; }; + B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSGroupBy.swift; sourceTree = ""; }; + B5ECDC101CA816E500C7F112 /* CSTweak.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CSTweak.swift; sourceTree = ""; }; + B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSDataStack+Querying.swift"; sourceTree = ""; }; + B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSCoreStore+Querying.swift"; sourceTree = ""; }; + B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSDataStack+Transaction.swift"; sourceTree = ""; }; + B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CSCoreStore+Transaction.swift"; sourceTree = ""; }; B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportableObject.swift; sourceTree = ""; }; B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportableUniqueObject.swift; sourceTree = ""; }; B5FAD6A81B50A4B300714891 /* NSProgress+Convenience.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSProgress+Convenience.swift"; sourceTree = ""; }; B5FAD6AB1B51285300714891 /* MigrationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MigrationManager.swift; sourceTree = ""; }; B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CoreStore+Migration.swift"; sourceTree = ""; }; + B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StorageInterface.swift; sourceTree = ""; }; + B5FE4DA61C84FB4400FA6A91 /* InMemoryStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InMemoryStore.swift; sourceTree = ""; }; + B5FE4DAB1C85D44E00FA6A91 /* SQLiteStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SQLiteStore.swift; sourceTree = ""; }; + B5FEC18D1C9166E200532541 /* NSPersistentStore+Setup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSPersistentStore+Setup.swift"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -478,6 +875,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B58B22F51C93C1BA00521925 /* CoreStore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -543,7 +941,7 @@ isa = PBXGroup; children = ( 2F291E3119C6D4D3007AF63F /* Frameworks */, - 2F03A53219C5C6DA005002A5 /* CoreStore */, + 2F03A53219C5C6DA005002A5 /* Sources */, 2F03A53C19C5C6DA005002A5 /* CoreStoreTests */, 2F03A53119C5C6DA005002A5 /* Products */, ); @@ -564,24 +962,15 @@ name = Products; sourceTree = ""; }; - 2F03A53219C5C6DA005002A5 /* CoreStore */ = { + 2F03A53219C5C6DA005002A5 /* Sources */ = { isa = PBXGroup; children = ( 2F03A53519C5C6DA005002A5 /* CoreStore.h */, - 2F291E2619C6D3CF007AF63F /* CoreStore.swift */, - B5D1E22B19FA9FBC003B2874 /* NSError+CoreStore.swift */, - B5E84EDA1AFF84500064E85B /* Setting Up */, - B5E84EE21AFF84610064E85B /* Logging */, - B5E84EE91AFF846E0064E85B /* Saving and Processing */, - B5E834B61B7630BD001D3D50 /* Importing Data */, - B5E84EFD1AFF847B0064E85B /* Fetching and Querying */, - B5E84F191AFF84860064E85B /* Observing */, - B56964D11B22FF700075EE4A /* Migrating */, - B5E84F261AFF84920064E85B /* Convenience Helpers */, - B5E84F291AFF849C0064E85B /* Internal */, + B5A5F26B1CAFF8D0004AB9AF /* Swift */, + B5DBE2CB1C99148100B5CEFA /* ObjectiveC */, 2F03A53319C5C6DA005002A5 /* Supporting Files */, ); - path = CoreStore; + path = Sources; sourceTree = ""; }; 2F03A53319C5C6DA005002A5 /* Supporting Files */ = { @@ -593,6 +982,7 @@ B5D9C8F61B160ED200E64F0E /* CoreStore.podspec */, B5BDC91A1C202269008147CD /* Cartfile */, B5BDC9271C2024F2008147CD /* .travis.yml */, + B5AD60CD1C90141E00F2B2E8 /* Package.swift */, ); name = "Supporting Files"; sourceTree = ""; @@ -600,10 +990,29 @@ 2F03A53C19C5C6DA005002A5 /* CoreStoreTests */ = { isa = PBXGroup; children = ( - 2F03A53F19C5C6DA005002A5 /* CoreStoreTests.swift */, - B5D372851A39CDDB00F583D9 /* TestEntity1.swift */, - B5D5E0CE1A4D6AAB006468AF /* TestEntity2.swift */, + B5489F4A1CF5F743008B4978 /* BaseTests */, + B5DBE2DD1C9939E100B5CEFA /* BridgingTests.h */, + B5DBE2DE1C9939E100B5CEFA /* BridgingTests.m */, + B5519A3F1CA1B17B002BEF78 /* ErrorTests.swift */, + B52557871D02DE8100E51965 /* FetchTests.swift */, + B5489F4F1CF603D5008B4978 /* FromTests.swift */, + B525577B1D0291FE00E51965 /* GroupByTests.swift */, + B5220E0B1D0D0D19009BC71E /* ImportTests.swift */, + B525576B1CFAF18F00E51965 /* IntoTests.swift */, + B5220E0F1D0DA6AB009BC71E /* ListObserverTests.swift */, + B5DC47C51C93D22900FA3BF3 /* MigrationChainTests.swift */, + B5220E071D0C5F8D009BC71E /* ObjectObserverTests.swift */, + B52557771D02826E00E51965 /* OrderByTests.swift */, + B57D27C11D0BC20100539C58 /* QueryTests.swift */, + B52557831D02A07400E51965 /* SectionByTests.swift */, + B525576F1D02561A00E51965 /* SelectTests.swift */, + B58085741CDF7F00004C2EEB /* SetupTests.swift */, + B5DC47C91C93D9C800FA3BF3 /* StorageInterfaceTests.swift */, 2F03A53D19C5C6DA005002A5 /* Supporting Files */, + B5489F3C1CF5EEBC008B4978 /* TestEntities */, + B5489F451CF5F017008B4978 /* TransactionTests.swift */, + B525577F1D029D2500E51965 /* TweakTests.swift */, + B52557731D02791400E51965 /* WhereTests.swift */, ); path = CoreStoreTests; sourceTree = ""; @@ -613,6 +1022,7 @@ children = ( B5D372821A39CD6900F583D9 /* Model.xcdatamodeld */, 2F03A53E19C5C6DA005002A5 /* Info.plist */, + B5DBE2DA1C9939E100B5CEFA /* CoreStoreTests-Bridging-Header.h */, ); name = "Supporting Files"; sourceTree = ""; @@ -634,11 +1044,89 @@ name = Frameworks; sourceTree = ""; }; + B501FDDB1CA8D03600BE22EF /* Observing */ = { + isa = PBXGroup; + children = ( + B501FDDC1CA8D05000BE22EF /* CSSectionBy.swift */, + B5E1B59C1CAA2568007FD580 /* CSDataStack+Observing.swift */, + B5E1B5A11CAA4365007FD580 /* CSCoreStore+Observing.swift */, + B501FDE11CA8D1F500BE22EF /* CSListMonitor.swift */, + B501FDE61CA8D20500BE22EF /* CSListObserver.swift */, + B5E1B5921CAA0C15007FD580 /* CSObjectMonitor.swift */, + B5E1B5971CAA0C23007FD580 /* CSObjectObserver.swift */, + ); + name = Observing; + sourceTree = ""; + }; + B53FBA101CAB607000F0D40A /* Convenience */ = { + isa = PBXGroup; + children = ( + B53FBA171CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift */, + B53FBA111CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift */, + B53FBA1D1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift */, + ); + name = Convenience; + sourceTree = ""; + }; + B546F9611C9A13F400D5AC55 /* Setup */ = { + isa = PBXGroup; + children = ( + B546F9571C99B17400D5AC55 /* CSCoreStore+Setup.swift */, + B5DBE2D11C991B3E00B5CEFA /* CSDataStack.swift */, + B546F9621C9A140E00D5AC55 /* StorageInterfaces */, + ); + name = Setup; + sourceTree = ""; + }; + B546F9621C9A140E00D5AC55 /* StorageInterfaces */ = { + isa = PBXGroup; + children = ( + B559CD481CAA8C6D00E4D58B /* CSStorageInterface.swift */, + B546F9681C9AF26D00D5AC55 /* CSInMemoryStore.swift */, + B546F95C1C9A12B800D5AC55 /* CSSQliteStore.swift */, + ); + name = StorageInterfaces; + sourceTree = ""; + }; + B5489F3C1CF5EEBC008B4978 /* TestEntities */ = { + isa = PBXGroup; + children = ( + B5489F3D1CF5EEBC008B4978 /* TestEntity1.swift */, + B5489F3E1CF5EEBC008B4978 /* TestEntity2.swift */, + ); + path = TestEntities; + sourceTree = ""; + }; + B5489F4A1CF5F743008B4978 /* BaseTests */ = { + isa = PBXGroup; + children = ( + B5489F4B1CF5F743008B4978 /* BaseTestCase.swift */, + B57D27BD1D0BBE8200539C58 /* BaseTestDataTestCase.swift */, + ); + path = BaseTests; + sourceTree = ""; + }; + B5519A5D1CA20093002BEF78 /* Transactions */ = { + isa = PBXGroup; + children = ( + B5D7A5B51CA3BF8F005C752B /* CSInto.swift */, + B5519A581CA2008C002BEF78 /* CSBaseDataTransaction.swift */, + B5519A5E1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift */, + B5E222221CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift */, + B5E222291CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift */, + B5ECDC281CA81CC700C7F112 /* CSDataStack+Transaction.swift */, + B5ECDC2E1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift */, + B529C2031CA4A2DB007E7EBD /* CSSaveResult.swift */, + ); + name = Transactions; + sourceTree = ""; + }; B56964D11B22FF700075EE4A /* Migrating */ = { isa = PBXGroup; children = ( B56964D31B22FFAD0075EE4A /* DataStack+Migration.swift */, B5FAD6AD1B518DCB00714891 /* CoreStore+Migration.swift */, + B546F9721C9C553300D5AC55 /* SetupResult.swift */, B56007151B4018AB00A9A8F9 /* MigrationChain.swift */, B5A261201B64BFDB006EB6D3 /* MigrationType.swift */, B56965231B356B820075EE4A /* MigrationResult.swift */, @@ -646,6 +1134,24 @@ path = Migrating; sourceTree = ""; }; + B5A5F26B1CAFF8D0004AB9AF /* Swift */ = { + isa = PBXGroup; + children = ( + 2F291E2619C6D3CF007AF63F /* CoreStore.swift */, + B5D1E22B19FA9FBC003B2874 /* CoreStoreError.swift */, + B5E84EDA1AFF84500064E85B /* Setup */, + B5E84EE21AFF84610064E85B /* Logging */, + B5E84EE91AFF846E0064E85B /* Transactions */, + B5E834B61B7630BD001D3D50 /* Importing */, + B5E84EFD1AFF847B0064E85B /* Fetching and Querying */, + B5E84F191AFF84860064E85B /* Observing */, + B56964D11B22FF700075EE4A /* Migrating */, + B5E84F261AFF84920064E85B /* Convenience */, + B5E84F291AFF849C0064E85B /* Internal */, + ); + name = Swift; + sourceTree = ""; + }; B5D9E3361CA2C6A3007A9D52 /* GCDKit iOS7 */ = { isa = PBXGroup; children = ( @@ -658,24 +1164,75 @@ name = "GCDKit iOS7"; sourceTree = ""; }; - B5E834B61B7630BD001D3D50 /* Importing Data */ = { + B5DBE2CB1C99148100B5CEFA /* ObjectiveC */ = { + isa = PBXGroup; + children = ( + B55717421D15AF9C009BDBCA /* CoreStoreBridge.h */, + B538BA701D15B3E30003A766 /* CoreStoreBridge.m */, + B5AEFAB41C9962AE00AD137F /* CoreStoreBridge.swift */, + B5DBE2CC1C9914A900B5CEFA /* CSCoreStore.swift */, + B5519A491CA1F4FB002BEF78 /* CSError.swift */, + B546F9611C9A13F400D5AC55 /* Setup */, + B5519A5D1CA20093002BEF78 /* Transactions */, + B5E2222F1CA5339200BA2E95 /* Fetching and Querying */, + B501FDDB1CA8D03600BE22EF /* Observing */, + B5E1B5A61CAA49CE007FD580 /* Migrating */, + B53FBA101CAB607000F0D40A /* Convenience */, + B5E222211CA4DE5700BA2E95 /* Internal */, + ); + path = ObjectiveC; + sourceTree = ""; + }; + B5E1B5A61CAA49CE007FD580 /* Migrating */ = { + isa = PBXGroup; + children = ( + B5E1B5A71CAA49E2007FD580 /* CSDataStack+Migrating.swift */, + B53FBA0A1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift */, + B559CD421CAA8B6300E4D58B /* CSSetupResult.swift */, + B53FBA031CAB300C00F0D40A /* CSMigrationType.swift */, + B53FB9FD1CAB2D2F00F0D40A /* CSMigrationResult.swift */, + ); + name = Migrating; + sourceTree = ""; + }; + B5E222211CA4DE5700BA2E95 /* Internal */ = { + isa = PBXGroup; + children = ( + B5ECDBF81CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift */, + ); + name = Internal; + sourceTree = ""; + }; + B5E2222F1CA5339200BA2E95 /* Fetching and Querying */ = { + isa = PBXGroup; + children = ( + B5ECDBDE1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift */, + B5ECDC1C1CA81A2100C7F112 /* CSDataStack+Querying.swift */, + B5ECDC221CA81A3900C7F112 /* CSCoreStore+Querying.swift */, + B5ECDBEA1CA6BEAC00C7F112 /* Protocol Clauses */, + B5ECDBF11CA6BF2300C7F112 /* Concrete Clauses */, + ); + name = "Fetching and Querying"; + sourceTree = ""; + }; + B5E834B61B7630BD001D3D50 /* Importing */ = { isa = PBXGroup; children = ( B5F1DA8C1B9AA97D007C5CBB /* ImportableObject.swift */, B5F1DA8F1B9AA991007C5CBB /* ImportableUniqueObject.swift */, B5E834B81B76311F001D3D50 /* BaseDataTransaction+Importing.swift */, ); - path = "Importing Data"; + path = Importing; sourceTree = ""; }; - B5E84EDA1AFF84500064E85B /* Setting Up */ = { + B5E84EDA1AFF84500064E85B /* Setup */ = { isa = PBXGroup; children = ( - B5E84EDB1AFF84500064E85B /* DataStack.swift */, - B5E84EDE1AFF84500064E85B /* PersistentStoreResult.swift */, B504D0D51B02362500B2BBB1 /* CoreStore+Setup.swift */, + B5E84EDB1AFF84500064E85B /* DataStack.swift */, + B5FE4DA01C84818B00FA6A91 /* StorageInterfaces */, ); - path = "Setting Up"; + path = Setup; sourceTree = ""; }; B5E84EE21AFF84610064E85B /* Logging */ = { @@ -684,11 +1241,12 @@ B5E84EE31AFF84610064E85B /* DefaultLogger.swift */, B5E84EE41AFF84610064E85B /* CoreStore+Logging.swift */, B5E84EE51AFF84610064E85B /* CoreStoreLogger.swift */, + B51FE5AA1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift */, ); path = Logging; sourceTree = ""; }; - B5E84EE91AFF846E0064E85B /* Saving and Processing */ = { + B5E84EE91AFF846E0064E85B /* Transactions */ = { isa = PBXGroup; children = ( B56007101B3F6BD500A9A8F9 /* Into.swift */, @@ -701,7 +1259,7 @@ B50392F81C478FF3009900CA /* NSManagedObject+Transaction.swift */, B5E84EF21AFF846E0064E85B /* SaveResult.swift */, ); - path = "Saving and Processing"; + path = Transactions; sourceTree = ""; }; B5E84EFD1AFF847B0064E85B /* Fetching and Querying */ = { @@ -752,38 +1310,71 @@ path = Observing; sourceTree = ""; }; - B5E84F261AFF84920064E85B /* Convenience Helpers */ = { + B5E84F261AFF84920064E85B /* Convenience */ = { isa = PBXGroup; children = ( B5E84F271AFF84920064E85B /* NSManagedObject+Convenience.swift */, B5FAD6A81B50A4B300714891 /* NSProgress+Convenience.swift */, B5202CF91C04688100DED140 /* NSFetchedResultsController+Convenience.swift */, ); - path = "Convenience Helpers"; + path = Convenience; sourceTree = ""; }; B5E84F291AFF849C0064E85B /* Internal */ = { isa = PBXGroup; children = ( - B5E84F2A1AFF849C0064E85B /* AssociatedObjects.swift */, + B5C976E61C6E3A5900B1AF90 /* CoreStoreFetchedResultsController.swift */, B54A6A541BA15F2A007870FD /* FetchedResultsControllerDelegate.swift */, B5E834BA1B7691F3001D3D50 /* Functions.swift */, B5FAD6AB1B51285300714891 /* MigrationManager.swift */, B5E84F2B1AFF849C0064E85B /* NotificationObserver.swift */, - B59D5C211B5BA34B00453479 /* NSFileManager+Setup.swift */, - B5C976E61C6E3A5900B1AF90 /* CoreStoreFetchedResultsController.swift */, B526613F1CADD585007B85D9 /* CoreStoreFetchRequest.swift */, B5E84F2C1AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift */, B5E84F351AFF85470064E85B /* NSManagedObjectContext+Querying.swift */, B5E84F321AFF85470064E85B /* NSManagedObjectContext+Setup.swift */, B5E84F331AFF85470064E85B /* NSManagedObjectContext+Transaction.swift */, B51BE0691B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift */, - B5D9E34F1CA2D0D7007A9D52 /* NSPersistentStoreCoordinator+Setup.swift */, + B5FEC18D1C9166E200532541 /* NSPersistentStore+Setup.swift */, + B59AFF401C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift */, B5E84F2D1AFF849C0064E85B /* WeakObject.swift */, ); path = Internal; sourceTree = ""; }; + B5ECDBEA1CA6BEAC00C7F112 /* Protocol Clauses */ = { + isa = PBXGroup; + children = ( + B5ECDBE41CA6BEA300C7F112 /* CSClauseTypes.swift */, + ); + name = "Protocol Clauses"; + sourceTree = ""; + }; + B5ECDBF11CA6BF2300C7F112 /* Concrete Clauses */ = { + isa = PBXGroup; + children = ( + B5ECDBEB1CA6BF2000C7F112 /* CSFrom.swift */, + B5A5F2651CAEC50F004AB9AF /* CSSelect.swift */, + B5ECDBFE1CA80CBA00C7F112 /* CSWhere.swift */, + B5ECDC041CA8138100C7F112 /* CSOrderBy.swift */, + B5ECDC0A1CA8161B00C7F112 /* CSGroupBy.swift */, + B5ECDC101CA816E500C7F112 /* CSTweak.swift */, + ); + name = "Concrete Clauses"; + sourceTree = ""; + }; + B5FE4DA01C84818B00FA6A91 /* StorageInterfaces */ = { + isa = PBXGroup; + children = ( + B5FE4DA11C8481E100FA6A91 /* StorageInterface.swift */, + B5FE4DA61C84FB4400FA6A91 /* InMemoryStore.swift */, + B5FE4DAB1C85D44E00FA6A91 /* SQLiteStore.swift */, + B5D3F6441C887C0A00C7492A /* LegacySQLiteStore.swift */, + B59FA0AD1CCBAC95007C9BCA /* ICloudStore.swift */, + B5677D3C1CD3B1E400322BFC /* ICloudStoreObserver.swift */, + ); + path = StorageInterfaces; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -791,6 +1382,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + B55717441D15B09E009BDBCA /* CoreStoreBridge.h in Headers */, 2F03A53619C5C6DA005002A5 /* CoreStore.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -799,6 +1391,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + B55717451D15B09F009BDBCA /* CoreStoreBridge.h in Headers */, 82BA18A01C4BBD1400A0916E /* CoreStore.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -807,6 +1400,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + B55717461D15B0A1009BDBCA /* CoreStoreBridge.h in Headers */, B52DD1931BE1F8FD00949AFE /* CoreStore.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -815,6 +1409,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + B55717471D15B0A1009BDBCA /* CoreStoreBridge.h in Headers */, B563217E1BD65110006C9394 /* CoreStore.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -823,6 +1418,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + B55717431D15B09D009BDBCA /* CoreStoreBridge.h in Headers */, B5D9E32F1CA2C317007A9D52 /* CoreStore.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -980,7 +1576,7 @@ 2F03A52719C5C6DA005002A5 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0720; + LastSwiftUpdateCheck = 0730; LastUpgradeCheck = 0700; ORGANIZATIONNAME = "John Rommel Estropia"; TargetAttributes = { @@ -1097,66 +1693,115 @@ buildActionMask = 2147483647; files = ( B5E84F221AFF84860064E85B /* ObjectMonitor.swift in Sources */, + B5ECDBF91CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */, B5C976E71C6E3A5A00B1AF90 /* CoreStoreFetchedResultsController.swift in Sources */, B5F1DA901B9AA991007C5CBB /* ImportableUniqueObject.swift in Sources */, B504D0D61B02362500B2BBB1 /* CoreStore+Setup.swift in Sources */, - B5D1E22C19FA9FBC003B2874 /* NSError+CoreStore.swift in Sources */, + B529C2041CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */, + B5D1E22C19FA9FBC003B2874 /* CoreStoreError.swift in Sources */, B5E84F131AFF847B0064E85B /* Where.swift in Sources */, + B5D3F6451C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */, + B5ECDBFF1CA80CBA00C7F112 /* CSWhere.swift in Sources */, + B5ECDC051CA8138100C7F112 /* CSOrderBy.swift in Sources */, + B5E1B5981CAA0C23007FD580 /* CSObjectObserver.swift in Sources */, + B5519A5F1CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */, + B51FE5AB1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */, B54A6A551BA15F2A007870FD /* FetchedResultsControllerDelegate.swift in Sources */, B5A261211B64BFDB006EB6D3 /* MigrationType.swift in Sources */, + B53FBA0B1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */, B5E84F141AFF847B0064E85B /* DataStack+Querying.swift in Sources */, + B5D7A5B61CA3BF8F005C752B /* CSInto.swift in Sources */, B56007141B3F6C2800A9A8F9 /* SectionBy.swift in Sources */, B5E84F371AFF85470064E85B /* NSManagedObjectContext+Transaction.swift in Sources */, + B5ECDC1D1CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */, B5C976E31C6C9F6A00B1AF90 /* UnsafeDataTransaction+Observing.swift in Sources */, + B53FBA121CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */, + B5E1B5A81CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */, B56007161B4018AB00A9A8F9 /* MigrationChain.swift in Sources */, + B5E1B59D1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */, + B5ECDC231CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, B5E84F0E1AFF847B0064E85B /* Tweak.swift in Sources */, + B5E1B5931CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */, + B5ECDC291CA81CC700C7F112 /* CSDataStack+Transaction.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 */, + B546F9731C9C553300D5AC55 /* SetupResult.swift in Sources */, B56007111B3F6BD500A9A8F9 /* Into.swift in Sources */, B5E84F111AFF847B0064E85B /* Select.swift in Sources */, + B5FE4DA21C8481E100FA6A91 /* StorageInterface.swift in Sources */, + B53FB9FE1CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */, + B5DBE2D21C991B3E00B5CEFA /* CSDataStack.swift in Sources */, B50392F91C478FF3009900CA /* NSManagedObject+Transaction.swift in Sources */, B52661401CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */, + B53FBA181CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */, B5202CFA1C04688100DED140 /* NSFetchedResultsController+Convenience.swift in Sources */, - B5E84EE11AFF84500064E85B /* PersistentStoreResult.swift in Sources */, + B5519A591CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */, + B5ECDBDF1CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */, B5E84F251AFF84860064E85B /* ObjectObserver.swift in Sources */, B5E84F2F1AFF849C0064E85B /* NotificationObserver.swift in Sources */, B5F1DA8D1B9AA97D007C5CBB /* ImportableObject.swift in Sources */, B56965241B356B820075EE4A /* MigrationResult.swift in Sources */, + B5FE4DAC1C85D44E00FA6A91 /* SQLiteStore.swift in Sources */, + B501FDE71CA8D20500BE22EF /* CSListObserver.swift in Sources */, + B501FDE21CA8D1F500BE22EF /* CSListMonitor.swift in Sources */, 2F291E2719C6D3CF007AF63F /* CoreStore.swift in Sources */, + B5ECDC111CA816E500C7F112 /* CSTweak.swift in Sources */, B5E84F411AFF8CCD0064E85B /* ClauseTypes.swift in Sources */, B5E84F0D1AFF847B0064E85B /* BaseDataTransaction+Querying.swift in Sources */, B5FAD6AC1B51285300714891 /* MigrationManager.swift in Sources */, B5E84EF61AFF846E0064E85B /* DataStack+Transaction.swift in Sources */, + B5FEC18E1C9166E200532541 /* NSPersistentStore+Setup.swift in Sources */, + B5E1B5A21CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */, B5E84EDF1AFF84500064E85B /* DataStack.swift in Sources */, + B59AFF411C6593E400C0ABE2 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, B5E834BB1B7691F3001D3D50 /* Functions.swift in Sources */, B5E84F231AFF84860064E85B /* ListMonitor.swift in Sources */, B5E84EF71AFF846E0064E85B /* UnsafeDataTransaction.swift in Sources */, B56964D41B22FFAD0075EE4A /* DataStack+Migration.swift in Sources */, + B5A5F2661CAEC50F004AB9AF /* CSSelect.swift in Sources */, + B5ECDBE51CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */, + B5519A4A1CA1F4FB002BEF78 /* CSError.swift in Sources */, B5E84EF51AFF846E0064E85B /* BaseDataTransaction.swift in Sources */, B5E84EFB1AFF846E0064E85B /* SaveResult.swift in Sources */, B5E84F0F1AFF847B0064E85B /* From.swift in Sources */, - B59D5C221B5BA34B00453479 /* NSFileManager+Setup.swift in Sources */, B5FAD6A91B50A4B400714891 /* NSProgress+Convenience.swift in Sources */, B5E84EFC1AFF846E0064E85B /* SynchronousDataTransaction.swift in Sources */, + B5E222231CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */, B5E84F281AFF84920064E85B /* NSManagedObject+Convenience.swift in Sources */, B51BE06A1B47FC4B0069F532 /* NSManagedObjectModel+Setup.swift in Sources */, + B5AEFAB51C9962AE00AD137F /* CoreStoreBridge.swift in Sources */, + B5E2222A1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */, B5E84F391AFF85470064E85B /* NSManagedObjectContext+Querying.swift in Sources */, B5E84EE81AFF84610064E85B /* CoreStoreLogger.swift in Sources */, + B559CD491CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */, + B5ECDC2F1CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */, B5E84F311AFF849C0064E85B /* WeakObject.swift in Sources */, B5E84F101AFF847B0064E85B /* GroupBy.swift in Sources */, B5E84F201AFF84860064E85B /* DataStack+Observing.swift in Sources */, - B5D9E3501CA2D0D7007A9D52 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, + B501FDDD1CA8D05000BE22EF /* CSSectionBy.swift in Sources */, + B538BA771D15B3E30003A766 /* CoreStoreBridge.m in Sources */, + B59FA0AE1CCBAC95007C9BCA /* ICloudStore.swift in Sources */, B5E84EF81AFF846E0064E85B /* CoreStore+Transaction.swift in Sources */, B5E84F301AFF849C0064E85B /* NSManagedObjectContext+CoreStore.swift in Sources */, + B546F9691C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */, + B53FBA1E1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */, B5E84F211AFF84860064E85B /* CoreStore+Observing.swift in Sources */, + B559CD431CAA8B6300E4D58B /* CSSetupResult.swift in Sources */, + B5FE4DA71C84FB4400FA6A91 /* InMemoryStore.swift in Sources */, + B5ECDBEC1CA6BF2000C7F112 /* CSFrom.swift in Sources */, B5E834B91B76311F001D3D50 /* BaseDataTransaction+Importing.swift in Sources */, B5E84EE61AFF84610064E85B /* DefaultLogger.swift in Sources */, + B53FBA041CAB300C00F0D40A /* CSMigrationType.swift in Sources */, B5E84EF41AFF846E0064E85B /* AsynchronousDataTransaction.swift in Sources */, + B5DBE2CD1C9914A900B5CEFA /* CSCoreStore.swift in Sources */, + B546F95D1C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */, + B5ECDC0B1CA8161B00C7F112 /* CSGroupBy.swift in Sources */, B5E84F151AFF847B0064E85B /* CoreStore+Querying.swift in Sources */, B5E84F241AFF84860064E85B /* ListObserver.swift in Sources */, - B5E84F2E1AFF849C0064E85B /* AssociatedObjects.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1164,10 +1809,30 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2F03A54019C5C6DA005002A5 /* CoreStoreTests.swift in Sources */, - B5D372861A39CDDB00F583D9 /* TestEntity1.swift in Sources */, + B52557841D02A07400E51965 /* SectionByTests.swift in Sources */, + B5220E101D0DA6AB009BC71E /* ListObserverTests.swift in Sources */, + B5519A401CA1B17B002BEF78 /* ErrorTests.swift in Sources */, + B525577C1D0291FE00E51965 /* GroupByTests.swift in Sources */, + B52557741D02791400E51965 /* WhereTests.swift in Sources */, + B5DC47C61C93D22900FA3BF3 /* MigrationChainTests.swift in Sources */, + B525576C1CFAF18F00E51965 /* IntoTests.swift in Sources */, + B5220E0C1D0D0D19009BC71E /* ImportTests.swift in Sources */, B5D372841A39CD6900F583D9 /* Model.xcdatamodeld in Sources */, - B5D5E0CF1A4D6AAB006468AF /* TestEntity2.swift in Sources */, + B52557881D02DE8100E51965 /* FetchTests.swift in Sources */, + B5489F501CF603D5008B4978 /* FromTests.swift in Sources */, + B52557781D02826E00E51965 /* OrderByTests.swift in Sources */, + B5220E081D0C5F8D009BC71E /* ObjectObserverTests.swift in Sources */, + B5489F421CF5EEBC008B4978 /* TestEntity2.swift in Sources */, + B52557701D02561A00E51965 /* SelectTests.swift in Sources */, + B5489F461CF5F017008B4978 /* TransactionTests.swift in Sources */, + B52557801D029D2500E51965 /* TweakTests.swift in Sources */, + B580857A1CDF808C004C2EEB /* SetupTests.swift in Sources */, + B5489F4C1CF5F743008B4978 /* BaseTestCase.swift in Sources */, + B5DBE2DF1C9939E100B5CEFA /* BridgingTests.m in Sources */, + B57D27BE1D0BBE8200539C58 /* BaseTestDataTestCase.swift in Sources */, + B5489F3F1CF5EEBC008B4978 /* TestEntity1.swift in Sources */, + B57D27C21D0BC20100539C58 /* QueryTests.swift in Sources */, + B5DC47CA1C93D9C800FA3BF3 /* StorageInterfaceTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1176,63 +1841,112 @@ buildActionMask = 2147483647; files = ( 82BA18B61C4BBD3F00A0916E /* DataStack+Querying.swift in Sources */, + B5ECDBFB1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */, B5C976E81C6E3A5D00B1AF90 /* CoreStoreFetchedResultsController.swift in Sources */, - 82BA18A21C4BBD1D00A0916E /* NSError+CoreStore.swift in Sources */, + 82BA18A21C4BBD1D00A0916E /* CoreStoreError.swift in Sources */, 82BA18B21C4BBD3900A0916E /* ImportableObject.swift in Sources */, + B529C2061CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */, 82BA18AE1C4BBD3100A0916E /* DataStack+Transaction.swift in Sources */, 82BA18AB1C4BBD3100A0916E /* AsynchronousDataTransaction.swift in Sources */, 82BA18CE1C4BBD7100A0916E /* FetchedResultsControllerDelegate.swift in Sources */, + B5ECDC011CA80CBA00C7F112 /* CSWhere.swift in Sources */, + B5ECDC071CA8138100C7F112 /* CSOrderBy.swift in Sources */, + B5E1B59A1CAA0C23007FD580 /* CSObjectObserver.swift in Sources */, + B5519A601CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */, + B51FE5AD1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */, + B5FE4DAD1C85D44E00FA6A91 /* SQLiteStore.swift in Sources */, 82BA18C51C4BBD5300A0916E /* ListObserver.swift in Sources */, + B53FBA0D1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */, 82BA18C21C4BBD5300A0916E /* ObjectMonitor.swift in Sources */, + B5D7A5B81CA3BF8F005C752B /* CSInto.swift in Sources */, 82BA18A51C4BBD2200A0916E /* CoreStore+Setup.swift in Sources */, 82BA18BD1C4BBD4A00A0916E /* GroupBy.swift in Sources */, + B5ECDC1F1CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */, B5C976E41C6C9F9A00B1AF90 /* UnsafeDataTransaction+Observing.swift in Sources */, + B53FBA141CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */, + B5E1B5AA1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */, + B5D3F6461C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */, + B5E1B59F1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */, + B5ECDC251CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, 82BA18B31C4BBD3900A0916E /* ImportableUniqueObject.swift in Sources */, + B5E1B5951CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */, + B5ECDC2B1CA81CC700C7F112 /* CSDataStack+Transaction.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 */, 82BA18B11C4BBD3100A0916E /* SaveResult.swift in Sources */, 82BA18DD1C4BBE1400A0916E /* NSFetchedResultsController+Convenience.swift in Sources */, + B5FE4DA81C84FB4400FA6A91 /* InMemoryStore.swift in Sources */, + B53FBA001CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */, + B5DBE2D31C991B3E00B5CEFA /* CSDataStack.swift in Sources */, 82BA18B41C4BBD3900A0916E /* BaseDataTransaction+Importing.swift in Sources */, + B53FBA1A1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */, 82BA18CA1C4BBD5900A0916E /* MigrationResult.swift in Sources */, B52661421CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */, + B5519A5A1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */, + B5ECDBE11CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */, 82BA18C11C4BBD5300A0916E /* CoreStore+Observing.swift in Sources */, 82BA18BC1C4BBD4A00A0916E /* OrderBy.swift in Sources */, 82BA18B01C4BBD3100A0916E /* NSManagedObject+Transaction.swift in Sources */, 82BA18D41C4BBD7100A0916E /* NSManagedObjectContext+Querying.swift in Sources */, 82BA18D51C4BBD7100A0916E /* NSManagedObjectContext+Setup.swift in Sources */, + B501FDE91CA8D20500BE22EF /* CSListObserver.swift in Sources */, + B501FDE41CA8D1F500BE22EF /* CSListMonitor.swift in Sources */, + B5FE4DA31C8481E100FA6A91 /* StorageInterface.swift in Sources */, + B5ECDC131CA816E500C7F112 /* CSTweak.swift in Sources */, 82BA18C91C4BBD5900A0916E /* MigrationType.swift in Sources */, 82BA18D01C4BBD7100A0916E /* MigrationManager.swift in Sources */, 82BA18C61C4BBD5900A0916E /* DataStack+Migration.swift in Sources */, - 82BA18CD1C4BBD7100A0916E /* AssociatedObjects.swift in Sources */, + B59851491C90289D00C99590 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, + B5E1B5A41CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */, + B5FEC18F1C9166E600532541 /* NSPersistentStore+Setup.swift in Sources */, 82BA18B71C4BBD3F00A0916E /* CoreStore+Querying.swift in Sources */, - 82BA18A41C4BBD2200A0916E /* PersistentStoreResult.swift in Sources */, 82BA18AA1C4BBD3100A0916E /* BaseDataTransaction.swift in Sources */, 82BA18A91C4BBD3100A0916E /* Into.swift in Sources */, 82BA18D11C4BBD7100A0916E /* NotificationObserver.swift in Sources */, 82BA18BB1C4BBD4A00A0916E /* Where.swift in Sources */, + B5A5F2681CAEC50F004AB9AF /* CSSelect.swift in Sources */, + B5ECDBE71CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */, + B5519A4B1CA1F4FB002BEF78 /* CSError.swift in Sources */, 82BA18D71C4BBD7100A0916E /* NSManagedObjectModel+Setup.swift in Sources */, 82BA18C31C4BBD5300A0916E /* ObjectObserver.swift in Sources */, - 82BA18D21C4BBD7100A0916E /* NSFileManager+Setup.swift in Sources */, 82BA18BF1C4BBD5300A0916E /* SectionBy.swift in Sources */, 82BA18AC1C4BBD3100A0916E /* SynchronousDataTransaction.swift in Sources */, 82BA18C71C4BBD5900A0916E /* CoreStore+Migration.swift in Sources */, + B5E222251CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */, 82BA18C41C4BBD5300A0916E /* ListMonitor.swift in Sources */, 82BA18BA1C4BBD4A00A0916E /* Select.swift in Sources */, + B5AEFAB61C9962AE00AD137F /* CoreStoreBridge.swift in Sources */, + B5E2222C1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */, 82BA18A71C4BBD2900A0916E /* CoreStore+Logging.swift in Sources */, 82BA18D81C4BBD7100A0916E /* WeakObject.swift in Sources */, + B559CD4B1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */, + B5ECDC311CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */, 82BA18AF1C4BBD3100A0916E /* CoreStore+Transaction.swift in Sources */, 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 */, 82BA18D31C4BBD7100A0916E /* NSManagedObjectContext+CoreStore.swift in Sources */, - B5D9E3521CA2D0DE007A9D52 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, 82BA18AD1C4BBD3100A0916E /* UnsafeDataTransaction.swift in Sources */, + B546F96A1C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */, + B53FBA201CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */, 82BA18A81C4BBD2900A0916E /* CoreStoreLogger.swift in Sources */, + B559CD451CAA8B6300E4D58B /* CSSetupResult.swift in Sources */, 82BA18B81C4BBD4200A0916E /* ClauseTypes.swift in Sources */, + B5ECDBEE1CA6BF2000C7F112 /* CSFrom.swift in Sources */, 82BA18D61C4BBD7100A0916E /* NSManagedObjectContext+Transaction.swift in Sources */, 82BA18B91C4BBD4A00A0916E /* From.swift in Sources */, + B53FBA061CAB300C00F0D40A /* CSMigrationType.swift in Sources */, 82BA18BE1C4BBD4A00A0916E /* Tweak.swift in Sources */, + B5DBE2CE1C9914A900B5CEFA /* CSCoreStore.swift in Sources */, + B546F95E1C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */, + B5ECDC0D1CA8161B00C7F112 /* CSGroupBy.swift in Sources */, 82BA18CC1C4BBD6400A0916E /* NSProgress+Convenience.swift in Sources */, 82BA18C01C4BBD5300A0916E /* DataStack+Observing.swift in Sources */, 82BA18A61C4BBD2900A0916E /* DefaultLogger.swift in Sources */, @@ -1243,10 +1957,30 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 82BA18DA1C4BBD9700A0916E /* TestEntity1.swift in Sources */, - 82BA18DB1C4BBD9700A0916E /* TestEntity2.swift in Sources */, - 82BA18D91C4BBD9700A0916E /* CoreStoreTests.swift in Sources */, + B52557851D02A07400E51965 /* SectionByTests.swift in Sources */, + B5220E111D0DA6AB009BC71E /* ListObserverTests.swift in Sources */, + B5519A411CA1B17B002BEF78 /* ErrorTests.swift in Sources */, + B525577D1D0291FE00E51965 /* GroupByTests.swift in Sources */, + B52557751D02791400E51965 /* WhereTests.swift in Sources */, + B5DC47C71C93D22900FA3BF3 /* MigrationChainTests.swift in Sources */, + B5DBE2E01C9939E100B5CEFA /* BridgingTests.m in Sources */, + B5220E0D1D0D0D19009BC71E /* ImportTests.swift in Sources */, + B525576D1CFAF18F00E51965 /* IntoTests.swift in Sources */, + B580857B1CDF808D004C2EEB /* SetupTests.swift in Sources */, + B52557891D02DE8100E51965 /* FetchTests.swift in Sources */, + B5489F511CF603D5008B4978 /* FromTests.swift in Sources */, + B5220E091D0C5F8D009BC71E /* ObjectObserverTests.swift in Sources */, + B52557791D02826E00E51965 /* OrderByTests.swift in Sources */, + B5489F431CF5EEBC008B4978 /* TestEntity2.swift in Sources */, + B52557711D02561A00E51965 /* SelectTests.swift in Sources */, + B5489F471CF5F017008B4978 /* TransactionTests.swift in Sources */, + B52557811D029D2500E51965 /* TweakTests.swift in Sources */, + B5489F4D1CF5F743008B4978 /* BaseTestCase.swift in Sources */, 82BA18DC1C4BBD9C00A0916E /* Model.xcdatamodeld in Sources */, + B57D27BF1D0BBE8200539C58 /* BaseTestDataTestCase.swift in Sources */, + B5489F401CF5EEBC008B4978 /* TestEntity1.swift in Sources */, + B57D27C31D0BC20100539C58 /* QueryTests.swift in Sources */, + B5DC47CB1C93D9C800FA3BF3 /* StorageInterfaceTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1254,56 +1988,116 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + B5220E1E1D13080D009BC71E /* CSListMonitor.swift in Sources */, + B5DBE2D01C9914A900B5CEFA /* CSCoreStore.swift in Sources */, + B5677D411CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */, B52DD1BE1BE1F94300949AFE /* NSProgress+Convenience.swift in Sources */, - B52DD1951BE1F92500949AFE /* NSError+CoreStore.swift in Sources */, + B5ECDC151CA816E500C7F112 /* CSTweak.swift in Sources */, + B546F9761C9C553300D5AC55 /* SetupResult.swift in Sources */, + B53FBA161CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */, + B5ECDC271CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, + B52DD1951BE1F92500949AFE /* CoreStoreError.swift in Sources */, + B546F9601C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */, + B5ECDC0F1CA8161B00C7F112 /* CSGroupBy.swift in Sources */, + B5ECDC211CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */, B52DD1C21BE1F94600949AFE /* MigrationManager.swift in Sources */, + B5ECDC2D1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */, + B5D7A5BA1CA3BF8F005C752B /* CSInto.swift in Sources */, + B5A5F26A1CAEC50F004AB9AF /* CSSelect.swift in Sources */, + B5220E1B1D13079B009BC71E /* CSCoreStore+Observing.swift in Sources */, + B5FEC1911C9166E700532541 /* NSPersistentStore+Setup.swift in Sources */, B52DD1AB1BE1F93900949AFE /* From.swift in Sources */, - B5D9E3541CA2D0DF007A9D52 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, - B52DD1BF1BE1F94600949AFE /* AssociatedObjects.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 */, B52DD1981BE1F92500949AFE /* CoreStore+Setup.swift in Sources */, + B5220E241D13085E009BC71E /* NSFetchedResultsController+Convenience.swift in Sources */, + B559CD471CAA8B6300E4D58B /* CSSetupResult.swift in Sources */, + B5ECDBF01CA6BF2000C7F112 /* CSFrom.swift in Sources */, + B5220E1F1D130810009BC71E /* CSListObserver.swift in Sources */, B52DD1941BE1F92500949AFE /* CoreStore.swift in Sources */, B52DD1A61BE1F92F00949AFE /* BaseDataTransaction+Importing.swift in Sources */, + B5220E1D1D13080A009BC71E /* CSDataStack+Observing.swift in Sources */, B52DD1A91BE1F93200949AFE /* CoreStore+Querying.swift in Sources */, + B5519A4D1CA1F4FB002BEF78 /* CSError.swift in Sources */, + B5E1B5AC1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */, B52DD1961BE1F92500949AFE /* DataStack.swift in Sources */, + B5ECDBFD1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */, B52DD1BD1BE1F94300949AFE /* NSManagedObject+Convenience.swift in Sources */, B52DD1AD1BE1F93900949AFE /* Where.swift in Sources */, - B52DD1C41BE1F94600949AFE /* NSFileManager+Setup.swift in Sources */, + B53FBA1C1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */, + B5ECDBE31CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */, + B5ECDC031CA80CBA00C7F112 /* CSWhere.swift in Sources */, B52DD1AC1BE1F93900949AFE /* Select.swift in Sources */, - B52DD1971BE1F92500949AFE /* PersistentStoreResult.swift in Sources */, + B5FE4DAF1C85D44E00FA6A91 /* SQLiteStore.swift in Sources */, B52DD1C71BE1F94600949AFE /* NSManagedObjectContext+Querying.swift in Sources */, B52DD1C81BE1F94600949AFE /* NSManagedObjectContext+Setup.swift in Sources */, B52DD1C31BE1F94600949AFE /* NotificationObserver.swift in Sources */, B52661441CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */, B52DD1A81BE1F93200949AFE /* DataStack+Querying.swift in Sources */, + B5220E221D130818009BC71E /* CSSectionBy.swift in Sources */, B52DD1BC1BE1F94000949AFE /* MigrationResult.swift in Sources */, + B5220E231D130826009BC71E /* NSFetchedResultsController+ObjectiveC.swift in Sources */, B52DD19D1BE1F92C00949AFE /* BaseDataTransaction.swift in Sources */, + B5220E131D1305ED009BC71E /* SectionBy.swift in Sources */, + B559CD4D1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */, + B5ECDBE91CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */, B52DD1B81BE1F94000949AFE /* DataStack+Migration.swift in Sources */, + B5ECDC091CA8138100C7F112 /* CSOrderBy.swift in Sources */, B52DD1A51BE1F92F00949AFE /* ImportableUniqueObject.swift in Sources */, + B5E222271CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */, + B5519A621CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */, B52DD19C1BE1F92C00949AFE /* Into.swift in Sources */, + B5FE4DA51C8481E100FA6A91 /* StorageInterface.swift in Sources */, + B529C2081CA4A2DC007E7EBD /* CSSaveResult.swift in Sources */, + B5FE4DAA1C84FB4400FA6A91 /* InMemoryStore.swift in Sources */, B52DD1AF1BE1F93900949AFE /* GroupBy.swift in Sources */, B52DD1B01BE1F93900949AFE /* Tweak.swift in Sources */, B52DD1CA1BE1F94600949AFE /* NSManagedObjectModel+Setup.swift in Sources */, B52DD1A41BE1F92F00949AFE /* ImportableObject.swift in Sources */, + B5220E161D13067C009BC71E /* ObjectMonitor.swift in Sources */, B52DD1AE1BE1F93900949AFE /* OrderBy.swift in Sources */, B52DD1BA1BE1F94000949AFE /* MigrationChain.swift in Sources */, B50392FB1C479640009900CA /* NSManagedObject+Transaction.swift in Sources */, B52DD1A31BE1F92C00949AFE /* SaveResult.swift in Sources */, + B5220E211D130816009BC71E /* CSObjectObserver.swift in Sources */, B52DD19F1BE1F92C00949AFE /* SynchronousDataTransaction.swift in Sources */, B52DD1CB1BE1F94600949AFE /* WeakObject.swift in Sources */, B52DD1C11BE1F94600949AFE /* Functions.swift in Sources */, + B5220E1A1D130791009BC71E /* CoreStoreFetchedResultsController.swift in Sources */, + B53FBA0F1CAB5E6500F0D40A /* CSCoreStore+Migrating.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 */, B52DD1C61BE1F94600949AFE /* NSManagedObjectContext+CoreStore.swift in Sources */, + B5220E141D130614009BC71E /* DataStack+Observing.swift in Sources */, B52DD1A21BE1F92C00949AFE /* CoreStore+Transaction.swift in Sources */, + B5E2222E1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */, + B5220E191D130761009BC71E /* ListMonitor.swift in Sources */, + B5220E181D130711009BC71E /* ObjectObserver.swift in Sources */, + B5220E251D13088E009BC71E /* ListObserver.swift in Sources */, + B538BA7A1D15B3E30003A766 /* CoreStoreBridge.m in Sources */, B52DD1A01BE1F92C00949AFE /* UnsafeDataTransaction.swift in Sources */, + B5ECDC331CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */, B52DD1BB1BE1F94000949AFE /* MigrationType.swift in Sources */, B52DD1C91BE1F94600949AFE /* NSManagedObjectContext+Transaction.swift in Sources */, + B5220E151D130663009BC71E /* CoreStore+Observing.swift in Sources */, B52DD19B1BE1F92800949AFE /* CoreStoreLogger.swift in Sources */, B52DD1991BE1F92800949AFE /* DefaultLogger.swift in Sources */, + B5220E201D130813009BC71E /* CSObjectMonitor.swift in Sources */, + B5220E171D1306DF009BC71E /* UnsafeDataTransaction+Observing.swift in Sources */, + B53FBA081CAB300C00F0D40A /* CSMigrationType.swift in Sources */, B52DD1B91BE1F94000949AFE /* CoreStore+Migration.swift in Sources */, + B5519A5C1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */, + B5DBE2D51C991B3E00B5CEFA /* CSDataStack.swift in Sources */, + B5AEFAB81C9962AE00AD137F /* CoreStoreBridge.swift in Sources */, + B598514B1C90289F00C99590 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, B52DD1AA1BE1F93500949AFE /* ClauseTypes.swift in Sources */, + B53FBA021CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */, + B51FE5AF1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1311,10 +2105,30 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B52DD1CD1BE1F94D00949AFE /* TestEntity1.swift in Sources */, - B52DD1CE1BE1F94D00949AFE /* TestEntity2.swift in Sources */, - B52DD1CC1BE1F94D00949AFE /* CoreStoreTests.swift in Sources */, + B5519A421CA1B17B002BEF78 /* ErrorTests.swift in Sources */, + B5220E271D1308D1009BC71E /* ObjectObserverTests.swift in Sources */, + B525577E1D0291FE00E51965 /* GroupByTests.swift in Sources */, + B52557761D02791400E51965 /* WhereTests.swift in Sources */, + B5DC47C81C93D22900FA3BF3 /* MigrationChainTests.swift in Sources */, + B5DBE2E11C9939E100B5CEFA /* BridgingTests.m in Sources */, + B5220E0E1D0D0D19009BC71E /* ImportTests.swift in Sources */, + B525576E1CFAF18F00E51965 /* IntoTests.swift in Sources */, + B580857C1CDF808F004C2EEB /* SetupTests.swift in Sources */, + B525578A1D02DE8100E51965 /* FetchTests.swift in Sources */, + B5220E281D1308E5009BC71E /* SectionByTests.swift in Sources */, + B5489F521CF603D5008B4978 /* FromTests.swift in Sources */, + B525577A1D02826E00E51965 /* OrderByTests.swift in Sources */, + B5489F441CF5EEBC008B4978 /* TestEntity2.swift in Sources */, + B52557721D02561A00E51965 /* SelectTests.swift in Sources */, + B5489F481CF5F017008B4978 /* TransactionTests.swift in Sources */, + B52557821D029D2500E51965 /* TweakTests.swift in Sources */, + B5489F4E1CF5F743008B4978 /* BaseTestCase.swift in Sources */, B5598BCC1BE2093D0092EFCE /* Model.xcdatamodeld in Sources */, + B5220E261D1308C2009BC71E /* ListObserverTests.swift in Sources */, + B57D27C01D0BBE8200539C58 /* BaseTestDataTestCase.swift in Sources */, + B5489F411CF5EEBC008B4978 /* TestEntity1.swift in Sources */, + B57D27C41D0BC20100539C58 /* QueryTests.swift in Sources */, + B5DC47CC1C93D9C800FA3BF3 /* StorageInterfaceTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1323,63 +2137,112 @@ buildActionMask = 2147483647; files = ( B56321A91BD65219006C9394 /* NSProgress+Convenience.swift in Sources */, + B5ECDBFC1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */, B5C976E91C6E3A5E00B1AF90 /* CoreStoreFetchedResultsController.swift in Sources */, - B56321801BD65216006C9394 /* NSError+CoreStore.swift in Sources */, + B56321801BD65216006C9394 /* CoreStoreError.swift in Sources */, B56321AD1BD6521C006C9394 /* MigrationManager.swift in Sources */, + B529C2071CA4A2DC007E7EBD /* CSSaveResult.swift in Sources */, B563219D1BD65216006C9394 /* DataStack+Observing.swift in Sources */, B56321961BD65216006C9394 /* From.swift in Sources */, - B56321AA1BD6521C006C9394 /* AssociatedObjects.swift in Sources */, + B5ECDC021CA80CBA00C7F112 /* CSWhere.swift in Sources */, + B5ECDC081CA8138100C7F112 /* CSOrderBy.swift in Sources */, + B5E1B59B1CAA0C23007FD580 /* CSObjectObserver.swift in Sources */, + B5519A611CA21954002BEF78 /* CSAsynchronousDataTransaction.swift in Sources */, + B5FE4DAE1C85D44E00FA6A91 /* SQLiteStore.swift in Sources */, + B51FE5AE1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */, B563218C1BD65216006C9394 /* DataStack+Transaction.swift in Sources */, + B53FBA0E1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */, B563219E1BD65216006C9394 /* CoreStore+Observing.swift in Sources */, + B5D7A5B91CA3BF8F005C752B /* CSInto.swift in Sources */, B56321891BD65216006C9394 /* AsynchronousDataTransaction.swift in Sources */, B56321831BD65216006C9394 /* CoreStore+Setup.swift in Sources */, + B5ECDC201CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */, B5C976E51C6C9F9B00B1AF90 /* UnsafeDataTransaction+Observing.swift in Sources */, + B53FBA151CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */, + B5E1B5AB1CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */, + B5D3F6471C887C0A00C7492A /* LegacySQLiteStore.swift in Sources */, + B5E1B5A01CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */, + B5ECDC261CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, B563217F1BD65216006C9394 /* CoreStore.swift in Sources */, + B5E1B5961CAA0C15007FD580 /* CSObjectMonitor.swift in Sources */, + B5ECDC2C1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */, B56321911BD65216006C9394 /* BaseDataTransaction+Importing.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 */, + B546F9751C9C553300D5AC55 /* SetupResult.swift in Sources */, B56321981BD65216006C9394 /* Where.swift in Sources */, B5202CFD1C046E8400DED140 /* NSFetchedResultsController+Convenience.swift in Sources */, - B56321AF1BD6521C006C9394 /* NSFileManager+Setup.swift in Sources */, + B5FE4DA91C84FB4400FA6A91 /* InMemoryStore.swift in Sources */, + B53FBA011CAB2D2F00F0D40A /* CSMigrationResult.swift in Sources */, + B5DBE2D41C991B3E00B5CEFA /* CSDataStack.swift in Sources */, B50392FA1C47963F009900CA /* NSManagedObject+Transaction.swift in Sources */, B52661431CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */, + B53FBA1B1CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */, + B5519A5B1CA2008C002BEF78 /* CSBaseDataTransaction.swift in Sources */, + B5ECDBE21CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */, B56321971BD65216006C9394 /* Select.swift in Sources */, B56321AB1BD6521C006C9394 /* FetchedResultsControllerDelegate.swift in Sources */, - B56321821BD65216006C9394 /* PersistentStoreResult.swift in Sources */, B563219C1BD65216006C9394 /* SectionBy.swift in Sources */, B56321B21BD6521C006C9394 /* NSManagedObjectContext+Querying.swift in Sources */, + B5FE4DA41C8481E100FA6A91 /* StorageInterface.swift in Sources */, B56321B31BD6521C006C9394 /* NSManagedObjectContext+Setup.swift in Sources */, + B501FDEA1CA8D20500BE22EF /* CSListObserver.swift in Sources */, + B501FDE51CA8D1F500BE22EF /* CSListMonitor.swift in Sources */, + B5ECDC141CA816E500C7F112 /* CSTweak.swift in Sources */, B56321AE1BD6521C006C9394 /* NotificationObserver.swift in Sources */, B56321931BD65216006C9394 /* DataStack+Querying.swift in Sources */, B56321A71BD65216006C9394 /* MigrationResult.swift in Sources */, + B598514A1C90289E00C99590 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, + B5FEC1901C9166E700532541 /* NSPersistentStore+Setup.swift in Sources */, B56321A11BD65216006C9394 /* ListMonitor.swift in Sources */, + B5E1B5A51CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */, B56321881BD65216006C9394 /* BaseDataTransaction.swift in Sources */, B56321A31BD65216006C9394 /* DataStack+Migration.swift in Sources */, B56321901BD65216006C9394 /* ImportableUniqueObject.swift in Sources */, B56321871BD65216006C9394 /* Into.swift in Sources */, B563219A1BD65216006C9394 /* GroupBy.swift in Sources */, + B5ECDBE81CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */, + B5A5F2691CAEC50F004AB9AF /* CSSelect.swift in Sources */, + B5519A4C1CA1F4FB002BEF78 /* CSError.swift in Sources */, B563219B1BD65216006C9394 /* Tweak.swift in Sources */, B56321B51BD6521C006C9394 /* NSManagedObjectModel+Setup.swift in Sources */, B563218F1BD65216006C9394 /* ImportableObject.swift in Sources */, B56321991BD65216006C9394 /* OrderBy.swift in Sources */, B56321A51BD65216006C9394 /* MigrationChain.swift in Sources */, B563218E1BD65216006C9394 /* SaveResult.swift in Sources */, + B5E222261CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */, B56321A21BD65216006C9394 /* ListObserver.swift in Sources */, B563218A1BD65216006C9394 /* SynchronousDataTransaction.swift in Sources */, + B5AEFAB71C9962AE00AD137F /* CoreStoreBridge.swift in Sources */, + B5E2222D1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */, B563219F1BD65216006C9394 /* ObjectMonitor.swift in Sources */, B56321B61BD6521C006C9394 /* WeakObject.swift in Sources */, + B559CD4C1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */, + B5ECDC321CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */, B56321AC1BD6521C006C9394 /* Functions.swift in Sources */, 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 */, B56321B11BD6521C006C9394 /* NSManagedObjectContext+CoreStore.swift in Sources */, - B5D9E3531CA2D0DE007A9D52 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, B563218D1BD65216006C9394 /* CoreStore+Transaction.swift in Sources */, + B546F96B1C9AF26D00D5AC55 /* CSInMemoryStore.swift in Sources */, + B53FBA211CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */, B563218B1BD65216006C9394 /* UnsafeDataTransaction.swift in Sources */, + B559CD461CAA8B6300E4D58B /* CSSetupResult.swift in Sources */, B56321A61BD65216006C9394 /* MigrationType.swift in Sources */, + B5ECDBEF1CA6BF2000C7F112 /* CSFrom.swift in Sources */, B56321B41BD6521C006C9394 /* NSManagedObjectContext+Transaction.swift in Sources */, B56321861BD65216006C9394 /* CoreStoreLogger.swift in Sources */, + B53FBA071CAB300C00F0D40A /* CSMigrationType.swift in Sources */, B56321841BD65216006C9394 /* DefaultLogger.swift in Sources */, + B5DBE2CF1C9914A900B5CEFA /* CSCoreStore.swift in Sources */, + B546F95F1C9A12B800D5AC55 /* CSSQliteStore.swift in Sources */, + B5ECDC0E1CA8161B00C7F112 /* CSGroupBy.swift in Sources */, B56321A41BD65216006C9394 /* CoreStore+Migration.swift in Sources */, B56321A01BD65216006C9394 /* ObjectObserver.swift in Sources */, B56321951BD65216006C9394 /* ClauseTypes.swift in Sources */, @@ -1390,14 +2253,29 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B5D9E3511CA2D0DD007A9D52 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, + B5ECDC0C1CA8161B00C7F112 /* CSGroupBy.swift in Sources */, + B5EA11DD1CA3AFD9002282F8 /* NSPersistentStoreCoordinator+Setup.swift in Sources */, + B53FBA191CAB63E200F0D40A /* NSManagedObject+ObjectiveC.swift in Sources */, + B538BA761D15B3E30003A766 /* CoreStoreBridge.m in Sources */, + B5ECDC3A1CA8369400C7F112 /* CSDataStack.swift in Sources */, B5D9E2EF1CA2C317007A9D52 /* ObjectMonitor.swift in Sources */, + B5ECDC3B1CA836AD00C7F112 /* CoreStoreBridge.swift in Sources */, + B5ECDC431CA836F800C7F112 /* SetupResult.swift in Sources */, + B59983491CA54BC100E1A417 /* CSBaseDataTransaction.swift in Sources */, + B5E2222B1CA51B6E00BA2E95 /* CSUnsafeDataTransaction.swift in Sources */, + B501FDE81CA8D20500BE22EF /* CSListObserver.swift in Sources */, B5D9E2F01CA2C317007A9D52 /* CoreStoreFetchedResultsController.swift in Sources */, B5D9E3461CA2C6C4007A9D52 /* GCDQueue.swift in Sources */, + B5E1B5A31CAA4365007FD580 /* CSCoreStore+Observing.swift in Sources */, B5D9E2F11CA2C317007A9D52 /* ImportableUniqueObject.swift in Sources */, B5D9E2F21CA2C317007A9D52 /* CoreStore+Setup.swift in Sources */, - B5D9E2F31CA2C317007A9D52 /* NSError+CoreStore.swift in Sources */, + B5D7A5B31CA3B738005C752B /* LegacySQLiteStore.swift in Sources */, + B5D7A5AF1CA3B738005C752B /* (null) in Sources */, + B5D7A5B11CA3B738005C752B /* InMemoryStore.swift in Sources */, + B5ECDC3E1CA836BE00C7F112 /* CSCoreStore+Setup.swift in Sources */, + B5D9E2F31CA2C317007A9D52 /* CoreStoreError.swift in Sources */, B5D9E2F41CA2C317007A9D52 /* Where.swift in Sources */, + B5677D3E1CD3B1E400322BFC /* ICloudStoreObserver.swift in Sources */, B5D9E2F51CA2C317007A9D52 /* FetchedResultsControllerDelegate.swift in Sources */, B5D9E2F61CA2C317007A9D52 /* MigrationType.swift in Sources */, B5D9E2F71CA2C317007A9D52 /* DataStack+Querying.swift in Sources */, @@ -1405,57 +2283,93 @@ B5D9E2F91CA2C317007A9D52 /* NSManagedObjectContext+Transaction.swift in Sources */, B52661411CADD585007B85D9 /* CoreStoreFetchRequest.swift in Sources */, B5D9E2FA1CA2C317007A9D52 /* UnsafeDataTransaction+Observing.swift in Sources */, + B5E1B5991CAA0C23007FD580 /* CSObjectObserver.swift in Sources */, + B5ECDC061CA8138100C7F112 /* CSOrderBy.swift in Sources */, + B5ECDC401CA836C800C7F112 /* CSInMemoryStore.swift in Sources */, B5D9E2FB1CA2C317007A9D52 /* MigrationChain.swift in Sources */, + B5E1B5941CAA0C15007FD580 /* CSObjectMonitor.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 */, + B5ECDC1E1CA81A2100C7F112 /* CSDataStack+Querying.swift in Sources */, B5D9E3011CA2C317007A9D52 /* Into.swift in Sources */, + B5ECDC301CA81CDC00C7F112 /* CSCoreStore+Transaction.swift in Sources */, B5D9E3021CA2C317007A9D52 /* Select.swift in Sources */, + B53FBA1F1CAB63FA00F0D40A /* NSFetchedResultsController+ObjectiveC.swift in Sources */, + B5D7A5B41CA3BAE7005C752B /* NSPersistentStore+Setup.swift in Sources */, B5D9E3031CA2C317007A9D52 /* NSManagedObject+Transaction.swift in Sources */, + B53FBA0C1CAB5E6500F0D40A /* CSCoreStore+Migrating.swift in Sources */, B5D9E3041CA2C317007A9D52 /* NSFetchedResultsController+Convenience.swift in Sources */, - B5D9E3051CA2C317007A9D52 /* PersistentStoreResult.swift in Sources */, + B5D9E3051CA2C317007A9D52 /* (null) in Sources */, + B51FE5AC1CD4D00300E54258 /* CoreStore+CustomDebugStringConvertible.swift in Sources */, B5D9E3061CA2C317007A9D52 /* ObjectObserver.swift in Sources */, B5D9E3071CA2C317007A9D52 /* NotificationObserver.swift in Sources */, + B53FBA051CAB300C00F0D40A /* CSMigrationType.swift in Sources */, B5D9E3081CA2C317007A9D52 /* ImportableObject.swift in Sources */, + B53FBA131CAB63CB00F0D40A /* NSProgress+ObjectiveC.swift in Sources */, + B5ECDC3C1CA836B600C7F112 /* CSCoreStore.swift in Sources */, B5D9E3091CA2C317007A9D52 /* MigrationResult.swift in Sources */, + B53FB9FF1CAB2D2F00F0D40A /* CSMigrationResult.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 */, + B5A5F2671CAEC50F004AB9AF /* CSSelect.swift in Sources */, B5D9E30F1CA2C317007A9D52 /* DataStack.swift in Sources */, B5D9E3101CA2C317007A9D52 /* Functions.swift in Sources */, B5D9E3431CA2C6C4007A9D52 /* GCDBlock.swift in Sources */, + B501FDE31CA8D1F500BE22EF /* CSListMonitor.swift in Sources */, B5D9E3111CA2C317007A9D52 /* ListMonitor.swift in Sources */, + B5ECDC2A1CA81CC700C7F112 /* CSDataStack+Transaction.swift in Sources */, + B5E222241CA4E12600BA2E95 /* CSSynchronousDataTransaction.swift in Sources */, B5D9E3121CA2C317007A9D52 /* UnsafeDataTransaction.swift in Sources */, + B5ECDBE01CA6BB2B00C7F112 /* CSBaseDataTransaction+Querying.swift in Sources */, B5D9E3131CA2C317007A9D52 /* DataStack+Migration.swift in Sources */, B5D9E3141CA2C317007A9D52 /* BaseDataTransaction.swift in Sources */, + B559CD441CAA8B6300E4D58B /* CSSetupResult.swift in Sources */, + B5E1B59E1CAA2568007FD580 /* CSDataStack+Observing.swift in Sources */, + B5ECDC241CA81A3900C7F112 /* CSCoreStore+Querying.swift in Sources */, B5D9E3151CA2C317007A9D52 /* SaveResult.swift in Sources */, + B529C2051CA4A2DB007E7EBD /* CSSaveResult.swift in Sources */, + B5E1B5A91CAA49E2007FD580 /* CSDataStack+Migrating.swift in Sources */, B5D9E3161CA2C317007A9D52 /* From.swift in Sources */, - B5D9E3171CA2C317007A9D52 /* NSFileManager+Setup.swift in Sources */, + B5ECDC421CA836CF00C7F112 /* CSAsynchronousDataTransaction.swift in Sources */, + B5D7A5B71CA3BF8F005C752B /* CSInto.swift in Sources */, B5D9E3181CA2C317007A9D52 /* NSProgress+Convenience.swift in Sources */, B5D9E3191CA2C317007A9D52 /* SynchronousDataTransaction.swift in Sources */, + B5ECDBE61CA6BEA300C7F112 /* CSClauseTypes.swift in Sources */, + B559CD4A1CAA8C6D00E4D58B /* CSStorageInterface.swift in Sources */, B5D9E31A1CA2C317007A9D52 /* NSManagedObject+Convenience.swift in Sources */, B5D9E31B1CA2C317007A9D52 /* NSManagedObjectModel+Setup.swift in Sources */, + B5D7A5B01CA3B738005C752B /* StorageInterface.swift in Sources */, + B5ECDBED1CA6BF2000C7F112 /* CSFrom.swift in Sources */, B5D9E3441CA2C6C4007A9D52 /* GCDGroup.swift in Sources */, B5D9E31C1CA2C317007A9D52 /* NSManagedObjectContext+Querying.swift in Sources */, + B5ECDC001CA80CBA00C7F112 /* CSWhere.swift in Sources */, + B5ECDC121CA816E500C7F112 /* CSTweak.swift in Sources */, B5D9E31D1CA2C317007A9D52 /* CoreStoreLogger.swift in Sources */, B5D9E31E1CA2C317007A9D52 /* WeakObject.swift in Sources */, + B5ECDC411CA836C800C7F112 /* CSSQliteStore.swift in Sources */, + B5D7A5B21CA3B738005C752B /* SQLiteStore.swift in Sources */, + B501FDDE1CA8D05000BE22EF /* CSSectionBy.swift in Sources */, B5D9E3471CA2C6C4007A9D52 /* GCDSemaphore.swift in Sources */, B5D9E31F1CA2C317007A9D52 /* GroupBy.swift in Sources */, B5D9E3201CA2C317007A9D52 /* DataStack+Observing.swift in Sources */, + B5ECDBFA1CA804FD00C7F112 /* NSManagedObjectContext+ObjectiveC.swift in Sources */, B5D9E3211CA2C317007A9D52 /* CoreStore+Transaction.swift in Sources */, B5D9E3221CA2C317007A9D52 /* NSManagedObjectContext+CoreStore.swift in Sources */, B5D9E3481CA2C6C4007A9D52 /* GCDTimer.swift in Sources */, + B59FA0AF1CCBACA6007C9BCA /* ICloudStore.swift in Sources */, B5D9E3231CA2C317007A9D52 /* CoreStore+Observing.swift in Sources */, + B5ECDC3D1CA836BA00C7F112 /* CSError.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; }; @@ -1508,6 +2422,7 @@ GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", + "USE_FRAMEWORKS=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -1516,7 +2431,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = CoreStore/Info.plist; + INFOPLIST_FILE = Sources/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = YES; @@ -1558,13 +2473,14 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = "USE_FRAMEWORKS=1"; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = CoreStore/Info.plist; + INFOPLIST_FILE = Sources/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO; @@ -1594,6 +2510,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; }; @@ -1625,6 +2542,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "com.johnestropia.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = CoreStoreTests; SDKROOT = iphoneos; + SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; @@ -1638,12 +2556,14 @@ PRODUCT_BUNDLE_IDENTIFIER = "com.johnestropia.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = CoreStoreTests; SDKROOT = iphoneos; + SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h"; }; name = Release; }; 82BA189A1C4BBCBA00A0916E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -1653,6 +2573,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; SDKROOT = appletvos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = 3; }; name = Debug; @@ -1660,6 +2581,7 @@ 82BA189B1C4BBCBA00A0916E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -1676,12 +2598,15 @@ 82BA189C1C4BBCBA00A0916E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = CoreStoreTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.johnestropia.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = CoreStoreTests; SDKROOT = appletvos; + SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = 3; }; name = Debug; @@ -1689,6 +2614,7 @@ 82BA189D1C4BBCBA00A0916E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; COPY_PHASE_STRIP = NO; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = CoreStoreTests/Info.plist; @@ -1696,6 +2622,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "com.johnestropia.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = CoreStoreTests; SDKROOT = appletvos; + SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h"; TARGETED_DEVICE_FAMILY = 3; }; name = Release; @@ -1704,6 +2631,7 @@ isa = XCBuildConfiguration; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "-"; COMBINE_HIDPI_IMAGES = YES; DEBUG_INFORMATION_FORMAT = dwarf; @@ -1717,6 +2645,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; SDKROOT = macosx; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; }; @@ -1724,6 +2653,7 @@ isa = XCBuildConfiguration; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "-"; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; @@ -1749,11 +2679,12 @@ COMBINE_HIDPI_IMAGES = YES; DEBUG_INFORMATION_FORMAT = dwarf; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = CoreStore/Info.plist; + INFOPLIST_FILE = CoreStoreTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.CoreStore; PRODUCT_NAME = CoreStoreTests; SDKROOT = macosx; + SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; @@ -1767,17 +2698,19 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = CoreStore/Info.plist; + INFOPLIST_FILE = CoreStoreTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.CoreStore; PRODUCT_NAME = CoreStoreTests; SDKROOT = macosx; + SWIFT_OBJC_BRIDGING_HEADER = "CoreStoreTests/CoreStoreTests-Bridging-Header.h"; }; name = Release; }; B56321751BD65082006C9394 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1788,6 +2721,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; SDKROOT = watchos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = 4; }; name = Debug; @@ -1795,6 +2729,7 @@ B56321761BD65082006C9394 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_MODULES = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; @@ -1818,6 +2753,11 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "USE_FRAMEWORKS=0", + "SWIFT_OBJC_INTERFACE_HEADER_NAME=<$(SWIFT_MODULE_NAME)/$(SWIFT_OBJC_INTERFACE_HEADER_NAME)>", + ); INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -1825,6 +2765,7 @@ PRODUCT_NAME = CoreStore_iOS7; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; }; @@ -1836,6 +2777,10 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USE_FRAMEWORKS=0", + "SWIFT_OBJC_INTERFACE_HEADER_NAME=<$(SWIFT_MODULE_NAME)/$(SWIFT_OBJC_INTERFACE_HEADER_NAME)>", + ); INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; diff --git a/CoreStore.xcodeproj/xcshareddata/xcschemes/CoreStore iOS.xcscheme b/CoreStore.xcodeproj/xcshareddata/xcschemes/CoreStore iOS.xcscheme index aa7e152..e7ae642 100644 --- a/CoreStore.xcodeproj/xcshareddata/xcschemes/CoreStore iOS.xcscheme +++ b/CoreStore.xcodeproj/xcshareddata/xcschemes/CoreStore iOS.xcscheme @@ -11,7 +11,8 @@ buildForRunning = "YES" buildForProfiling = "YES" buildForArchiving = "YES" - buildForAnalyzing = "YES"> + buildForAnalyzing = "YES" + hideIssues = "NO"> + buildForAnalyzing = "NO" + hideIssues = "NO"> (key: UnsafePointer, inObject object: AnyObject) -> T? { - - switch objc_getAssociatedObject(object, key) { - - case let associatedObject as T: - return associatedObject - - case let associatedObject as WeakObject: - return associatedObject.object as? T - - default: - return nil - } -} - -internal func setAssociatedRetainedObject(associatedObject: T?, forKey key: UnsafePointer, inObject object: AnyObject) { - - objc_setAssociatedObject(object, key, associatedObject, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) -} - -internal func setAssociatedCopiedObject(associatedObject: T?, forKey key: UnsafePointer, inObject object: AnyObject) { - - objc_setAssociatedObject(object, key, associatedObject, .OBJC_ASSOCIATION_COPY_NONATOMIC) -} - -internal func setAssociatedAssignedObject(associatedObject: T?, forKey key: UnsafePointer, inObject object: AnyObject) { - - objc_setAssociatedObject(object, key, associatedObject, .OBJC_ASSOCIATION_ASSIGN) -} - -internal func setAssociatedWeakObject(associatedObject: T?, forKey key: UnsafePointer, inObject object: AnyObject) { - - if let associatedObject = associatedObject { - - objc_setAssociatedObject(object, key, WeakObject(associatedObject), .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - else { - - objc_setAssociatedObject(object, key, nil, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } -} diff --git a/CoreStore/Internal/NSFileManager+Setup.swift b/CoreStore/Internal/NSFileManager+Setup.swift deleted file mode 100644 index 92d5bb2..0000000 --- a/CoreStore/Internal/NSFileManager+Setup.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// NSFileManager+Setup.swift -// CoreStore -// -// Created by John Rommel Estropia on 2015/07/19. -// Copyright © 2015 John Rommel Estropia. All rights reserved. -// - -import Foundation - - -// MARK: - NSFileManager - -internal extension NSFileManager { - - // MARK: Internal - - internal func removeSQLiteStoreAtURL(fileURL: NSURL) { - - _ = try? self.removeItemAtURL(fileURL) - - let filePath = fileURL.path! - _ = try? self.removeItemAtPath(filePath.stringByAppendingString("-shm")) - _ = try? self.removeItemAtPath(filePath.stringByAppendingString("-wal")) - } -} \ No newline at end of file diff --git a/CoreStore/Internal/NSPersistentStoreCoordinator+Setup.swift b/CoreStore/Internal/NSPersistentStoreCoordinator+Setup.swift deleted file mode 100644 index b316053..0000000 --- a/CoreStore/Internal/NSPersistentStoreCoordinator+Setup.swift +++ /dev/null @@ -1,80 +0,0 @@ -// -// 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/Logging/CoreStoreLogger.swift b/CoreStore/Logging/CoreStoreLogger.swift deleted file mode 100644 index 4898fe3..0000000 --- a/CoreStore/Logging/CoreStoreLogger.swift +++ /dev/null @@ -1,105 +0,0 @@ -// -// CoreStoreLogger.swift -// CoreStore -// -// Copyright © 2015 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: - LogLevel - -/** - The `LogLevel` indicates the severity of a log message. - */ -public enum LogLevel { - - case Trace - case Notice - case Warning - case Fatal -} - - -// MARK: - CoreStoreLogger - -/** - Custom loggers should implement the `CoreStoreLogger` protocol and pass its instance to `CoreStore.logger`. Calls to `log(...)`, `handleError(...)`, and `assert(...)` are not tied to a specific queue/thread, so it is the implementer's job to handle thread-safety. - */ -public protocol CoreStoreLogger { - - /** - Handles log messages sent by the `CoreStore` framework. - - :level: the severity of the log message - :message: the log message - :fileName: the source file name - :lineNumber: the source line number - :functionName: the source function name - */ - func log(level level: LogLevel, message: String, fileName: StaticString, lineNumber: Int, functionName: StaticString) - - /** - Handles errors sent by the `CoreStore` framework. - - :error: the error - :message: the error message - :fileName: the source file name - :lineNumber: the source line number - :functionName: the source function name - */ - func handleError(error error: NSError, message: String, fileName: StaticString, lineNumber: Int, functionName: StaticString) - - /** - Handles assertions made throughout the `CoreStore` framework. - - :condition: the assertion condition - :message: the assertion message - :fileName: the source file name - :lineNumber: the source line number - :functionName: the source function name - */ - func assert(@autoclosure condition: () -> Bool, message: String, fileName: StaticString, lineNumber: Int, functionName: StaticString) -} - - -// MARK: - Utilities - -internal func typeName(value: T) -> String { - - return "'\(String(reflecting: value.dynamicType))'" -} - -internal func typeName(value: T.Type) -> String { - - return "'\(value)'" -} - -internal func typeName(value: AnyClass) -> String { - - return "'\(value)'" -} - -internal func typeName(name: String?) -> String { - - return "<\(name ?? "unknown")>" -} diff --git a/CoreStore/Migrating/CoreStore+Migration.swift b/CoreStore/Migrating/CoreStore+Migration.swift deleted file mode 100644 index f42a03f..0000000 --- a/CoreStore/Migrating/CoreStore+Migration.swift +++ /dev/null @@ -1,152 +0,0 @@ -// -// CoreStore+Migration.swift -// CoreStore -// -// Copyright © 2015 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 USE_FRAMEWORKS - import GCDKit -#endif - - -// MARK: - CoreStore - -public extension CoreStore { - - /** - Asynchronously adds to the `defaultStack` an SQLite store from the given SQLite file name. Note that using `addSQLiteStore(...)` instead of `addSQLiteStoreAndWait(...)` implies that the migrations are allowed and expected (thus the asynchronous `completion`.) - - - parameter fileName: the local filename for the SQLite persistent store in the "Application Support" directory (or the "Caches" directory on tvOS). A new SQLite file will be created if it does not exist. Note that if you have multiple configurations, you will need to specify a different `fileName` explicitly for each of them. - - 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 `fileName` explicitly for each of them. - - parameter mappingModelBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.allBundles()`. - - parameter resetStoreOnModelMismatch: Set to true to delete the store on model mismatch; or set to false to report failure instead. Typically should only be set to true when debugging, or if the persistent store can be recreated easily. If not specified, defaults to false. - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `PersistentStoreResult` argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a `.Failure` result if an error occurs asynchronously. - - returns: an `NSProgress` instance if a migration has started, or `nil` is no migrations are required - */ - public static func addSQLiteStore(fileName fileName: String, configuration: String? = nil, mappingModelBundles: [NSBundle]? = nil, resetStoreOnModelMismatch: Bool = false, completion: (PersistentStoreResult) -> Void) throws -> NSProgress? { - - return try self.defaultStack.addSQLiteStore( - fileName: fileName, - configuration: configuration, - mappingModelBundles: mappingModelBundles, - resetStoreOnModelMismatch: resetStoreOnModelMismatch, - completion: completion - ) - } - - /** - Asynchronously adds to the `defaultStack` an SQLite store from the given SQLite file URL. Note that using `addSQLiteStore(...)` instead of `addSQLiteStoreAndWait(...)` implies that the migrations are allowed and expected (thus the asynchronous `completion`.) - - - parameter fileURL: the local file URL for the SQLite persistent store. A new SQLite file will be created if it does not exist. If not specified, defaults to a file URL pointing to a ".sqlite" file in the "Application Support" directory (or the "Caches" directory on tvOS). Note that if you have multiple configurations, you will need to specify a different `fileURL` explicitly for each of them. - - 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 `fileURL` explicitly for each of them. - - parameter mappingModelBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.allBundles()`. - - parameter resetStoreOnModelMismatch: Set to true to delete the store on model mismatch; or set to false to report failure instead. Typically should only be set to true when debugging, or if the persistent store can be recreated easily. If not specified, defaults to false. - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `PersistentStoreResult` argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a `.Failure` result if an error occurs asynchronously. - - returns: an `NSProgress` instance if a migration has started, or `nil` is no migrations are required - */ - public static func addSQLiteStore(fileURL fileURL: NSURL = defaultSQLiteStoreURL, configuration: String? = nil, mappingModelBundles: [NSBundle]? = NSBundle.allBundles(), resetStoreOnModelMismatch: Bool = false, completion: (PersistentStoreResult) -> Void) throws -> NSProgress? { - - return try self.defaultStack.addSQLiteStore( - fileURL: fileURL, - configuration: configuration, - mappingModelBundles: mappingModelBundles, - resetStoreOnModelMismatch: resetStoreOnModelMismatch, - completion: completion - ) - } - - /** - Using the `defaultStack`, migrates an SQLite store with the specified filename to the `DataStack`'s managed object model version WITHOUT adding the migrated store to the data stack. - - - parameter fileName: the local filename for the SQLite persistent store in the "Application Support" directory (or the "Caches" directory on tvOS). - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to `nil` which indicates the "Default" configuration. - - parameter mappingModelBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.mainBundle()`. - - parameter sourceBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.mainBundle()`. - - returns: an `NSProgress` instance if a migration has started, or `nil` is no migrations are required - */ - public static func upgradeSQLiteStoreIfNeeded(fileName fileName: String, configuration: String? = nil, mappingModelBundles: [NSBundle]? = nil, completion: (MigrationResult) -> Void) throws -> NSProgress? { - - return try self.defaultStack.upgradeSQLiteStoreIfNeeded( - fileName: fileName, - configuration: configuration, - mappingModelBundles: mappingModelBundles, - completion: completion - ) - } - - /** - Using the `defaultStack`, migrates an SQLite store at the specified file URL and configuration name to the `DataStack`'s managed object model version. This method does NOT add the migrated store to the data stack. - - - parameter fileName: the local filename for the SQLite persistent store in the "Application Support" directory (or the "Caches" directory on tvOS). - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to `nil` which indicates the "Default" configuration. - - parameter mappingModelBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.mainBundle()`. - - parameter sourceBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.mainBundle()`. - - returns: an `NSProgress` instance if a migration has started, or `nil` is no migrations are required - */ - public static func upgradeSQLiteStoreIfNeeded(fileURL fileURL: NSURL = defaultSQLiteStoreURL, configuration: String? = nil, mappingModelBundles: [NSBundle]? = nil, completion: (MigrationResult) -> Void) throws -> NSProgress? { - - return try self.defaultStack.upgradeSQLiteStoreIfNeeded( - fileURL: fileURL, - configuration: configuration, - mappingModelBundles: mappingModelBundles, - completion: completion - ) - } - - /** - Using the `defaultStack`, checks for the required migrations needed for the store with the specified filename and configuration to be migrated to the `DataStack`'s managed object model version. This method throws an error if the store does not exist, if inspection of the store failed, or no mapping model was found/inferred. - - - parameter fileName: the local filename for the SQLite persistent store in the "Application Support" directory (or the "Caches" directory on tvOS). - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to `nil` which indicates the "Default" configuration. - - parameter mappingModelBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.allBundles()`. - :return: an array of `MigrationType`s indicating the chain of migrations required for the store; or `nil` if either inspection of the store failed, or no mapping model was found/inferred. `MigrationType` acts as a `Bool` and evaluates to `false` if no migration is required, and `true` if either a lightweight or custom migration is needed. - */ - @warn_unused_result - public static func requiredMigrationsForSQLiteStore(fileName fileName: String, configuration: String? = nil, mappingModelBundles: [NSBundle] = NSBundle.allBundles() as [NSBundle]) throws -> [MigrationType] { - - return try self.defaultStack.requiredMigrationsForSQLiteStore( - fileName: fileName, - configuration: configuration, - mappingModelBundles: mappingModelBundles - ) - } - - /** - Using the `defaultStack`, checks if the store at the specified file URL and configuration needs to be migrated to the `DataStack`'s managed object model version. - - - parameter fileURL: the local file URL for the SQLite persistent store. - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to `nil` which indicates the "Default" configuration. - - parameter mappingModelBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.allBundles()`. - :return: a `MigrationType` indicating the type of migration required for the store; or `nil` if either inspection of the store failed, or no mapping model was found/inferred. `MigrationType` acts as a `Bool` and evaluates to `false` if no migration is required, and `true` if either a lightweight or custom migration is needed. - */ - @warn_unused_result - public static func requiredMigrationsForSQLiteStore(fileURL fileURL: NSURL = defaultSQLiteStoreURL, configuration: String? = nil, mappingModelBundles: [NSBundle] = NSBundle.allBundles() as [NSBundle]) throws -> [MigrationType] { - - return try self.defaultStack.requiredMigrationsForSQLiteStore( - fileURL: fileURL, - configuration: configuration, - mappingModelBundles: mappingModelBundles - ) - } -} diff --git a/CoreStore/Migrating/DataStack+Migration.swift b/CoreStore/Migrating/DataStack+Migration.swift deleted file mode 100644 index 83d5248..0000000 --- a/CoreStore/Migrating/DataStack+Migration.swift +++ /dev/null @@ -1,644 +0,0 @@ -// -// DataStack+Migration.swift -// CoreStore -// -// Copyright © 2015 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 USE_FRAMEWORKS - import GCDKit -#endif - - -// MARK: - DataStack - -public extension DataStack { - - /** - Asynchronously adds an in-memory store to the stack. - - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to `nil`. - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `PersistentStoreResult` argument indicates the result. - */ - public func addInMemoryStore(configuration configuration: String? = nil, completion: (PersistentStoreResult) -> Void) { - - self.coordinator.performAsynchronously { - - do { - - let store = try self.coordinator.addPersistentStoreWithType( - NSInMemoryStoreType, - configuration: configuration, - URL: nil, - options: nil - ) - self.updateMetadataForPersistentStore(store) - - GCDQueue.Main.async { - - completion(PersistentStoreResult(store)) - } - } - catch { - - let storeError = error as NSError - CoreStore.handleError( - storeError, - "Failed to add in-memory \(typeName(NSPersistentStore)) to the stack." - ) - - GCDQueue.Main.async { - - completion(PersistentStoreResult(storeError)) - } - } - } - } - - /** - Asynchronously adds to the stack an SQLite store from the given SQLite file name. Note that using `addSQLiteStore(...)` instead of `addSQLiteStoreAndWait(...)` implies that the migrations are allowed and expected (thus the asynchronous `completion`.) - - - parameter fileName: the local filename for the SQLite persistent store in the "Application Support" directory (or the "Caches" directory on tvOS). A new SQLite file will be created if it does not exist. Note that if you have multiple configurations, you will need to specify a different `fileName` explicitly for each of them. - - 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 `fileName` explicitly for each of them. - - parameter mappingModelBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.allBundles()`. - - parameter resetStoreOnModelMismatch: Set to true to delete the store on model mismatch; or set to false to report failure instead. Typically should only be set to true when debugging, or if the persistent store can be recreated easily. If not specified, defaults to false. - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `PersistentStoreResult` argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a `.Failure` result if an error occurs asynchronously. - - returns: an `NSProgress` instance if a migration has started, or `nil` is no migrations are required - */ - public func addSQLiteStore(fileName fileName: String, configuration: String? = nil, mappingModelBundles: [NSBundle]? = nil, resetStoreOnModelMismatch: Bool = false, completion: (PersistentStoreResult) -> Void) throws -> NSProgress? { - - return try self.addSQLiteStore( - fileURL: defaultDirectory.URLByAppendingPathComponent( - fileName, - isDirectory: false - ), - configuration: configuration, - mappingModelBundles: mappingModelBundles, - resetStoreOnModelMismatch: resetStoreOnModelMismatch, - completion: completion - ) - } - - /** - Asynchronously adds to the stack an SQLite store from the given SQLite file URL. Note that using `addSQLiteStore(...)` instead of `addSQLiteStoreAndWait(...)` implies that the migrations are allowed and expected (thus the asynchronous `completion`.) - - - parameter fileURL: the local file URL for the SQLite persistent store. A new SQLite file will be created if it does not exist. If not specified, defaults to a file URL pointing to a ".sqlite" file in the "Application Support" directory (or the "Caches" directory on tvOS). Note that if you have multiple configurations, you will need to specify a different `fileURL` explicitly for each of them. - - 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 `fileURL` explicitly for each of them. - - parameter mappingModelBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.allBundles()`. - - parameter resetStoreOnModelMismatch: Set to true to delete the store on model mismatch; or set to false to report failure instead. Typically should only be set to true when debugging, or if the persistent store can be recreated easily. If not specified, defaults to false. - - parameter completion: the closure to be executed on the main queue when the process completes, either due to success or failure. The closure's `PersistentStoreResult` argument indicates the result. This closure is NOT executed if an error is thrown, but will be executed with a `.Failure` result if an error occurs asynchronously. - - returns: an `NSProgress` instance if a migration has started, or `nil` is no migrations are required - */ - public func addSQLiteStore(fileURL fileURL: NSURL = defaultSQLiteStoreURL, configuration: String? = nil, mappingModelBundles: [NSBundle]? = NSBundle.allBundles(), resetStoreOnModelMismatch: Bool = false, completion: (PersistentStoreResult) -> Void) throws -> NSProgress? { - - CoreStore.assert( - fileURL.fileURL, - "The specified file URL for the SQLite store is invalid: \"\(fileURL)\"" - ) - - let coordinator = self.coordinator; - if let store = coordinator.persistentStoreForURL(fileURL) { - - guard store.type == NSSQLiteStoreType - && store.configurationName == (configuration ?? Into.defaultConfigurationName) else { - - let error = NSError(coreStoreErrorCode: .DifferentPersistentStoreExistsAtURL) - CoreStore.handleError( - error, - "Failed to add SQLite \(typeName(NSPersistentStore)) at \"\(fileURL)\" because a different \(typeName(NSPersistentStore)) at that URL already exists." - ) - throw error - } - - GCDQueue.Main.async { - - completion(PersistentStoreResult(store)) - } - return nil - } - - let fileManager = NSFileManager.defaultManager() - _ = try? fileManager.createDirectoryAtURL( - fileURL.URLByDeletingLastPathComponent!, - withIntermediateDirectories: true, - attributes: nil - ) - - do { - - let metadata = try NSPersistentStoreCoordinator.metadataForPersistentStoreOfType( - NSSQLiteStoreType, - URL: fileURL, - options: self.optionsForSQLiteStore() - ) - - return self.upgradeSQLiteStoreIfNeeded( - fileURL: fileURL, - metadata: metadata, - configuration: configuration, - mappingModelBundles: mappingModelBundles, - completion: { (result) -> Void in - - if case .Failure(let error) = result { - - if resetStoreOnModelMismatch && error.isCoreDataMigrationError { - - fileManager.removeSQLiteStoreAtURL(fileURL) - do { - - let store = try self.addSQLiteStoreAndWait( - fileURL: fileURL, - configuration: configuration, - resetStoreOnModelMismatch: false - ) - - GCDQueue.Main.async { - - completion(PersistentStoreResult(store)) - } - } - catch { - - completion(PersistentStoreResult(error as NSError)) - } - return - } - - completion(PersistentStoreResult(error)) - return - } - - do { - - let store = try self.addSQLiteStoreAndWait( - fileURL: fileURL, - configuration: configuration, - resetStoreOnModelMismatch: false - ) - - completion(PersistentStoreResult(store)) - } - catch { - - completion(PersistentStoreResult(error as NSError)) - } - } - ) - } - catch let error as NSError - where error.code == NSFileReadNoSuchFileError && error.domain == NSCocoaErrorDomain { - - let store = try self.addSQLiteStoreAndWait( - fileURL: fileURL, - configuration: configuration, - resetStoreOnModelMismatch: false - ) - - GCDQueue.Main.async { - - completion(PersistentStoreResult(store)) - } - return nil - } - catch { - - CoreStore.handleError( - error as NSError, - "Failed to load SQLite \(typeName(NSPersistentStore)) metadata." - ) - throw error - } - } - - /** - Migrates an SQLite store with the specified filename to the `DataStack`'s managed object model version WITHOUT adding the migrated store to the data stack. - - - parameter fileName: the local filename for the SQLite persistent store in the "Application Support" directory (or the "Caches" directory on tvOS). - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to `nil` which indicates the "Default" configuration. - - parameter mappingModelBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.mainBundle()`. - - parameter sourceBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.mainBundle()`. - - returns: an `NSProgress` instance if a migration has started, or `nil` is no migrations are required - */ - public func upgradeSQLiteStoreIfNeeded(fileName fileName: String, configuration: String? = nil, mappingModelBundles: [NSBundle]? = nil, completion: (MigrationResult) -> Void) throws -> NSProgress? { - - return try self.upgradeSQLiteStoreIfNeeded( - fileURL: defaultDirectory.URLByAppendingPathComponent( - fileName, - isDirectory: false - ), - configuration: configuration, - mappingModelBundles: mappingModelBundles, - completion: completion - ) - } - - /** - Migrates an SQLite store at the specified file URL and configuration name to the `DataStack`'s managed object model version. This method does NOT add the migrated store to the data stack. - - - parameter fileName: the local filename for the SQLite persistent store in the "Application Support" directory (or the "Caches" directory on tvOS). - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to `nil` which indicates the "Default" configuration. - - parameter mappingModelBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.mainBundle()`. - - parameter sourceBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.mainBundle()`. - - returns: an `NSProgress` instance if a migration has started, or `nil` is no migrations are required - */ - public func upgradeSQLiteStoreIfNeeded(fileURL fileURL: NSURL = defaultSQLiteStoreURL, configuration: String? = nil, mappingModelBundles: [NSBundle]? = nil, completion: (MigrationResult) -> Void) throws -> NSProgress? { - - let metadata: [String: AnyObject] - do { - - metadata = try NSPersistentStoreCoordinator.metadataForPersistentStoreOfType( - NSSQLiteStoreType, - URL: fileURL, - options: self.optionsForSQLiteStore() - ) - } - catch { - - CoreStore.handleError( - error as NSError, - "Failed to load SQLite \(typeName(NSPersistentStore)) metadata." - ) - throw error - } - - return self.upgradeSQLiteStoreIfNeeded( - fileURL: fileURL, - metadata: metadata, - configuration: configuration, - mappingModelBundles: mappingModelBundles, - completion: completion - ) - } - - /** - Checks for the required migrations needed for the store with the specified filename and configuration to be migrated to the `DataStack`'s managed object model version. This method throws an error if the store does not exist, if inspection of the store failed, or no mapping model was found/inferred. - - - parameter fileName: the local filename for the SQLite persistent store in the "Application Support" directory (or the "Caches" directory on tvOS). - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to `nil` which indicates the "Default" configuration. - - parameter mappingModelBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.allBundles()`. - :return: an array of `MigrationType`s indicating the chain of migrations required for the store; or `nil` if either inspection of the store failed, or no mapping model was found/inferred. `MigrationType` acts as a `Bool` and evaluates to `false` if no migration is required, and `true` if either a lightweight or custom migration is needed. - */ - @warn_unused_result - public func requiredMigrationsForSQLiteStore(fileName fileName: String, configuration: String? = nil, mappingModelBundles: [NSBundle] = NSBundle.allBundles() as [NSBundle]) throws -> [MigrationType] { - - return try requiredMigrationsForSQLiteStore( - fileURL: defaultDirectory.URLByAppendingPathComponent( - fileName, - isDirectory: false - ), - configuration: configuration, - mappingModelBundles: mappingModelBundles - ) - } - - /** - Checks if the store at the specified file URL and configuration needs to be migrated to the `DataStack`'s managed object model version. - - - parameter fileURL: the local file URL for the SQLite persistent store. - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to `nil` which indicates the "Default" configuration. - - parameter mappingModelBundles: an optional array of bundles to search mapping model files from. If not set, defaults to the `NSBundle.allBundles()`. - :return: a `MigrationType` indicating the type of migration required for the store; or `nil` if either inspection of the store failed, or no mapping model was found/inferred. `MigrationType` acts as a `Bool` and evaluates to `false` if no migration is required, and `true` if either a lightweight or custom migration is needed. - */ - @warn_unused_result - public func requiredMigrationsForSQLiteStore(fileURL fileURL: NSURL = defaultSQLiteStoreURL, configuration: String? = nil, mappingModelBundles: [NSBundle] = NSBundle.allBundles() as [NSBundle]) throws -> [MigrationType] { - - let metadata: [String : AnyObject] - do { - - metadata = try NSPersistentStoreCoordinator.metadataForPersistentStoreOfType( - NSSQLiteStoreType, - URL: fileURL, - options: self.optionsForSQLiteStore() - ) - } - catch { - - CoreStore.handleError( - error as NSError, - "Failed to load SQLite \(typeName(NSPersistentStore)) metadata." - ) - throw error - } - - guard let migrationSteps = self.computeMigrationFromStoreMetadata(metadata, configuration: configuration, mappingModelBundles: mappingModelBundles) else { - - let error = NSError(coreStoreErrorCode: .MappingModelNotFound) - CoreStore.handleError( - error, - "Failed to find migration steps from the store at URL \"\(fileURL)\" to version model \"\(self.modelVersion)\"." - ) - throw error - } - - return migrationSteps.map { $0.migrationType } - } - - - // MARK: Private - - private func upgradeSQLiteStoreIfNeeded(fileURL fileURL: NSURL, metadata: [String: AnyObject], configuration: String?, mappingModelBundles: [NSBundle]?, completion: (MigrationResult) -> Void) -> NSProgress? { - - guard let migrationSteps = self.computeMigrationFromStoreMetadata(metadata, configuration: configuration, mappingModelBundles: mappingModelBundles) else { - - CoreStore.handleError( - NSError(coreStoreErrorCode: .MappingModelNotFound), - "Failed to find migration steps from the store at URL \"\(fileURL)\" to version model \"\(model)\"." - ) - - GCDQueue.Main.async { - - completion(MigrationResult(.MappingModelNotFound)) - } - return nil - } - - let numberOfMigrations: Int64 = Int64(migrationSteps.count) - if numberOfMigrations == 0 { - - GCDQueue.Main.async { - - completion(MigrationResult([])) - return - } - return nil - } - - let migrationTypes = migrationSteps.map { $0.migrationType } - var migrationResult: MigrationResult? - var operations = [NSOperation]() - var cancelled = false - - let progress = NSProgress(parent: nil, userInfo: nil) - progress.totalUnitCount = numberOfMigrations - - // todo nsprogress crashing sometimes - for (sourceModel, destinationModel, mappingModel, _) in migrationSteps { - - progress.becomeCurrentWithPendingUnitCount(1) - - let childProgress = NSProgress(parent: progress, userInfo: nil) - childProgress.totalUnitCount = 100 - - operations.append( - NSBlockOperation { [weak self] in - - guard let strongSelf = self where !cancelled else { - - return - } - - autoreleasepool { - - do { - - try strongSelf.startMigrationForSQLiteStore( - fileURL: fileURL, - sourceModel: sourceModel, - destinationModel: destinationModel, - mappingModel: mappingModel, - progress: childProgress - ) - } - catch { - - migrationResult = MigrationResult(error as NSError) - cancelled = true - } - } - - GCDQueue.Main.async { - - withExtendedLifetime(childProgress) { (_: NSProgress) -> Void in } - return - } - } - ) - - progress.resignCurrent() - } - - let migrationOperation = NSBlockOperation() - #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 - - GCDQueue.Main.async { - - progress.setProgressHandler(nil) - completion(migrationResult ?? MigrationResult(migrationTypes)) - return - } - } - - operations.append(migrationOperation) - - self.migrationQueue.addOperations(operations, waitUntilFinished: false) - - return progress - } - - private func computeMigrationFromStoreMetadata(metadata: [String: AnyObject], configuration: String? = nil, mappingModelBundles: [NSBundle]? = nil) -> [(sourceModel: NSManagedObjectModel, destinationModel: NSManagedObjectModel, mappingModel: NSMappingModel, migrationType: MigrationType)]? { - - let model = self.model - if model.isConfiguration(configuration, compatibleWithStoreMetadata: metadata) { - - return [] - } - - guard let initialModel = model[metadata], - var currentVersion = initialModel.currentModelVersion else { - - return nil - } - - let migrationChain: MigrationChain = self.migrationChain.empty - ? [currentVersion: model.currentModelVersion!] - : self.migrationChain - - var migrationSteps = [(sourceModel: NSManagedObjectModel, destinationModel: NSManagedObjectModel, mappingModel: NSMappingModel, migrationType: MigrationType)]() - - while let nextVersion = migrationChain.nextVersionFrom(currentVersion), - let sourceModel = model[currentVersion], - let destinationModel = model[nextVersion] where sourceModel != model { - - if let mappingModel = NSMappingModel( - fromBundles: mappingModelBundles, - forSourceModel: sourceModel, - destinationModel: destinationModel) { - - migrationSteps.append( - ( - sourceModel: sourceModel, - destinationModel: destinationModel, - mappingModel: mappingModel, - migrationType: .Heavyweight( - sourceVersion: currentVersion, - destinationVersion: nextVersion - ) - ) - ) - } - else { - - do { - - let mappingModel = try NSMappingModel.inferredMappingModelForSourceModel( - sourceModel, - destinationModel: destinationModel - ) - - migrationSteps.append( - ( - sourceModel: sourceModel, - destinationModel: destinationModel, - mappingModel: mappingModel, - migrationType: .Lightweight( - sourceVersion: currentVersion, - destinationVersion: nextVersion - ) - ) - ) - } - catch { - - return nil - } - } - currentVersion = nextVersion - } - - if migrationSteps.last?.destinationModel == model { - - return migrationSteps - } - - return nil - } - - private func startMigrationForSQLiteStore(fileURL fileURL: NSURL, sourceModel: NSManagedObjectModel, destinationModel: NSManagedObjectModel, mappingModel: NSMappingModel, progress: NSProgress) throws { - - autoreleasepool { - - let journalUpdatingCoordinator = NSPersistentStoreCoordinator(managedObjectModel: sourceModel) - let store = try! journalUpdatingCoordinator.addPersistentStoreWithType( - NSSQLiteStoreType, - configuration: nil, - URL: fileURL, - options: [NSSQLitePragmasOption: ["journal_mode": "DELETE"]] - ) - try! journalUpdatingCoordinator.removePersistentStore(store) - } - - let migrationManager = MigrationManager( - sourceModel: sourceModel, - destinationModel: destinationModel, - progress: progress - ) - - let temporaryDirectoryURL = NSURL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true).URLByAppendingPathComponent(NSProcessInfo().globallyUniqueString) - - let fileManager = NSFileManager.defaultManager() - try! fileManager.createDirectoryAtURL( - temporaryDirectoryURL, - withIntermediateDirectories: true, - attributes: nil - ) - - let temporaryFileURL = temporaryDirectoryURL.URLByAppendingPathComponent(fileURL.lastPathComponent!, isDirectory: false) - - do { - - try migrationManager.migrateStoreFromURL( - fileURL, - type: NSSQLiteStoreType, - options: nil, - withMappingModel: mappingModel, - toDestinationURL: temporaryFileURL, - destinationType: NSSQLiteStoreType, - destinationOptions: nil - ) - } - catch { - - do { - - try fileManager.removeItemAtURL(temporaryDirectoryURL) - } - catch _ { } - - let sourceVersion = migrationManager.sourceModel.currentModelVersion ?? "???" - let destinationVersion = migrationManager.destinationModel.currentModelVersion ?? "???" - CoreStore.handleError( - error as NSError, - "Failed to migrate from version model \"\(sourceVersion)\" to version model \"\(destinationVersion)\"." - ) - - throw error - } - - do { - - try fileManager.replaceItemAtURL( - fileURL, - withItemAtURL: temporaryFileURL, - backupItemName: nil, - options: [], - resultingItemURL: nil - ) - - progress.completedUnitCount = progress.totalUnitCount - - do { - - try fileManager.removeItemAtPath(fileURL.path! + "-shm") - } - catch _ { } - } - catch { - - do { - - try fileManager.removeItemAtURL(temporaryDirectoryURL) - } - catch _ { } - - let sourceVersion = migrationManager.sourceModel.currentModelVersion ?? "???" - let destinationVersion = migrationManager.destinationModel.currentModelVersion ?? "???" - CoreStore.handleError( - error as NSError, - "Failed to save store after migrating from version model \"\(sourceVersion)\" to version model \"\(destinationVersion)\"." - ) - - throw error - } - } -} diff --git a/CoreStore/NSError+CoreStore.swift b/CoreStore/NSError+CoreStore.swift deleted file mode 100644 index d32a995..0000000 --- a/CoreStore/NSError+CoreStore.swift +++ /dev/null @@ -1,102 +0,0 @@ -// -// NSError+CoreStore.swift -// CoreStore -// -// Copyright © 2014 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: - CoreStoreError - -/** - The `NSError` error domain for `CoreStore`. - */ -public let CoreStoreErrorDomain = "com.corestore.error" - -/** - The `NSError` error codes for `CoreStoreErrorDomain`. - */ -public enum CoreStoreErrorCode: Int { - - /** - A failure occured because of an unknown error. - */ - case UnknownError - - /** - The `NSPersistentStore` could note be initialized because another store existed at the specified `NSURL`. - */ - case DifferentPersistentStoreExistsAtURL - - /** - The `NSPersistentStore` specified could not be found. - */ - case PersistentStoreNotFound - - /** - An `NSMappingModel` could not be found for a specific source and destination model versions. - */ - case MappingModelNotFound -} - - -// MARK: - NSError - -public extension NSError { - - /** - If the error's domain is equal to `CoreStoreErrorDomain`, returns the associated `CoreStoreErrorCode`. For other domains, returns `nil`. - */ - public var coreStoreErrorCode: CoreStoreErrorCode? { - - return (self.domain == CoreStoreErrorDomain - ? CoreStoreErrorCode(rawValue: self.code) - : nil) - } - - - // MARK: Internal - - internal convenience init(coreStoreErrorCode: CoreStoreErrorCode) { - - self.init(coreStoreErrorCode: coreStoreErrorCode, userInfo: nil) - } - - internal convenience init(coreStoreErrorCode: CoreStoreErrorCode, userInfo: [NSObject: AnyObject]?) { - - self.init( - domain: CoreStoreErrorDomain, - code: coreStoreErrorCode.rawValue, - userInfo: userInfo) - } - - internal var isCoreDataMigrationError: Bool { - - let code = self.code - return (code == NSPersistentStoreIncompatibleVersionHashError - || code == NSMigrationMissingSourceModelError - || code == NSMigrationError) - && self.domain == NSCocoaErrorDomain - } -} diff --git a/CoreStore/Setting Up/CoreStore+Setup.swift b/CoreStore/Setting Up/CoreStore+Setup.swift deleted file mode 100644 index 2ebdd44..0000000 --- a/CoreStore/Setting Up/CoreStore+Setup.swift +++ /dev/null @@ -1,105 +0,0 @@ -// -// CoreStore+Setup.swift -// CoreStore -// -// Copyright © 2015 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 USE_FRAMEWORKS - import GCDKit -#endif - - -// MARK: - CoreStore - -public extension CoreStore { - - /** - Returns the `defaultStack`'s model version. The version string is the same as the name of the version-specific .xcdatamodeld file. - */ - public static var modelVersion: String { - - return self.defaultStack.modelVersion - } - - /** - Returns the entity name-to-class type mapping from the `defaultStack`'s model. - */ - public static var entityTypesByName: [String: NSManagedObject.Type] { - - return self.defaultStack.entityTypesByName - } - - /** - Returns the `NSEntityDescription` for the specified `NSManagedObject` subclass from `defaultStack`'s model. - */ - public static func entityDescriptionForType(type: NSManagedObject.Type) -> NSEntityDescription? { - - return self.defaultStack.entityDescriptionForType(type) - } - - /** - Adds an in-memory store to the `defaultStack`. - - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to `nil`. - - returns: the `NSPersistentStore` added to the stack. - */ - public static func addInMemoryStoreAndWait(configuration configuration: String? = nil) throws -> NSPersistentStore { - - return try self.defaultStack.addInMemoryStoreAndWait(configuration: configuration) - } - - /** - Adds to the `defaultStack` an SQLite store from the given SQLite file name. - - - parameter fileName: the local filename for the SQLite persistent store in the "Application Support" directory (or the "Caches" directory on tvOS). A new SQLite file will be created if it does not exist. - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to nil. - - parameter resetStoreOnModelMismatch: Set to true to delete the store on model mismatch; or set to false to throw exceptions on failure instead. Typically should only be set to true when debugging, or if the persistent store can be recreated easily. If not specified, defaults to false - - returns: the `NSPersistentStore` added to the stack. - */ - public static func addSQLiteStoreAndWait(fileName fileName: String, configuration: String? = nil, resetStoreOnModelMismatch: Bool = false) throws -> NSPersistentStore { - - return try self.defaultStack.addSQLiteStoreAndWait( - fileName: fileName, - configuration: configuration, - resetStoreOnModelMismatch: resetStoreOnModelMismatch - ) - } - - /** - Adds to the `defaultStack` an SQLite store from the given SQLite file URL. - - - parameter fileURL: the local file URL for the SQLite persistent store. A new SQLite file will be created if it does not exist. If not specified, defaults to a file URL pointing to a ".sqlite" file in the "Application Support" directory (or the "Caches" directory on tvOS). - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to nil. - - parameter resetStoreOnModelMismatch: Set to true to delete the store on model mismatch; or set to false to throw exceptions on failure instead. Typically should only be set to true when debugging, or if the persistent store can be recreated easily. If not specified, defaults to false. - - returns: the `NSPersistentStore` added to the stack. - */ - public static func addSQLiteStoreAndWait(fileURL: NSURL = defaultSQLiteStoreURL, configuration: String? = nil, resetStoreOnModelMismatch: Bool = false) throws -> NSPersistentStore { - - return try self.defaultStack.addSQLiteStoreAndWait( - fileURL: fileURL, - configuration: configuration, - resetStoreOnModelMismatch: resetStoreOnModelMismatch - ) - } -} diff --git a/CoreStore/Setting Up/DataStack.swift b/CoreStore/Setting Up/DataStack.swift deleted file mode 100644 index 0b1ba57..0000000 --- a/CoreStore/Setting Up/DataStack.swift +++ /dev/null @@ -1,414 +0,0 @@ -// -// DataStack.swift -// CoreStore -// -// Copyright © 2014 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 USE_FRAMEWORKS - import GCDKit -#endif - - -#if os(tvOS) - internal let deviceDirectorySearchPath = NSSearchPathDirectory.CachesDirectory -#else - internal let deviceDirectorySearchPath = NSSearchPathDirectory.ApplicationSupportDirectory -#endif - -internal let defaultDirectory = NSFileManager.defaultManager().URLsForDirectory(deviceDirectorySearchPath, inDomains: .UserDomainMask).first! - -internal let applicationName = (NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName") as? String) ?? "CoreData" - -internal let defaultSQLiteStoreURL = defaultDirectory.URLByAppendingPathComponent(applicationName, isDirectory: false).URLByAppendingPathExtension("sqlite") - - -// MARK: - DataStack - -/** - The `DataStack` encapsulates the data model for the Core Data stack. Each `DataStack` can have multiple data stores, usually specified as a "Configuration" in the model editor. Behind the scenes, the DataStack manages its own `NSPersistentStoreCoordinator`, a root `NSManagedObjectContext` for disk saves, and a shared `NSManagedObjectContext` designed as a read-only model interface for `NSManagedObjects`. - */ -public final class DataStack { - - /** - Initializes a `DataStack` from an `NSManagedObjectModel`. - - - parameter modelName: the name of the (.xcdatamodeld) model file. If not specified, the application name will be used. - - parameter bundle: an optional bundle to load models from. If not specified, the main bundle will be used. - - parameter migrationChain: the `MigrationChain` that indicates the sequence of model versions to be used as the order for progressive migrations. If not specified, will default to a non-migrating data stack. - */ - public required init(modelName: String = applicationName, bundle: NSBundle = NSBundle.mainBundle(), migrationChain: MigrationChain = nil) { - - CoreStore.assert( - migrationChain.valid, - "Invalid migration chain passed to the \(typeName(DataStack)). Check that the model versions' order is correct and that no repetitions or ambiguities exist." - ) - - let model = NSManagedObjectModel.fromBundle( - bundle, - modelName: modelName, - modelVersionHints: migrationChain.leafVersions - ) - - self.coordinator = NSPersistentStoreCoordinator(managedObjectModel: model) - self.rootSavingContext = NSManagedObjectContext.rootSavingContextForCoordinator(self.coordinator) - self.mainContext = NSManagedObjectContext.mainContextForRootContext(self.rootSavingContext) - self.model = model - self.migrationChain = migrationChain - - self.rootSavingContext.parentStack = self - } - - /** - Returns the `DataStack`'s model version. The version string is the same as the name of the version-specific .xcdatamodeld file. - */ - public var modelVersion: String { - - return self.model.currentModelVersion! - } - - /** - Returns the entity name-to-class type mapping from the `DataStack`'s model. - */ - public var entityTypesByName: [String: NSManagedObject.Type] { - - return self.model.entityTypesMapping() - } - - /** - Returns the `NSEntityDescription` for the specified `NSManagedObject` subclass. - */ - public func entityDescriptionForType(type: NSManagedObject.Type) -> NSEntityDescription? { - - return NSEntityDescription.entityForName( - self.model.entityNameForClass(type), - inManagedObjectContext: self.mainContext - ) - } - - /** - Returns the `NSManagedObjectID` for the specified object URI if it exists in the persistent store. - */ - public func objectIDForURIRepresentation(url: NSURL) -> NSManagedObjectID? { - - return self.coordinator.managedObjectIDForURIRepresentation(url) - } - - /** - Adds an in-memory store to the stack. - - - parameter configuration: an optional configuration name from the model file. If not specified, defaults to `nil`. - - returns: the `NSPersistentStore` added to the stack. - */ - public func addInMemoryStoreAndWait(configuration configuration: String? = nil) throws -> NSPersistentStore { - - let coordinator = self.coordinator; - - var store: NSPersistentStore? - var storeError: NSError? - coordinator.performSynchronously { - - do { - - store = try coordinator.addPersistentStoreWithType( - NSInMemoryStoreType, - configuration: configuration, - URL: nil, - options: nil - ) - } - catch { - - storeError = error as NSError - } - } - - if let store = store { - - self.updateMetadataForPersistentStore(store) - return store - } - - let error = storeError ?? NSError(coreStoreErrorCode: .UnknownError) - CoreStore.handleError( - error, - "Failed to add in-memory \(typeName(NSPersistentStore)) to the stack." - ) - throw error - } - - /** - Adds to the stack an SQLite store from the given SQLite file name. - - - parameter fileName: the local filename for the SQLite persistent store in the "Application Support" directory (or the "Caches" directory on tvOS). A new SQLite file will be created if it does not exist. Note that if you have multiple configurations, you will need to specify a different `fileName` explicitly for each of them. - - 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 `fileName` explicitly for each of them. - - parameter resetStoreOnModelMismatch: Set to true to delete the store on model mismatch; or set to false to throw exceptions on failure instead. Typically should only be set to true when debugging, or if the persistent store can be recreated easily. If not specified, defaults to false - - returns: the `NSPersistentStore` added to the stack. - */ - public func addSQLiteStoreAndWait(fileName fileName: String, configuration: String? = nil, resetStoreOnModelMismatch: Bool = false) throws -> NSPersistentStore { - - return try self.addSQLiteStoreAndWait( - fileURL: defaultDirectory.URLByAppendingPathComponent( - fileName, - isDirectory: false - ), - configuration: configuration, - resetStoreOnModelMismatch: resetStoreOnModelMismatch - ) - } - - /** - Adds to the stack an SQLite store from the given SQLite file URL. - - - parameter fileURL: the local file URL for the SQLite persistent store. A new SQLite file will be created if it does not exist. If not specified, defaults to a file URL pointing to a ".sqlite" file in the "Application Support" directory (or the "Caches" directory on tvOS). Note that if you have multiple configurations, you will need to specify a different `fileURL` explicitly for each of them. - - 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 `fileURL` explicitly for each of them. - - parameter resetStoreOnModelMismatch: Set to true to delete the store on model mismatch; or set to false to throw exceptions on failure instead. Typically should only be set to true when debugging, or if the persistent store can be recreated easily. If not specified, defaults to false. - - returns: the `NSPersistentStore` added to the stack. - */ - public func addSQLiteStoreAndWait(fileURL fileURL: NSURL = defaultSQLiteStoreURL, configuration: String? = nil, resetStoreOnModelMismatch: Bool = false) throws -> NSPersistentStore { - - CoreStore.assert( - fileURL.fileURL, - "The specified file URL for the SQLite store is invalid: \"\(fileURL)\"" - ) - - let coordinator = self.coordinator; - if let store = coordinator.persistentStoreForURL(fileURL) { - - guard store.type == NSSQLiteStoreType - && store.configurationName == (configuration ?? Into.defaultConfigurationName) else { - - let error = NSError(coreStoreErrorCode: .DifferentPersistentStoreExistsAtURL) - CoreStore.handleError( - error, - "Failed to add SQLite \(typeName(NSPersistentStore)) at \"\(fileURL)\" because a different \(typeName(NSPersistentStore)) at that URL already exists." - ) - - throw error - } - - return store - } - - let fileManager = NSFileManager.defaultManager() - _ = try? fileManager.createDirectoryAtURL( - fileURL.URLByDeletingLastPathComponent!, - withIntermediateDirectories: true, - attributes: nil - ) - - var store: NSPersistentStore? - var storeError: NSError? - let options = self.optionsForSQLiteStore() - coordinator.performSynchronously { - - do { - - store = try coordinator.addPersistentStoreWithType( - NSSQLiteStoreType, - configuration: configuration, - URL: fileURL, - options: options - ) - } - catch { - - storeError = error as NSError - } - } - - if let store = store { - - self.updateMetadataForPersistentStore(store) - return store - } - - if let error = storeError - where (resetStoreOnModelMismatch && error.isCoreDataMigrationError) { - - fileManager.removeSQLiteStoreAtURL(fileURL) - - var store: NSPersistentStore? - coordinator.performSynchronously { - - do { - - store = try coordinator.addPersistentStoreWithType( - NSSQLiteStoreType, - configuration: configuration, - URL: fileURL, - options: [NSSQLitePragmasOption: ["journal_mode": "WAL"]] - ) - } - catch { - - storeError = error as NSError - } - } - - if let store = store { - - self.updateMetadataForPersistentStore(store) - return store - } - } - - let error = storeError ?? NSError(coreStoreErrorCode: .UnknownError) - CoreStore.handleError( - error, - "Failed to add SQLite \(typeName(NSPersistentStore)) at \"\(fileURL)\"." - ) - throw error - } - - - // MARK: Internal - - internal let coordinator: NSPersistentStoreCoordinator - internal let rootSavingContext: NSManagedObjectContext - internal let mainContext: NSManagedObjectContext - internal let model: NSManagedObjectModel - internal let migrationChain: MigrationChain - internal let childTransactionQueue: GCDQueue = .createSerial("com.coreStore.dataStack.childTransactionQueue") - internal let migrationQueue: NSOperationQueue = { - - let migrationQueue = NSOperationQueue() - migrationQueue.maxConcurrentOperationCount = 1 - migrationQueue.name = "com.coreStore.migrationOperationQueue" - #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 - }() - - internal func optionsForSQLiteStore() -> [String: AnyObject] { - - return [NSSQLitePragmasOption: ["journal_mode": "WAL"]] - } - - internal func entityNameForEntityClass(entityClass: AnyClass) -> String? { - - return self.model.entityNameForClass(entityClass) - } - - internal func persistentStoresForEntityClass(entityClass: AnyClass) -> [NSPersistentStore]? { - - var returnValue: [NSPersistentStore]? = nil - self.storeMetadataUpdateQueue.barrierSync { - - returnValue = self.entityConfigurationsMapping[NSStringFromClass(entityClass)]?.map { - - return self.configurationStoreMapping[$0]! - } ?? [] - } - return returnValue - } - - internal func persistentStoreForEntityClass(entityClass: AnyClass, configuration: String?, inferStoreIfPossible: Bool) -> (store: NSPersistentStore?, isAmbiguous: Bool) { - - var returnValue: (store: NSPersistentStore?, isAmbiguous: Bool) = (store: nil, isAmbiguous: false) - self.storeMetadataUpdateQueue.barrierSync { - - let configurationsForEntity = self.entityConfigurationsMapping[NSStringFromClass(entityClass)] ?? [] - if let configuration = configuration { - - if configurationsForEntity.contains(configuration) { - - returnValue = (store: self.configurationStoreMapping[configuration], isAmbiguous: false) - return - } - else if !inferStoreIfPossible { - - return - } - } - - switch configurationsForEntity.count { - - case 0: - return - - case 1 where inferStoreIfPossible: - returnValue = (store: self.configurationStoreMapping[configurationsForEntity.first!], isAmbiguous: false) - - default: - returnValue = (store: nil, isAmbiguous: true) - } - } - return returnValue - } - - internal func updateMetadataForPersistentStore(persistentStore: NSPersistentStore) { - - self.storeMetadataUpdateQueue.barrierAsync { - - let configurationName = persistentStore.configurationName - self.configurationStoreMapping[configurationName] = persistentStore - for entityDescription in (self.coordinator.managedObjectModel.entitiesForConfiguration(configurationName) ?? []) { - - let managedObjectClassName = entityDescription.managedObjectClassName - CoreStore.assert( - NSClassFromString(managedObjectClassName) != nil, - "The class \(typeName(managedObjectClassName)) for the entity \(typeName(entityDescription.name)) does not exist. Check if the subclass type and module name are properly configured." - ) - - if self.entityConfigurationsMapping[managedObjectClassName] == nil { - - self.entityConfigurationsMapping[managedObjectClassName] = [] - } - self.entityConfigurationsMapping[managedObjectClassName]?.insert(configurationName) - } - } - } - - - // MARK: Private - - private let storeMetadataUpdateQueue = GCDQueue.createConcurrent("com.coreStore.persistentStoreBarrierQueue") - private var configurationStoreMapping = [String: NSPersistentStore]() - private var entityConfigurationsMapping = [String: Set]() - - deinit { - - let coordinator = self.coordinator - coordinator.performAsynchronously { - - withExtendedLifetime(coordinator) { coordinator in - - coordinator.persistentStores.forEach { - - _ = try? coordinator.removePersistentStore($0) - } - } - } - } -} diff --git a/CoreStore/Setting Up/PersistentStoreResult.swift b/CoreStore/Setting Up/PersistentStoreResult.swift deleted file mode 100644 index f37e6f6..0000000 --- a/CoreStore/Setting Up/PersistentStoreResult.swift +++ /dev/null @@ -1,106 +0,0 @@ -// -// PersistentStoreResult.swift -// CoreStore -// -// Copyright © 2014 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: - PersistentStoreResult - -/** - The `PersistentStoreResult` indicates the result of an asynchronous initialization of a persistent store. - The `PersistentStoreResult` can be treated as a boolean: - ``` - try! CoreStore.addSQLiteStore(completion: { (result: PersistentStoreResult) -> Void in - if result { - // succeeded - } - else { - // failed - } - }) - ``` - or as an `enum`, where the resulting associated object can also be inspected: - ``` - try! CoreStore.addSQLiteStore(completion: { (result: PersistentStoreResult) -> Void in - switch result { - case .Success(let persistentStore): - // persistentStore is the related NSPersistentStore instance - case .Failure(let error): - // error is the NSError instance for the failure - } - }) - ``` - */ -public enum PersistentStoreResult { - - /** - `PersistentStoreResult.Success` indicates that the persistent store process succeeded. The associated object for this `enum` value is the related `NSPersistentStore` instance. - */ - case Success(NSPersistentStore) - - /** - `PersistentStoreResult.Failure` indicates that the persistent store process failed. The associated object for this value is the related `NSError` instance. - */ - case Failure(NSError) - - - // MARK: Internal - - internal init(_ store: NSPersistentStore) { - - self = .Success(store) - } - - internal init(_ error: NSError) { - - self = .Failure(error) - } - - internal init(_ errorCode: CoreStoreErrorCode) { - - self.init(errorCode, userInfo: nil) - } - - internal init(_ errorCode: CoreStoreErrorCode, userInfo: [NSObject: AnyObject]?) { - - self.init(NSError(coreStoreErrorCode: errorCode, userInfo: userInfo)) - } -} - - -// MARK: - PersistentStoreResult: BooleanType - -extension PersistentStoreResult: BooleanType { - - public var boolValue: Bool { - - switch self { - - case .Success: return true - case .Failure: return false - } - } -} diff --git a/CoreStoreDemo/CoreStoreDemo.xcodeproj/project.pbxproj b/CoreStoreDemo/CoreStoreDemo.xcodeproj/project.pbxproj index 73de165..48e8c9e 100644 --- a/CoreStoreDemo/CoreStoreDemo.xcodeproj/project.pbxproj +++ b/CoreStoreDemo/CoreStoreDemo.xcodeproj/project.pbxproj @@ -459,7 +459,7 @@ INFOPLIST_FILE = CoreStoreDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.CoreStoreDemo; + PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.corestore.demo; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -471,7 +471,7 @@ INFOPLIST_FILE = CoreStoreDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.CoreStoreDemo; + PRODUCT_BUNDLE_IDENTIFIER = com.johnestropia.corestore.demo; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/CoreStoreDemo/CoreStoreDemo/AppDelegate.swift b/CoreStoreDemo/CoreStoreDemo/AppDelegate.swift index 2f54f30..cae2352 100644 --- a/CoreStoreDemo/CoreStoreDemo/AppDelegate.swift +++ b/CoreStoreDemo/CoreStoreDemo/AppDelegate.swift @@ -21,6 +21,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { application.statusBarStyle = .LightContent + return true } } diff --git a/CoreStoreDemo/CoreStoreDemo/Base.lproj/LaunchScreen.xib b/CoreStoreDemo/CoreStoreDemo/Base.lproj/LaunchScreen.xib index c3e905c..8286b32 100644 --- a/CoreStoreDemo/CoreStoreDemo/Base.lproj/LaunchScreen.xib +++ b/CoreStoreDemo/CoreStoreDemo/Base.lproj/LaunchScreen.xib @@ -1,7 +1,8 @@ - + - + + @@ -11,14 +12,17 @@ - - + + + + + + diff --git a/CoreStoreDemo/CoreStoreDemo/Base.lproj/LaunchScreen.xib.orig b/CoreStoreDemo/CoreStoreDemo/Base.lproj/LaunchScreen.xib.orig new file mode 100644 index 0000000..5948784 --- /dev/null +++ b/CoreStoreDemo/CoreStoreDemo/Base.lproj/LaunchScreen.xib.orig @@ -0,0 +1,53 @@ + +<<<<<<< Updated upstream + + + +======= + + + + +>>>>>>> Stashed changes + + + + + + + + + +<<<<<<< Updated upstream + + + + + + + + + + + + + + + + diff --git a/CoreStoreDemo/CoreStoreDemo/Base.lproj/Main.storyboard b/CoreStoreDemo/CoreStoreDemo/Base.lproj/Main.storyboard index 1a2c4ed..38842c2 100644 --- a/CoreStoreDemo/CoreStoreDemo/Base.lproj/Main.storyboard +++ b/CoreStoreDemo/CoreStoreDemo/Base.lproj/Main.storyboard @@ -1,8 +1,8 @@ - + - + @@ -297,7 +297,7 @@