diff --git a/.gitmodules b/.gitmodules index fcf3fe65..e69de29b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "Config"] - path = Config - url = https://github.com/jspahrsummers/xcconfigs.git diff --git a/Assets/Banner.png b/Assets/Banner.png deleted file mode 100644 index f9f465b9..00000000 Binary files a/Assets/Banner.png and /dev/null differ diff --git a/Assets/Caramba.png b/Assets/Caramba.png deleted file mode 100644 index c119bb5b..00000000 Binary files a/Assets/Caramba.png and /dev/null differ diff --git a/Assets/Icon.png b/Assets/Icon.png deleted file mode 100755 index e0974621..00000000 Binary files a/Assets/Icon.png and /dev/null differ diff --git a/Assets/Scheme.sketch b/Assets/Scheme.sketch deleted file mode 100644 index cf97bd04..00000000 Binary files a/Assets/Scheme.sketch and /dev/null differ diff --git a/Assets/Slogan.png b/Assets/Slogan.png deleted file mode 100755 index 609471d5..00000000 Binary files a/Assets/Slogan.png and /dev/null differ diff --git a/Brewfile b/Brewfile deleted file mode 100644 index b664710c..00000000 --- a/Brewfile +++ /dev/null @@ -1,2 +0,0 @@ -brew "carthage" -brew "tailor" diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 1574d001..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,68 +0,0 @@ -## Changelog - -### 3.0.0-alpha.1 -- Swift 3.0 support. -- Swift 2.3 support dropped. -- Carthage support. - -### 2.3.0 -- Add Danger. -- Remove Carthage support. -- Bump Realm version to 1.0.2. -- Update Fastlane setup. - -### Version 2.2.7 -- Add Observable feature https://github.com/pepibumur/SugarRecord/pull/243 -- Fix a CoreDataStorage `journal_mode` property not set properly. - -### Version 2.2.5 -- Updated Carthage Quick/Nimble dependencies - -### Version 2.2.4 -- Improve error throwing in operations https://github.com/pepibumur/SugarRecord/issues/222 - -### Version 2.1.6 -- Implemented example project. -- Fixed a bug with the CoreDataDefaultStorage that didn't persist the changes. - -### Version 2.1.4 -- Integrated with Travis-CI - -### Version 2.1.3 -- Added initializer to RealmDefaultStorage that takes a Realm.Configuration as initializer. - -### Version 2.1.2 -- First version giving support to [RxSwift](https://github.com/ReactiveX/RxSwift) -- Fixed broken unit tests after the refactor for Carthage for having `SugarRecordCoreData` and `SugarRecordRealm` - -### Version 2.1.1 -- Added [Realm 0.97](https://realm.io/news/realm-objc-swift-0.97.0/) version. That version includes: - - Support for tvOS. You can use now SugarRecord+Realm with your tvOS. - - Better integration with Carthage. Installing SugarRecord+Realm should be faster now. -- Improved Carthage integration. Now each platform has two schemes, `SugarRecordRealm` & `SugarRecordCoreData`. Drag only the one you need in your app plus Realm in case you are using the Realm integration. - - -### Version 2.1.0 -**Date:** 13th December 2015
-**Changelog** -- Removed `Result` dependency from context methods. Methods `throw` now instead of returning a `Result` object wrapping Error and Values. -- Reviewed the interface of Context to make it similar to [Realm's one](https://realm.io/docs/swift/latest/): `add`, `create`, `new`, `fetch`, `remove`. -- Removed asynchrony from from `operation` methods in storage. Asynchrony has to be handled externally now *(Realm inspired)*. -- Added `LICENSE` file. -- Added `fetch` method to `Storage` using internally the main context for fetching. -- Implemented a **Reactive** API in Storage: -```swift -func rac_operation(operation: (context: Context, save: Saver) -> Void) -> SignalProducer -func rac_backgroundOperation(operation: (context: Context, save: Saver) -> Void) -> SignalProducer -func rac_backgroundFetch(request: Request, mapper: T -> U) -> SignalProducer<[U], Error> -func rac_fetch(request: Request) -> SignalProducer<[T], Error> -``` - -### Version 2.0.0 -**Date:** 8th December 2015
-**Changelog** -- New version with Swift 2.XX support. -- New API. -- Test coverage of core features. -- Realm and CoreData support. -- [Carthage](https://github.com/carthage) and [CocoaPods](https://cocoapods.org) support diff --git a/Carthage.xcodeproj/project.pbxproj b/Carthage.xcodeproj/project.pbxproj deleted file mode 100644 index 77ab451a..00000000 --- a/Carthage.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1148 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 237FBA2C1D9C0AD000D87AA3 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA171D9C0AD000D87AA3 /* Request.swift */; }; - 237FBA2E1D9C0AD000D87AA3 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA171D9C0AD000D87AA3 /* Request.swift */; }; - 237FBA301D9C0AD000D87AA3 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA171D9C0AD000D87AA3 /* Request.swift */; }; - 237FBA321D9C0AD000D87AA3 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA171D9C0AD000D87AA3 /* Request.swift */; }; - 237FBA341D9C0AD000D87AA3 /* RequestObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA181D9C0AD000D87AA3 /* RequestObservable.swift */; }; - 237FBA361D9C0AD000D87AA3 /* RequestObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA181D9C0AD000D87AA3 /* RequestObservable.swift */; }; - 237FBA381D9C0AD000D87AA3 /* RequestObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA181D9C0AD000D87AA3 /* RequestObservable.swift */; }; - 237FBA3A1D9C0AD000D87AA3 /* RequestObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA181D9C0AD000D87AA3 /* RequestObservable.swift */; }; - 237FBA3C1D9C0AD000D87AA3 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA191D9C0AD000D87AA3 /* Storage.swift */; }; - 237FBA3E1D9C0AD000D87AA3 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA191D9C0AD000D87AA3 /* Storage.swift */; }; - 237FBA401D9C0AD000D87AA3 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA191D9C0AD000D87AA3 /* Storage.swift */; }; - 237FBA421D9C0AD000D87AA3 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA191D9C0AD000D87AA3 /* Storage.swift */; }; - 237FBA441D9C0AD000D87AA3 /* StorageError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA1B1D9C0AD000D87AA3 /* StorageError.swift */; }; - 237FBA461D9C0AD000D87AA3 /* StorageError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA1B1D9C0AD000D87AA3 /* StorageError.swift */; }; - 237FBA481D9C0AD000D87AA3 /* StorageError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA1B1D9C0AD000D87AA3 /* StorageError.swift */; }; - 237FBA4A1D9C0AD000D87AA3 /* StorageError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA1B1D9C0AD000D87AA3 /* StorageError.swift */; }; - 237FBA4C1D9C0AD000D87AA3 /* RequestExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA1D1D9C0AD000D87AA3 /* RequestExtension.swift */; }; - 237FBA4E1D9C0AD000D87AA3 /* RequestExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA1D1D9C0AD000D87AA3 /* RequestExtension.swift */; }; - 237FBA501D9C0AD000D87AA3 /* RequestExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA1D1D9C0AD000D87AA3 /* RequestExtension.swift */; }; - 237FBA521D9C0AD000D87AA3 /* RequestExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA1D1D9C0AD000D87AA3 /* RequestExtension.swift */; }; - 237FBA541D9C0AD000D87AA3 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA1F1D9C0AD000D87AA3 /* Logger.swift */; }; - 237FBA561D9C0AD000D87AA3 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA1F1D9C0AD000D87AA3 /* Logger.swift */; }; - 237FBA581D9C0AD000D87AA3 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA1F1D9C0AD000D87AA3 /* Logger.swift */; }; - 237FBA5A1D9C0AD000D87AA3 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA1F1D9C0AD000D87AA3 /* Logger.swift */; }; - 237FBA5C1D9C0AD000D87AA3 /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA211D9C0AD000D87AA3 /* Context.swift */; }; - 237FBA5E1D9C0AD000D87AA3 /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA211D9C0AD000D87AA3 /* Context.swift */; }; - 237FBA601D9C0AD000D87AA3 /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA211D9C0AD000D87AA3 /* Context.swift */; }; - 237FBA621D9C0AD000D87AA3 /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA211D9C0AD000D87AA3 /* Context.swift */; }; - 237FBA641D9C0AD000D87AA3 /* Entity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA221D9C0AD000D87AA3 /* Entity.swift */; }; - 237FBA661D9C0AD000D87AA3 /* Entity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA221D9C0AD000D87AA3 /* Entity.swift */; }; - 237FBA681D9C0AD000D87AA3 /* Entity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA221D9C0AD000D87AA3 /* Entity.swift */; }; - 237FBA6A1D9C0AD000D87AA3 /* Entity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA221D9C0AD000D87AA3 /* Entity.swift */; }; - 237FBA6C1D9C0AD000D87AA3 /* NSPredicateConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA231D9C0AD000D87AA3 /* NSPredicateConvertible.swift */; }; - 237FBA6E1D9C0AD000D87AA3 /* NSPredicateConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA231D9C0AD000D87AA3 /* NSPredicateConvertible.swift */; }; - 237FBA701D9C0AD000D87AA3 /* NSPredicateConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA231D9C0AD000D87AA3 /* NSPredicateConvertible.swift */; }; - 237FBA721D9C0AD000D87AA3 /* NSPredicateConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA231D9C0AD000D87AA3 /* NSPredicateConvertible.swift */; }; - 237FBA741D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA241D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift */; }; - 237FBA761D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA241D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift */; }; - 237FBA781D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA241D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift */; }; - 237FBA7A1D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA241D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift */; }; - 237FBA7C1D9C0AD000D87AA3 /* Requestable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA251D9C0AD000D87AA3 /* Requestable.swift */; }; - 237FBA7E1D9C0AD000D87AA3 /* Requestable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA251D9C0AD000D87AA3 /* Requestable.swift */; }; - 237FBA801D9C0AD000D87AA3 /* Requestable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA251D9C0AD000D87AA3 /* Requestable.swift */; }; - 237FBA821D9C0AD000D87AA3 /* Requestable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA251D9C0AD000D87AA3 /* Requestable.swift */; }; - 237FBA841D9C0AD000D87AA3 /* DirUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA271D9C0AD000D87AA3 /* DirUtils.swift */; }; - 237FBA861D9C0AD000D87AA3 /* DirUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA271D9C0AD000D87AA3 /* DirUtils.swift */; }; - 237FBA881D9C0AD000D87AA3 /* DirUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA271D9C0AD000D87AA3 /* DirUtils.swift */; }; - 237FBA8A1D9C0AD000D87AA3 /* DirUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA271D9C0AD000D87AA3 /* DirUtils.swift */; }; - 237FBA8C1D9C0AD000D87AA3 /* VersionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA291D9C0AD000D87AA3 /* VersionController.swift */; }; - 237FBA8E1D9C0AD000D87AA3 /* VersionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA291D9C0AD000D87AA3 /* VersionController.swift */; }; - 237FBA901D9C0AD000D87AA3 /* VersionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA291D9C0AD000D87AA3 /* VersionController.swift */; }; - 237FBA921D9C0AD000D87AA3 /* VersionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA291D9C0AD000D87AA3 /* VersionController.swift */; }; - 237FBA941D9C0AD000D87AA3 /* VersionProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA2A1D9C0AD000D87AA3 /* VersionProvider.swift */; }; - 237FBA961D9C0AD000D87AA3 /* VersionProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA2A1D9C0AD000D87AA3 /* VersionProvider.swift */; }; - 237FBA981D9C0AD000D87AA3 /* VersionProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA2A1D9C0AD000D87AA3 /* VersionProvider.swift */; }; - 237FBA9A1D9C0AD000D87AA3 /* VersionProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA2A1D9C0AD000D87AA3 /* VersionProvider.swift */; }; - 237FBAAD1D9C0ADC00D87AA3 /* CoreDataChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA9D1D9C0ADC00D87AA3 /* CoreDataChange.swift */; }; - 237FBAAE1D9C0ADC00D87AA3 /* CoreDataChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA9D1D9C0ADC00D87AA3 /* CoreDataChange.swift */; }; - 237FBAAF1D9C0ADC00D87AA3 /* CoreDataChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA9D1D9C0ADC00D87AA3 /* CoreDataChange.swift */; }; - 237FBAB01D9C0ADC00D87AA3 /* CoreDataChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA9D1D9C0ADC00D87AA3 /* CoreDataChange.swift */; }; - 237FBAB11D9C0ADC00D87AA3 /* CoreDataContextParent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA9E1D9C0ADC00D87AA3 /* CoreDataContextParent.swift */; }; - 237FBAB21D9C0ADC00D87AA3 /* CoreDataContextParent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA9E1D9C0ADC00D87AA3 /* CoreDataContextParent.swift */; }; - 237FBAB31D9C0ADC00D87AA3 /* CoreDataContextParent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA9E1D9C0ADC00D87AA3 /* CoreDataContextParent.swift */; }; - 237FBAB41D9C0ADC00D87AA3 /* CoreDataContextParent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA9E1D9C0ADC00D87AA3 /* CoreDataContextParent.swift */; }; - 237FBAB51D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA9F1D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift */; }; - 237FBAB61D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA9F1D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift */; }; - 237FBAB71D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA9F1D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift */; }; - 237FBAB81D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBA9F1D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift */; }; - 237FBAB91D9C0ADC00D87AA3 /* CoreDataObjectModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA01D9C0ADC00D87AA3 /* CoreDataObjectModel.swift */; }; - 237FBABA1D9C0ADC00D87AA3 /* CoreDataObjectModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA01D9C0ADC00D87AA3 /* CoreDataObjectModel.swift */; }; - 237FBABB1D9C0ADC00D87AA3 /* CoreDataObjectModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA01D9C0ADC00D87AA3 /* CoreDataObjectModel.swift */; }; - 237FBABC1D9C0ADC00D87AA3 /* CoreDataObjectModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA01D9C0ADC00D87AA3 /* CoreDataObjectModel.swift */; }; - 237FBABD1D9C0ADC00D87AA3 /* CoreDataObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA11D9C0ADC00D87AA3 /* CoreDataObservable.swift */; }; - 237FBABE1D9C0ADC00D87AA3 /* CoreDataObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA11D9C0ADC00D87AA3 /* CoreDataObservable.swift */; }; - 237FBABF1D9C0ADC00D87AA3 /* CoreDataObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA11D9C0ADC00D87AA3 /* CoreDataObservable.swift */; }; - 237FBAC01D9C0ADC00D87AA3 /* CoreDataObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA11D9C0ADC00D87AA3 /* CoreDataObservable.swift */; }; - 237FBAC11D9C0ADC00D87AA3 /* CoreDataOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA21D9C0ADC00D87AA3 /* CoreDataOptions.swift */; }; - 237FBAC21D9C0ADC00D87AA3 /* CoreDataOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA21D9C0ADC00D87AA3 /* CoreDataOptions.swift */; }; - 237FBAC31D9C0ADC00D87AA3 /* CoreDataOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA21D9C0ADC00D87AA3 /* CoreDataOptions.swift */; }; - 237FBAC41D9C0ADC00D87AA3 /* CoreDataOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA21D9C0ADC00D87AA3 /* CoreDataOptions.swift */; }; - 237FBAC51D9C0ADC00D87AA3 /* CoreDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA31D9C0ADC00D87AA3 /* CoreDataStore.swift */; }; - 237FBAC61D9C0ADC00D87AA3 /* CoreDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA31D9C0ADC00D87AA3 /* CoreDataStore.swift */; }; - 237FBAC71D9C0ADC00D87AA3 /* CoreDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA31D9C0ADC00D87AA3 /* CoreDataStore.swift */; }; - 237FBAC81D9C0ADC00D87AA3 /* CoreDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA31D9C0ADC00D87AA3 /* CoreDataStore.swift */; }; - 237FBAC91D9C0ADC00D87AA3 /* CoreDataError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA51D9C0ADC00D87AA3 /* CoreDataError.swift */; }; - 237FBACA1D9C0ADC00D87AA3 /* CoreDataError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA51D9C0ADC00D87AA3 /* CoreDataError.swift */; }; - 237FBACB1D9C0ADC00D87AA3 /* CoreDataError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA51D9C0ADC00D87AA3 /* CoreDataError.swift */; }; - 237FBACC1D9C0ADC00D87AA3 /* CoreDataError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA51D9C0ADC00D87AA3 /* CoreDataError.swift */; }; - 237FBACD1D9C0ADC00D87AA3 /* NSManagedObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA71D9C0ADC00D87AA3 /* NSManagedObject.swift */; }; - 237FBACE1D9C0ADC00D87AA3 /* NSManagedObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA71D9C0ADC00D87AA3 /* NSManagedObject.swift */; }; - 237FBACF1D9C0ADC00D87AA3 /* NSManagedObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA71D9C0ADC00D87AA3 /* NSManagedObject.swift */; }; - 237FBAD01D9C0ADC00D87AA3 /* NSManagedObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA71D9C0ADC00D87AA3 /* NSManagedObject.swift */; }; - 237FBAD11D9C0ADC00D87AA3 /* NSManagedObjectContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA81D9C0ADC00D87AA3 /* NSManagedObjectContext.swift */; }; - 237FBAD21D9C0ADC00D87AA3 /* NSManagedObjectContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA81D9C0ADC00D87AA3 /* NSManagedObjectContext.swift */; }; - 237FBAD31D9C0ADC00D87AA3 /* NSManagedObjectContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA81D9C0ADC00D87AA3 /* NSManagedObjectContext.swift */; }; - 237FBAD41D9C0ADC00D87AA3 /* NSManagedObjectContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA81D9C0ADC00D87AA3 /* NSManagedObjectContext.swift */; }; - 237FBAD51D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA91D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift */; }; - 237FBAD61D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA91D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift */; }; - 237FBAD71D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA91D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift */; }; - 237FBAD81D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAA91D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift */; }; - 237FBAD91D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAAB1D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift */; }; - 237FBADA1D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAAB1D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift */; }; - 237FBADB1D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAAB1D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift */; }; - 237FBADC1D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAAB1D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift */; }; - 237FBADD1D9C0ADC00D87AA3 /* CoreDataiCloudStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAAC1D9C0ADC00D87AA3 /* CoreDataiCloudStorage.swift */; }; - 237FBAE01D9C0ADC00D87AA3 /* CoreDataiCloudStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 237FBAAC1D9C0ADC00D87AA3 /* CoreDataiCloudStorage.swift */; }; - 23E15DB01D7DE1000073CC71 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23E15DAF1D7DE1000073CC71 /* CoreData.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 2334C46A1D7DD8A500ACBC3A /* SugarRecordCoreData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SugarRecordCoreData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2334C4981D7DD90800ACBC3A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 2334C49E1D7DD93600ACBC3A /* SugarRecordCoreData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SugarRecordCoreData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2334C4AB1D7DD95C00ACBC3A /* SugarRecordCoreData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SugarRecordCoreData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2334C4B81D7DD97B00ACBC3A /* SugarRecordCoreData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SugarRecordCoreData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 237FBA171D9C0AD000D87AA3 /* Request.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Request.swift; sourceTree = ""; }; - 237FBA181D9C0AD000D87AA3 /* RequestObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestObservable.swift; sourceTree = ""; }; - 237FBA191D9C0AD000D87AA3 /* Storage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Storage.swift; sourceTree = ""; }; - 237FBA1B1D9C0AD000D87AA3 /* StorageError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StorageError.swift; sourceTree = ""; }; - 237FBA1D1D9C0AD000D87AA3 /* RequestExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestExtension.swift; sourceTree = ""; }; - 237FBA1F1D9C0AD000D87AA3 /* Logger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = ""; }; - 237FBA211D9C0AD000D87AA3 /* Context.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Context.swift; sourceTree = ""; }; - 237FBA221D9C0AD000D87AA3 /* Entity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Entity.swift; sourceTree = ""; }; - 237FBA231D9C0AD000D87AA3 /* NSPredicateConvertible.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSPredicateConvertible.swift; sourceTree = ""; }; - 237FBA241D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSSortDescriptorConvertible.swift; sourceTree = ""; }; - 237FBA251D9C0AD000D87AA3 /* Requestable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Requestable.swift; sourceTree = ""; }; - 237FBA271D9C0AD000D87AA3 /* DirUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DirUtils.swift; sourceTree = ""; }; - 237FBA291D9C0AD000D87AA3 /* VersionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VersionController.swift; sourceTree = ""; }; - 237FBA2A1D9C0AD000D87AA3 /* VersionProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VersionProvider.swift; sourceTree = ""; }; - 237FBA9D1D9C0ADC00D87AA3 /* CoreDataChange.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataChange.swift; sourceTree = ""; }; - 237FBA9E1D9C0ADC00D87AA3 /* CoreDataContextParent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataContextParent.swift; sourceTree = ""; }; - 237FBA9F1D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataiCloudConfig.swift; sourceTree = ""; }; - 237FBAA01D9C0ADC00D87AA3 /* CoreDataObjectModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataObjectModel.swift; sourceTree = ""; }; - 237FBAA11D9C0ADC00D87AA3 /* CoreDataObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataObservable.swift; sourceTree = ""; }; - 237FBAA21D9C0ADC00D87AA3 /* CoreDataOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataOptions.swift; sourceTree = ""; }; - 237FBAA31D9C0ADC00D87AA3 /* CoreDataStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataStore.swift; sourceTree = ""; }; - 237FBAA51D9C0ADC00D87AA3 /* CoreDataError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataError.swift; sourceTree = ""; }; - 237FBAA71D9C0ADC00D87AA3 /* NSManagedObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSManagedObject.swift; sourceTree = ""; }; - 237FBAA81D9C0ADC00D87AA3 /* NSManagedObjectContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSManagedObjectContext.swift; sourceTree = ""; }; - 237FBAA91D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSManagedObjectMemoryContext.swift; sourceTree = ""; }; - 237FBAAB1D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataDefaultStorage.swift; sourceTree = ""; }; - 237FBAAC1D9C0ADC00D87AA3 /* CoreDataiCloudStorage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataiCloudStorage.swift; sourceTree = ""; }; - 237FBB041D9C0B1C00D87AA3 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; - 237FBB061D9C0B1C00D87AA3 /* Common.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Common.xcconfig; sourceTree = ""; }; - 237FBB081D9C0B1C00D87AA3 /* Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 237FBB091D9C0B1C00D87AA3 /* Profile.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Profile.xcconfig; sourceTree = ""; }; - 237FBB0A1D9C0B1C00D87AA3 /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 237FBB0B1D9C0B1C00D87AA3 /* Test.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Test.xcconfig; sourceTree = ""; }; - 237FBB0D1D9C0B1C00D87AA3 /* Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Application.xcconfig; sourceTree = ""; }; - 237FBB0E1D9C0B1C00D87AA3 /* Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Framework.xcconfig; sourceTree = ""; }; - 237FBB0F1D9C0B1C00D87AA3 /* StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = StaticLibrary.xcconfig; sourceTree = ""; }; - 237FBB111D9C0B1C00D87AA3 /* iOS-Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "iOS-Application.xcconfig"; sourceTree = ""; }; - 237FBB121D9C0B1C00D87AA3 /* iOS-Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "iOS-Base.xcconfig"; sourceTree = ""; }; - 237FBB131D9C0B1C00D87AA3 /* iOS-Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "iOS-Framework.xcconfig"; sourceTree = ""; }; - 237FBB141D9C0B1C00D87AA3 /* iOS-StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "iOS-StaticLibrary.xcconfig"; sourceTree = ""; }; - 237FBB161D9C0B1C00D87AA3 /* Mac-Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Mac-Application.xcconfig"; sourceTree = ""; }; - 237FBB171D9C0B1C00D87AA3 /* Mac-Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Mac-Base.xcconfig"; sourceTree = ""; }; - 237FBB181D9C0B1C00D87AA3 /* Mac-DynamicLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Mac-DynamicLibrary.xcconfig"; sourceTree = ""; }; - 237FBB191D9C0B1C00D87AA3 /* Mac-Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Mac-Framework.xcconfig"; sourceTree = ""; }; - 237FBB1A1D9C0B1C00D87AA3 /* Mac-StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Mac-StaticLibrary.xcconfig"; sourceTree = ""; }; - 237FBB1B1D9C0B1C00D87AA3 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 237FBB1D1D9C0B1C00D87AA3 /* tvOS-Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "tvOS-Application.xcconfig"; sourceTree = ""; }; - 237FBB1E1D9C0B1C00D87AA3 /* tvOS-Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "tvOS-Base.xcconfig"; sourceTree = ""; }; - 237FBB1F1D9C0B1C00D87AA3 /* tvOS-Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "tvOS-Framework.xcconfig"; sourceTree = ""; }; - 237FBB201D9C0B1C00D87AA3 /* tvOS-StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "tvOS-StaticLibrary.xcconfig"; sourceTree = ""; }; - 237FBB221D9C0B1C00D87AA3 /* watchOS-Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "watchOS-Application.xcconfig"; sourceTree = ""; }; - 237FBB231D9C0B1C00D87AA3 /* watchOS-Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "watchOS-Base.xcconfig"; sourceTree = ""; }; - 237FBB241D9C0B1C00D87AA3 /* watchOS-Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "watchOS-Framework.xcconfig"; sourceTree = ""; }; - 237FBB251D9C0B1C00D87AA3 /* watchOS-StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "watchOS-StaticLibrary.xcconfig"; sourceTree = ""; }; - 23E15DAF1D7DE1000073CC71 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 2334C4661D7DD8A500ACBC3A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2334C49A1D7DD93600ACBC3A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2334C4A71D7DD95C00ACBC3A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2334C4B41D7DD97B00ACBC3A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 23E15DB01D7DE1000073CC71 /* CoreData.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 2334C4601D7DD8A500ACBC3A = { - isa = PBXGroup; - children = ( - 2334C4981D7DD90800ACBC3A /* Info.plist */, - 237FBB031D9C0B1C00D87AA3 /* Config */, - 23E15C821D7DDE490073CC71 /* Source */, - 2334C4E81D7DDB6400ACBC3A /* Frameworks */, - 2334C46B1D7DD8A500ACBC3A /* Products */, - ); - sourceTree = ""; - }; - 2334C46B1D7DD8A500ACBC3A /* Products */ = { - isa = PBXGroup; - children = ( - 2334C46A1D7DD8A500ACBC3A /* SugarRecordCoreData.framework */, - 2334C49E1D7DD93600ACBC3A /* SugarRecordCoreData.framework */, - 2334C4AB1D7DD95C00ACBC3A /* SugarRecordCoreData.framework */, - 2334C4B81D7DD97B00ACBC3A /* SugarRecordCoreData.framework */, - ); - name = Products; - sourceTree = ""; - }; - 2334C4E81D7DDB6400ACBC3A /* Frameworks */ = { - isa = PBXGroup; - children = ( - 23E15DAF1D7DE1000073CC71 /* CoreData.framework */, - 2334C4EC1D7DDB7C00ACBC3A /* watchOS */, - 2334C4EB1D7DDB7700ACBC3A /* macOS */, - 2334C4EA1D7DDB7100ACBC3A /* iOS */, - 2334C4E91D7DDB6D00ACBC3A /* tvOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 2334C4E91D7DDB6D00ACBC3A /* tvOS */ = { - isa = PBXGroup; - children = ( - ); - name = tvOS; - sourceTree = ""; - }; - 2334C4EA1D7DDB7100ACBC3A /* iOS */ = { - isa = PBXGroup; - children = ( - ); - name = iOS; - sourceTree = ""; - }; - 2334C4EB1D7DDB7700ACBC3A /* macOS */ = { - isa = PBXGroup; - children = ( - ); - name = macOS; - sourceTree = ""; - }; - 2334C4EC1D7DDB7C00ACBC3A /* watchOS */ = { - isa = PBXGroup; - children = ( - ); - name = watchOS; - sourceTree = ""; - }; - 237FBA151D9C0AD000D87AA3 /* Foundation */ = { - isa = PBXGroup; - children = ( - 237FBA161D9C0AD000D87AA3 /* Entities */, - 237FBA1A1D9C0AD000D87AA3 /* Errors */, - 237FBA1C1D9C0AD000D87AA3 /* Extensions */, - 237FBA1E1D9C0AD000D87AA3 /* Logger */, - 237FBA201D9C0AD000D87AA3 /* Protocols */, - 237FBA261D9C0AD000D87AA3 /* Utils */, - 237FBA281D9C0AD000D87AA3 /* Version */, - ); - name = Foundation; - path = SugarRecord/Source/Foundation; - sourceTree = SOURCE_ROOT; - }; - 237FBA161D9C0AD000D87AA3 /* Entities */ = { - isa = PBXGroup; - children = ( - 237FBA171D9C0AD000D87AA3 /* Request.swift */, - 237FBA181D9C0AD000D87AA3 /* RequestObservable.swift */, - 237FBA191D9C0AD000D87AA3 /* Storage.swift */, - ); - path = Entities; - sourceTree = ""; - }; - 237FBA1A1D9C0AD000D87AA3 /* Errors */ = { - isa = PBXGroup; - children = ( - 237FBA1B1D9C0AD000D87AA3 /* StorageError.swift */, - ); - path = Errors; - sourceTree = ""; - }; - 237FBA1C1D9C0AD000D87AA3 /* Extensions */ = { - isa = PBXGroup; - children = ( - 237FBA1D1D9C0AD000D87AA3 /* RequestExtension.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - 237FBA1E1D9C0AD000D87AA3 /* Logger */ = { - isa = PBXGroup; - children = ( - 237FBA1F1D9C0AD000D87AA3 /* Logger.swift */, - ); - path = Logger; - sourceTree = ""; - }; - 237FBA201D9C0AD000D87AA3 /* Protocols */ = { - isa = PBXGroup; - children = ( - 237FBA211D9C0AD000D87AA3 /* Context.swift */, - 237FBA221D9C0AD000D87AA3 /* Entity.swift */, - 237FBA231D9C0AD000D87AA3 /* NSPredicateConvertible.swift */, - 237FBA241D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift */, - 237FBA251D9C0AD000D87AA3 /* Requestable.swift */, - ); - path = Protocols; - sourceTree = ""; - }; - 237FBA261D9C0AD000D87AA3 /* Utils */ = { - isa = PBXGroup; - children = ( - 237FBA271D9C0AD000D87AA3 /* DirUtils.swift */, - ); - path = Utils; - sourceTree = ""; - }; - 237FBA281D9C0AD000D87AA3 /* Version */ = { - isa = PBXGroup; - children = ( - 237FBA291D9C0AD000D87AA3 /* VersionController.swift */, - 237FBA2A1D9C0AD000D87AA3 /* VersionProvider.swift */, - ); - path = Version; - sourceTree = ""; - }; - 237FBA9B1D9C0ADC00D87AA3 /* CoreData */ = { - isa = PBXGroup; - children = ( - 237FBA9C1D9C0ADC00D87AA3 /* Entities */, - 237FBAA41D9C0ADC00D87AA3 /* Errors */, - 237FBAA61D9C0ADC00D87AA3 /* Extensions */, - 237FBAAA1D9C0ADC00D87AA3 /* Storages */, - ); - name = CoreData; - path = SugarRecord/Source/CoreData; - sourceTree = SOURCE_ROOT; - }; - 237FBA9C1D9C0ADC00D87AA3 /* Entities */ = { - isa = PBXGroup; - children = ( - 237FBA9D1D9C0ADC00D87AA3 /* CoreDataChange.swift */, - 237FBA9E1D9C0ADC00D87AA3 /* CoreDataContextParent.swift */, - 237FBA9F1D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift */, - 237FBAA01D9C0ADC00D87AA3 /* CoreDataObjectModel.swift */, - 237FBAA11D9C0ADC00D87AA3 /* CoreDataObservable.swift */, - 237FBAA21D9C0ADC00D87AA3 /* CoreDataOptions.swift */, - 237FBAA31D9C0ADC00D87AA3 /* CoreDataStore.swift */, - ); - path = Entities; - sourceTree = ""; - }; - 237FBAA41D9C0ADC00D87AA3 /* Errors */ = { - isa = PBXGroup; - children = ( - 237FBAA51D9C0ADC00D87AA3 /* CoreDataError.swift */, - ); - path = Errors; - sourceTree = ""; - }; - 237FBAA61D9C0ADC00D87AA3 /* Extensions */ = { - isa = PBXGroup; - children = ( - 237FBAA71D9C0ADC00D87AA3 /* NSManagedObject.swift */, - 237FBAA81D9C0ADC00D87AA3 /* NSManagedObjectContext.swift */, - 237FBAA91D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - 237FBAAA1D9C0ADC00D87AA3 /* Storages */ = { - isa = PBXGroup; - children = ( - 237FBAAB1D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift */, - 237FBAAC1D9C0ADC00D87AA3 /* CoreDataiCloudStorage.swift */, - ); - path = Storages; - sourceTree = ""; - }; - 237FBB031D9C0B1C00D87AA3 /* Config */ = { - isa = PBXGroup; - children = ( - 237FBB041D9C0B1C00D87AA3 /* .gitignore */, - 237FBB051D9C0B1C00D87AA3 /* Base */, - 237FBB101D9C0B1C00D87AA3 /* iOS */, - 237FBB151D9C0B1C00D87AA3 /* Mac OS X */, - 237FBB1B1D9C0B1C00D87AA3 /* README.md */, - 237FBB1C1D9C0B1C00D87AA3 /* tvOS */, - 237FBB211D9C0B1C00D87AA3 /* watchOS */, - ); - path = Config; - sourceTree = ""; - }; - 237FBB051D9C0B1C00D87AA3 /* Base */ = { - isa = PBXGroup; - children = ( - 237FBB061D9C0B1C00D87AA3 /* Common.xcconfig */, - 237FBB071D9C0B1C00D87AA3 /* Configurations */, - 237FBB0C1D9C0B1C00D87AA3 /* Targets */, - ); - path = Base; - sourceTree = ""; - }; - 237FBB071D9C0B1C00D87AA3 /* Configurations */ = { - isa = PBXGroup; - children = ( - 237FBB081D9C0B1C00D87AA3 /* Debug.xcconfig */, - 237FBB091D9C0B1C00D87AA3 /* Profile.xcconfig */, - 237FBB0A1D9C0B1C00D87AA3 /* Release.xcconfig */, - 237FBB0B1D9C0B1C00D87AA3 /* Test.xcconfig */, - ); - path = Configurations; - sourceTree = ""; - }; - 237FBB0C1D9C0B1C00D87AA3 /* Targets */ = { - isa = PBXGroup; - children = ( - 237FBB0D1D9C0B1C00D87AA3 /* Application.xcconfig */, - 237FBB0E1D9C0B1C00D87AA3 /* Framework.xcconfig */, - 237FBB0F1D9C0B1C00D87AA3 /* StaticLibrary.xcconfig */, - ); - path = Targets; - sourceTree = ""; - }; - 237FBB101D9C0B1C00D87AA3 /* iOS */ = { - isa = PBXGroup; - children = ( - 237FBB111D9C0B1C00D87AA3 /* iOS-Application.xcconfig */, - 237FBB121D9C0B1C00D87AA3 /* iOS-Base.xcconfig */, - 237FBB131D9C0B1C00D87AA3 /* iOS-Framework.xcconfig */, - 237FBB141D9C0B1C00D87AA3 /* iOS-StaticLibrary.xcconfig */, - ); - path = iOS; - sourceTree = ""; - }; - 237FBB151D9C0B1C00D87AA3 /* Mac OS X */ = { - isa = PBXGroup; - children = ( - 237FBB161D9C0B1C00D87AA3 /* Mac-Application.xcconfig */, - 237FBB171D9C0B1C00D87AA3 /* Mac-Base.xcconfig */, - 237FBB181D9C0B1C00D87AA3 /* Mac-DynamicLibrary.xcconfig */, - 237FBB191D9C0B1C00D87AA3 /* Mac-Framework.xcconfig */, - 237FBB1A1D9C0B1C00D87AA3 /* Mac-StaticLibrary.xcconfig */, - ); - path = "Mac OS X"; - sourceTree = ""; - }; - 237FBB1C1D9C0B1C00D87AA3 /* tvOS */ = { - isa = PBXGroup; - children = ( - 237FBB1D1D9C0B1C00D87AA3 /* tvOS-Application.xcconfig */, - 237FBB1E1D9C0B1C00D87AA3 /* tvOS-Base.xcconfig */, - 237FBB1F1D9C0B1C00D87AA3 /* tvOS-Framework.xcconfig */, - 237FBB201D9C0B1C00D87AA3 /* tvOS-StaticLibrary.xcconfig */, - ); - path = tvOS; - sourceTree = ""; - }; - 237FBB211D9C0B1C00D87AA3 /* watchOS */ = { - isa = PBXGroup; - children = ( - 237FBB221D9C0B1C00D87AA3 /* watchOS-Application.xcconfig */, - 237FBB231D9C0B1C00D87AA3 /* watchOS-Base.xcconfig */, - 237FBB241D9C0B1C00D87AA3 /* watchOS-Framework.xcconfig */, - 237FBB251D9C0B1C00D87AA3 /* watchOS-StaticLibrary.xcconfig */, - ); - path = watchOS; - sourceTree = ""; - }; - 23E15C821D7DDE490073CC71 /* Source */ = { - isa = PBXGroup; - children = ( - 237FBA9B1D9C0ADC00D87AA3 /* CoreData */, - 237FBA151D9C0AD000D87AA3 /* Foundation */, - ); - name = Source; - path = ../SugarRecord/Source; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 2334C4671D7DD8A500ACBC3A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2334C49B1D7DD93600ACBC3A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2334C4A81D7DD95C00ACBC3A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2334C4B51D7DD97B00ACBC3A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 2334C4691D7DD8A500ACBC3A /* iOSCoreData */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2334C4721D7DD8A500ACBC3A /* Build configuration list for PBXNativeTarget "iOSCoreData" */; - buildPhases = ( - 2334C4651D7DD8A500ACBC3A /* Sources */, - 2334C4661D7DD8A500ACBC3A /* Frameworks */, - 2334C4671D7DD8A500ACBC3A /* Headers */, - 2334C4681D7DD8A500ACBC3A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = iOSCoreData; - productName = SugarRecord; - productReference = 2334C46A1D7DD8A500ACBC3A /* SugarRecordCoreData.framework */; - productType = "com.apple.product-type.framework"; - }; - 2334C49D1D7DD93600ACBC3A /* watchOSCoreData */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2334C4A31D7DD93600ACBC3A /* Build configuration list for PBXNativeTarget "watchOSCoreData" */; - buildPhases = ( - 2334C4991D7DD93600ACBC3A /* Sources */, - 2334C49A1D7DD93600ACBC3A /* Frameworks */, - 2334C49B1D7DD93600ACBC3A /* Headers */, - 2334C49C1D7DD93600ACBC3A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = watchOSCoreData; - productName = watchOS; - productReference = 2334C49E1D7DD93600ACBC3A /* SugarRecordCoreData.framework */; - productType = "com.apple.product-type.framework"; - }; - 2334C4AA1D7DD95C00ACBC3A /* tvOSCoreData */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2334C4B01D7DD95C00ACBC3A /* Build configuration list for PBXNativeTarget "tvOSCoreData" */; - buildPhases = ( - 2334C4A61D7DD95C00ACBC3A /* Sources */, - 2334C4A71D7DD95C00ACBC3A /* Frameworks */, - 2334C4A81D7DD95C00ACBC3A /* Headers */, - 2334C4A91D7DD95C00ACBC3A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = tvOSCoreData; - productName = tvOS; - productReference = 2334C4AB1D7DD95C00ACBC3A /* SugarRecordCoreData.framework */; - productType = "com.apple.product-type.framework"; - }; - 2334C4B71D7DD97B00ACBC3A /* macOSCoreData */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2334C4BD1D7DD97B00ACBC3A /* Build configuration list for PBXNativeTarget "macOSCoreData" */; - buildPhases = ( - 2334C4B31D7DD97B00ACBC3A /* Sources */, - 2334C4B41D7DD97B00ACBC3A /* Frameworks */, - 2334C4B51D7DD97B00ACBC3A /* Headers */, - 2334C4B61D7DD97B00ACBC3A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = macOSCoreData; - productName = macOS; - productReference = 2334C4B81D7DD97B00ACBC3A /* SugarRecordCoreData.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 2334C4611D7DD8A500ACBC3A /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0800; - ORGANIZATIONNAME = in.caramba.SugarRecord; - TargetAttributes = { - 2334C4691D7DD8A500ACBC3A = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 0800; - }; - 2334C49D1D7DD93600ACBC3A = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 0800; - }; - 2334C4AA1D7DD95C00ACBC3A = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 0800; - }; - 2334C4B71D7DD97B00ACBC3A = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 0800; - }; - }; - }; - buildConfigurationList = 2334C4641D7DD8A500ACBC3A /* Build configuration list for PBXProject "Carthage" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 2334C4601D7DD8A500ACBC3A; - productRefGroup = 2334C46B1D7DD8A500ACBC3A /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 2334C4691D7DD8A500ACBC3A /* iOSCoreData */, - 2334C49D1D7DD93600ACBC3A /* watchOSCoreData */, - 2334C4AA1D7DD95C00ACBC3A /* tvOSCoreData */, - 2334C4B71D7DD97B00ACBC3A /* macOSCoreData */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 2334C4681D7DD8A500ACBC3A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2334C49C1D7DD93600ACBC3A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2334C4A91D7DD95C00ACBC3A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2334C4B61D7DD97B00ACBC3A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 2334C4651D7DD8A500ACBC3A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 237FBAC51D9C0ADC00D87AA3 /* CoreDataStore.swift in Sources */, - 237FBAD11D9C0ADC00D87AA3 /* NSManagedObjectContext.swift in Sources */, - 237FBAD91D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift in Sources */, - 237FBA441D9C0AD000D87AA3 /* StorageError.swift in Sources */, - 237FBAD51D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift in Sources */, - 237FBAB51D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift in Sources */, - 237FBA941D9C0AD000D87AA3 /* VersionProvider.swift in Sources */, - 237FBA541D9C0AD000D87AA3 /* Logger.swift in Sources */, - 237FBA341D9C0AD000D87AA3 /* RequestObservable.swift in Sources */, - 237FBADD1D9C0ADC00D87AA3 /* CoreDataiCloudStorage.swift in Sources */, - 237FBA741D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift in Sources */, - 237FBACD1D9C0ADC00D87AA3 /* NSManagedObject.swift in Sources */, - 237FBA5C1D9C0AD000D87AA3 /* Context.swift in Sources */, - 237FBA841D9C0AD000D87AA3 /* DirUtils.swift in Sources */, - 237FBABD1D9C0ADC00D87AA3 /* CoreDataObservable.swift in Sources */, - 237FBA6C1D9C0AD000D87AA3 /* NSPredicateConvertible.swift in Sources */, - 237FBAB11D9C0ADC00D87AA3 /* CoreDataContextParent.swift in Sources */, - 237FBAC11D9C0ADC00D87AA3 /* CoreDataOptions.swift in Sources */, - 237FBA641D9C0AD000D87AA3 /* Entity.swift in Sources */, - 237FBA2C1D9C0AD000D87AA3 /* Request.swift in Sources */, - 237FBAAD1D9C0ADC00D87AA3 /* CoreDataChange.swift in Sources */, - 237FBA4C1D9C0AD000D87AA3 /* RequestExtension.swift in Sources */, - 237FBA7C1D9C0AD000D87AA3 /* Requestable.swift in Sources */, - 237FBAB91D9C0ADC00D87AA3 /* CoreDataObjectModel.swift in Sources */, - 237FBAC91D9C0ADC00D87AA3 /* CoreDataError.swift in Sources */, - 237FBA3C1D9C0AD000D87AA3 /* Storage.swift in Sources */, - 237FBA8C1D9C0AD000D87AA3 /* VersionController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2334C4991D7DD93600ACBC3A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 237FBAC61D9C0ADC00D87AA3 /* CoreDataStore.swift in Sources */, - 237FBAD21D9C0ADC00D87AA3 /* NSManagedObjectContext.swift in Sources */, - 237FBADA1D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift in Sources */, - 237FBA461D9C0AD000D87AA3 /* StorageError.swift in Sources */, - 237FBAD61D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift in Sources */, - 237FBAB61D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift in Sources */, - 237FBA961D9C0AD000D87AA3 /* VersionProvider.swift in Sources */, - 237FBA561D9C0AD000D87AA3 /* Logger.swift in Sources */, - 237FBA361D9C0AD000D87AA3 /* RequestObservable.swift in Sources */, - 237FBA761D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift in Sources */, - 237FBACE1D9C0ADC00D87AA3 /* NSManagedObject.swift in Sources */, - 237FBA5E1D9C0AD000D87AA3 /* Context.swift in Sources */, - 237FBA861D9C0AD000D87AA3 /* DirUtils.swift in Sources */, - 237FBABE1D9C0ADC00D87AA3 /* CoreDataObservable.swift in Sources */, - 237FBA6E1D9C0AD000D87AA3 /* NSPredicateConvertible.swift in Sources */, - 237FBAB21D9C0ADC00D87AA3 /* CoreDataContextParent.swift in Sources */, - 237FBAC21D9C0ADC00D87AA3 /* CoreDataOptions.swift in Sources */, - 237FBA661D9C0AD000D87AA3 /* Entity.swift in Sources */, - 237FBA2E1D9C0AD000D87AA3 /* Request.swift in Sources */, - 237FBAAE1D9C0ADC00D87AA3 /* CoreDataChange.swift in Sources */, - 237FBA4E1D9C0AD000D87AA3 /* RequestExtension.swift in Sources */, - 237FBA7E1D9C0AD000D87AA3 /* Requestable.swift in Sources */, - 237FBABA1D9C0ADC00D87AA3 /* CoreDataObjectModel.swift in Sources */, - 237FBACA1D9C0ADC00D87AA3 /* CoreDataError.swift in Sources */, - 237FBA3E1D9C0AD000D87AA3 /* Storage.swift in Sources */, - 237FBA8E1D9C0AD000D87AA3 /* VersionController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2334C4A61D7DD95C00ACBC3A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 237FBAC71D9C0ADC00D87AA3 /* CoreDataStore.swift in Sources */, - 237FBAD31D9C0ADC00D87AA3 /* NSManagedObjectContext.swift in Sources */, - 237FBADB1D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift in Sources */, - 237FBA481D9C0AD000D87AA3 /* StorageError.swift in Sources */, - 237FBAD71D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift in Sources */, - 237FBAB71D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift in Sources */, - 237FBA981D9C0AD000D87AA3 /* VersionProvider.swift in Sources */, - 237FBA581D9C0AD000D87AA3 /* Logger.swift in Sources */, - 237FBA381D9C0AD000D87AA3 /* RequestObservable.swift in Sources */, - 237FBA781D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift in Sources */, - 237FBACF1D9C0ADC00D87AA3 /* NSManagedObject.swift in Sources */, - 237FBA601D9C0AD000D87AA3 /* Context.swift in Sources */, - 237FBA881D9C0AD000D87AA3 /* DirUtils.swift in Sources */, - 237FBABF1D9C0ADC00D87AA3 /* CoreDataObservable.swift in Sources */, - 237FBA701D9C0AD000D87AA3 /* NSPredicateConvertible.swift in Sources */, - 237FBAB31D9C0ADC00D87AA3 /* CoreDataContextParent.swift in Sources */, - 237FBAC31D9C0ADC00D87AA3 /* CoreDataOptions.swift in Sources */, - 237FBA681D9C0AD000D87AA3 /* Entity.swift in Sources */, - 237FBA301D9C0AD000D87AA3 /* Request.swift in Sources */, - 237FBAAF1D9C0ADC00D87AA3 /* CoreDataChange.swift in Sources */, - 237FBA501D9C0AD000D87AA3 /* RequestExtension.swift in Sources */, - 237FBA801D9C0AD000D87AA3 /* Requestable.swift in Sources */, - 237FBABB1D9C0ADC00D87AA3 /* CoreDataObjectModel.swift in Sources */, - 237FBACB1D9C0ADC00D87AA3 /* CoreDataError.swift in Sources */, - 237FBA401D9C0AD000D87AA3 /* Storage.swift in Sources */, - 237FBA901D9C0AD000D87AA3 /* VersionController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2334C4B31D7DD97B00ACBC3A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 237FBAC81D9C0ADC00D87AA3 /* CoreDataStore.swift in Sources */, - 237FBAD41D9C0ADC00D87AA3 /* NSManagedObjectContext.swift in Sources */, - 237FBADC1D9C0ADC00D87AA3 /* CoreDataDefaultStorage.swift in Sources */, - 237FBA4A1D9C0AD000D87AA3 /* StorageError.swift in Sources */, - 237FBAD81D9C0ADC00D87AA3 /* NSManagedObjectMemoryContext.swift in Sources */, - 237FBAB81D9C0ADC00D87AA3 /* CoreDataiCloudConfig.swift in Sources */, - 237FBA9A1D9C0AD000D87AA3 /* VersionProvider.swift in Sources */, - 237FBA5A1D9C0AD000D87AA3 /* Logger.swift in Sources */, - 237FBA3A1D9C0AD000D87AA3 /* RequestObservable.swift in Sources */, - 237FBAE01D9C0ADC00D87AA3 /* CoreDataiCloudStorage.swift in Sources */, - 237FBA7A1D9C0AD000D87AA3 /* NSSortDescriptorConvertible.swift in Sources */, - 237FBAD01D9C0ADC00D87AA3 /* NSManagedObject.swift in Sources */, - 237FBA621D9C0AD000D87AA3 /* Context.swift in Sources */, - 237FBA8A1D9C0AD000D87AA3 /* DirUtils.swift in Sources */, - 237FBAC01D9C0ADC00D87AA3 /* CoreDataObservable.swift in Sources */, - 237FBA721D9C0AD000D87AA3 /* NSPredicateConvertible.swift in Sources */, - 237FBAB41D9C0ADC00D87AA3 /* CoreDataContextParent.swift in Sources */, - 237FBAC41D9C0ADC00D87AA3 /* CoreDataOptions.swift in Sources */, - 237FBA6A1D9C0AD000D87AA3 /* Entity.swift in Sources */, - 237FBA321D9C0AD000D87AA3 /* Request.swift in Sources */, - 237FBAB01D9C0ADC00D87AA3 /* CoreDataChange.swift in Sources */, - 237FBA521D9C0AD000D87AA3 /* RequestExtension.swift in Sources */, - 237FBA821D9C0AD000D87AA3 /* Requestable.swift in Sources */, - 237FBABC1D9C0ADC00D87AA3 /* CoreDataObjectModel.swift in Sources */, - 237FBACC1D9C0ADC00D87AA3 /* CoreDataError.swift in Sources */, - 237FBA421D9C0AD000D87AA3 /* Storage.swift in Sources */, - 237FBA921D9C0AD000D87AA3 /* VersionController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 2334C4701D7DD8A500ACBC3A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 237FBB081D9C0B1C00D87AA3 /* Debug.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - 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; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACOSX_DEPLOYMENT_TARGET = 10.10; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 2334C4711D7DD8A500ACBC3A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 237FBB0A1D9C0B1C00D87AA3 /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - 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; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MACOSX_DEPLOYMENT_TARGET = 10.10; - MTL_ENABLE_DEBUG_INFO = NO; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 2334C4731D7DD8A500ACBC3A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 237FBB131D9C0B1C00D87AA3 /* iOS-Framework.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = in.caramba.SugarRecord; - PRODUCT_MODULE_NAME = SugarRecordCoreData; - PRODUCT_NAME = SugarRecordCoreData; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - 2334C4741D7DD8A500ACBC3A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 237FBB131D9C0B1C00D87AA3 /* iOS-Framework.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = in.caramba.SugarRecord; - PRODUCT_MODULE_NAME = SugarRecordCoreData; - PRODUCT_NAME = SugarRecordCoreData; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - }; - name = Release; - }; - 2334C4A41D7DD93600ACBC3A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 237FBB241D9C0B1C00D87AA3 /* watchOS-Framework.xcconfig */; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = in.caramba.watchOS; - PRODUCT_MODULE_NAME = SugarRecordCoreData; - PRODUCT_NAME = SugarRecordCoreData; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 2.0; - }; - name = Debug; - }; - 2334C4A51D7DD93600ACBC3A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 237FBB241D9C0B1C00D87AA3 /* watchOS-Framework.xcconfig */; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = in.caramba.watchOS; - PRODUCT_MODULE_NAME = SugarRecordCoreData; - PRODUCT_NAME = SugarRecordCoreData; - SDKROOT = watchos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 2.0; - }; - name = Release; - }; - 2334C4B11D7DD95C00ACBC3A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 237FBB1F1D9C0B1C00D87AA3 /* tvOS-Framework.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = in.caramba.tvOS; - PRODUCT_MODULE_NAME = SugarRecordCoreData; - PRODUCT_NAME = SugarRecordCoreData; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; - }; - name = Debug; - }; - 2334C4B21D7DD95C00ACBC3A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 237FBB1F1D9C0B1C00D87AA3 /* tvOS-Framework.xcconfig */; - buildSettings = { - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = in.caramba.tvOS; - PRODUCT_MODULE_NAME = SugarRecordCoreData; - PRODUCT_NAME = SugarRecordCoreData; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; - }; - name = Release; - }; - 2334C4BE1D7DD97B00ACBC3A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 237FBB191D9C0B1C00D87AA3 /* Mac-Framework.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - COMBINE_HIDPI_IMAGES = YES; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10; - PRODUCT_BUNDLE_IDENTIFIER = in.caramba.macOS; - PRODUCT_MODULE_NAME = SugarRecordCoreData; - PRODUCT_NAME = SugarRecordCoreData; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - 2334C4BF1D7DD97B00ACBC3A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 237FBB191D9C0B1C00D87AA3 /* Mac-Framework.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - COMBINE_HIDPI_IMAGES = YES; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10; - PRODUCT_BUNDLE_IDENTIFIER = in.caramba.macOS; - PRODUCT_MODULE_NAME = SugarRecordCoreData; - PRODUCT_NAME = SugarRecordCoreData; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 2334C4641D7DD8A500ACBC3A /* Build configuration list for PBXProject "Carthage" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2334C4701D7DD8A500ACBC3A /* Debug */, - 2334C4711D7DD8A500ACBC3A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - 2334C4721D7DD8A500ACBC3A /* Build configuration list for PBXNativeTarget "iOSCoreData" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2334C4731D7DD8A500ACBC3A /* Debug */, - 2334C4741D7DD8A500ACBC3A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - 2334C4A31D7DD93600ACBC3A /* Build configuration list for PBXNativeTarget "watchOSCoreData" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2334C4A41D7DD93600ACBC3A /* Debug */, - 2334C4A51D7DD93600ACBC3A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - 2334C4B01D7DD95C00ACBC3A /* Build configuration list for PBXNativeTarget "tvOSCoreData" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2334C4B11D7DD95C00ACBC3A /* Debug */, - 2334C4B21D7DD95C00ACBC3A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - 2334C4BD1D7DD97B00ACBC3A /* Build configuration list for PBXNativeTarget "macOSCoreData" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2334C4BE1D7DD97B00ACBC3A /* Debug */, - 2334C4BF1D7DD97B00ACBC3A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; -/* End XCConfigurationList section */ - }; - rootObject = 2334C4611D7DD8A500ACBC3A /* Project object */; -} diff --git a/Carthage.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Carthage.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 3016707b..00000000 --- a/Carthage.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Carthage.xcodeproj/xcshareddata/xcschemes/iOSCoreData.xcscheme b/Carthage.xcodeproj/xcshareddata/xcschemes/iOSCoreData.xcscheme deleted file mode 100644 index 99eacd9f..00000000 --- a/Carthage.xcodeproj/xcshareddata/xcschemes/iOSCoreData.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Carthage.xcodeproj/xcshareddata/xcschemes/macOSCoreData.xcscheme b/Carthage.xcodeproj/xcshareddata/xcschemes/macOSCoreData.xcscheme deleted file mode 100644 index 64cf4f8e..00000000 --- a/Carthage.xcodeproj/xcshareddata/xcschemes/macOSCoreData.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Carthage.xcodeproj/xcshareddata/xcschemes/tvOSCoreData.xcscheme b/Carthage.xcodeproj/xcshareddata/xcschemes/tvOSCoreData.xcscheme deleted file mode 100644 index 156eb8eb..00000000 --- a/Carthage.xcodeproj/xcshareddata/xcschemes/tvOSCoreData.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Carthage.xcodeproj/xcshareddata/xcschemes/watchOSCoreData.xcscheme b/Carthage.xcodeproj/xcshareddata/xcschemes/watchOSCoreData.xcscheme deleted file mode 100644 index dcf737d5..00000000 --- a/Carthage.xcodeproj/xcshareddata/xcschemes/watchOSCoreData.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Config b/Config deleted file mode 160000 index 3d9d9963..00000000 --- a/Config +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3d9d99634cae6d586e272543d527681283b33eb0 diff --git a/Dangerfile b/Dangerfile deleted file mode 100644 index 50d7a1ae..00000000 --- a/Dangerfile +++ /dev/null @@ -1,13 +0,0 @@ -has_library_changes = !git.modified_files.grep(/CarambaKit/).empty? - -# Changelog -if !git.modified_files.include?("CHANGELOG.md") && has_library_changes - fail("Please include a CHANGELOG entry. \n") -end - -# The coding love -the_coding_love.random - -# Junit -junit.parse "fastlane/test_output/report.junit" -junit.report \ No newline at end of file diff --git a/Example/MacOSTests/Info.plist b/Example/MacOSTests/Info.plist deleted file mode 100644 index 6c40a6cd..00000000 --- a/Example/MacOSTests/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/Example/Podfile b/Example/Podfile deleted file mode 100644 index bbc76f26..00000000 --- a/Example/Podfile +++ /dev/null @@ -1,35 +0,0 @@ -use_frameworks! - -target 'SugarRecord_Example' do - pod 'SnapKit' - pod 'SugarRecord', :path => "../" - pod 'SugarRecord/CoreData', :path => "../" - pod 'SugarRecord/CoreData+iCloud', :path => "../" -end - -target 'SugarRecord_Tests' do - pod 'SugarRecord', :path => "../" - pod 'SugarRecord/CoreData', :path => "../" - pod 'SugarRecord/CoreData+iCloud', :path => "../" - pod 'Quick', "~> 0.10" - pod 'Nimble', '~> 5.0' - pod "OHHTTPStubs" - pod 'OHHTTPStubs/Swift' -end - -target 'SugarRecord-MacOSExample' do - pod 'SnapKit' - pod 'SugarRecord', :path => "../" - pod 'SugarRecord/CoreData', :path => "../" - pod 'SugarRecord/CoreData+iCloud', :path => "../" -end - -target 'SugarRecord_MacOSTests' do - pod 'SugarRecord', :path => "../" - pod 'SugarRecord/CoreData', :path => "../" - pod 'SugarRecord/CoreData+iCloud', :path => "../" - pod 'Quick', "~> 0.10" - pod 'Nimble', '~> 5.0' - pod "OHHTTPStubs" - pod 'OHHTTPStubs/Swift' -end diff --git a/Example/Podfile.lock b/Example/Podfile.lock deleted file mode 100644 index 57a163d6..00000000 --- a/Example/Podfile.lock +++ /dev/null @@ -1,53 +0,0 @@ -PODS: - - Nimble (5.1.1) - - OHHTTPStubs (6.0.0): - - OHHTTPStubs/Default (= 6.0.0) - - OHHTTPStubs/Core (6.0.0) - - OHHTTPStubs/Default (6.0.0): - - OHHTTPStubs/Core - - OHHTTPStubs/JSON - - OHHTTPStubs/NSURLSession - - OHHTTPStubs/OHPathHelpers - - OHHTTPStubs/JSON (6.0.0): - - OHHTTPStubs/Core - - OHHTTPStubs/NSURLSession (6.0.0): - - OHHTTPStubs/Core - - OHHTTPStubs/OHPathHelpers (6.0.0) - - OHHTTPStubs/Swift (6.0.0): - - OHHTTPStubs/Default - - Quick (0.10.0) - - Result (3.2.1) - - SnapKit (3.2.0) - - SugarRecord (3.1.2): - - SugarRecord/CoreData (= 3.1.2) - - SugarRecord/CoreData+iCloud (= 3.1.2) - - SugarRecord/CoreData (3.1.2): - - Result (~> 3.0) - - SugarRecord/CoreData+iCloud (3.1.2): - - Result (~> 3.0) - -DEPENDENCIES: - - Nimble (~> 5.0) - - OHHTTPStubs - - OHHTTPStubs/Swift - - Quick (~> 0.10) - - SnapKit - - SugarRecord (from `../`) - - SugarRecord/CoreData (from `../`) - - SugarRecord/CoreData+iCloud (from `../`) - -EXTERNAL SOURCES: - SugarRecord: - :path: ../ - -SPEC CHECKSUMS: - Nimble: 415e3aa3267e7bc2c96b05fa814ddea7bb686a29 - OHHTTPStubs: 752f9b11fd810a15162d50f11c06ff94f8e012eb - Quick: 5d290df1c69d5ee2f0729956dcf0fd9a30447eaa - Result: 2453a22e5c5b11c0c3a478736e82cd02f763b781 - SnapKit: 1ca44df72cfa543218d177cb8aab029d10d86ea7 - SugarRecord: be6aa5c18b4a4dec0de4c1f49fc61c85eabb5328 - -PODFILE CHECKSUM: 8f4854ebcb294b575e611ae8266ca5644ad58e63 - -COCOAPODS: 1.1.1 diff --git a/Example/SugarRecord-ExampleMacOS/Resources/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/SugarRecord-ExampleMacOS/Resources/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 2db2b1c7..00000000 --- a/Example/SugarRecord-ExampleMacOS/Resources/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "images" : [ - { - "idiom" : "mac", - "size" : "16x16", - "scale" : "1x" - }, - { - "idiom" : "mac", - "size" : "16x16", - "scale" : "2x" - }, - { - "idiom" : "mac", - "size" : "32x32", - "scale" : "1x" - }, - { - "idiom" : "mac", - "size" : "32x32", - "scale" : "2x" - }, - { - "idiom" : "mac", - "size" : "128x128", - "scale" : "1x" - }, - { - "idiom" : "mac", - "size" : "128x128", - "scale" : "2x" - }, - { - "idiom" : "mac", - "size" : "256x256", - "scale" : "1x" - }, - { - "idiom" : "mac", - "size" : "256x256", - "scale" : "2x" - }, - { - "idiom" : "mac", - "size" : "512x512", - "scale" : "1x" - }, - { - "idiom" : "mac", - "size" : "512x512", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Example/SugarRecord-ExampleMacOS/Resources/DataModels/Basic.xcdatamodeld/Basic.xcdatamodel/contents b/Example/SugarRecord-ExampleMacOS/Resources/DataModels/Basic.xcdatamodeld/Basic.xcdatamodel/contents deleted file mode 100644 index 3e985dc3..00000000 --- a/Example/SugarRecord-ExampleMacOS/Resources/DataModels/Basic.xcdatamodeld/Basic.xcdatamodel/contents +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/Example/SugarRecord-ExampleMacOS/Resources/Storyboards/Base.lproj/Main.storyboard b/Example/SugarRecord-ExampleMacOS/Resources/Storyboards/Base.lproj/Main.storyboard deleted file mode 100644 index 53bc769e..00000000 --- a/Example/SugarRecord-ExampleMacOS/Resources/Storyboards/Base.lproj/Main.storyboard +++ /dev/null @@ -1,926 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Default - - - - - - - Left to Right - - - - - - - Right to Left - - - - - - - - - - - Default - - - - - - - Left to Right - - - - - - - Right to Left - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/SugarRecord-ExampleMacOS/Source/Examples/CoreData/Models/BasicObject.swift b/Example/SugarRecord-ExampleMacOS/Source/Examples/CoreData/Models/BasicObject.swift deleted file mode 100644 index b4ae5c8c..00000000 --- a/Example/SugarRecord-ExampleMacOS/Source/Examples/CoreData/Models/BasicObject.swift +++ /dev/null @@ -1,15 +0,0 @@ -import Foundation -import CoreData - -class BasicObject: NSManagedObject { - - // Insert code here to add functionality to your managed object subclass - -} - -extension BasicObject { - - @NSManaged var date: Date? - @NSManaged var name: String? - -} diff --git a/Example/SugarRecord-ExampleMacOS/Source/Examples/CoreData/Models/CoreDataBasicEntity.swift b/Example/SugarRecord-ExampleMacOS/Source/Examples/CoreData/Models/CoreDataBasicEntity.swift deleted file mode 100644 index 6d8f2e7c..00000000 --- a/Example/SugarRecord-ExampleMacOS/Source/Examples/CoreData/Models/CoreDataBasicEntity.swift +++ /dev/null @@ -1,19 +0,0 @@ -import Foundation - -class CoreDataBasicEntity { - - // MARK: - Attributes - - let dateString: String - let name: String - - // MARK: - Init - - init(object: BasicObject) { - let dateFormater = DateFormatter() - dateFormater.timeStyle = DateFormatter.Style.short - dateFormater.dateStyle = DateFormatter.Style.short - self.dateString = dateFormater.string(from: object.date! as Date) - self.name = object.name! - } -} diff --git a/Example/SugarRecord-ExampleMacOS/Source/Examples/DetailsViewController.swift b/Example/SugarRecord-ExampleMacOS/Source/Examples/DetailsViewController.swift deleted file mode 100644 index 21866d86..00000000 --- a/Example/SugarRecord-ExampleMacOS/Source/Examples/DetailsViewController.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// DetailsViewController.swift -// SugarRecord_Example -// -// Created by Jorge Martín Espinosa on 10/7/17. -// Copyright © 2017 CocoaPods. All rights reserved. -// - -import Foundation -import Cocoa - -class DetailsViewController: NSViewController { - - @IBOutlet weak var nameTextField: NSTextField! - @IBOutlet weak var datePicker: NSDatePicker! - - var selectedItem: BasicObject? { - didSet { - if self.selectedItem != nil { - nameTextField.stringValue = self.selectedItem!.name! - nameTextField.isEnabled = true - - datePicker.dateValue = self.selectedItem!.date! - datePicker.isEnabled = true - } else { - nameTextField.stringValue = "" - nameTextField.isEnabled = false - - datePicker.isEnabled = false - } - } - } - - @IBAction func nameChanged(sender: Any?) { - try! db.operation({ (context, save) in - if let item = try! context.request(BasicObject.self) - .filtered(with: "name", equalTo: self.selectedItem!.name ?? "").fetch().first { - item.name = self.nameTextField!.stringValue - save() - } - }) - } - - @IBAction func dateChanged(sender: Any?) { - try! db.operation({ (context, save) in - if let item = try! context.request(BasicObject.self) - .filtered(with: "name", equalTo: self.selectedItem!.name ?? "").fetch().first { - item.date = self.datePicker!.dateValue - save() - } - }) - } -} diff --git a/Example/SugarRecord-ExampleMacOS/Source/Examples/Helpers/Directory.swift b/Example/SugarRecord-ExampleMacOS/Source/Examples/Helpers/Directory.swift deleted file mode 100644 index 0b6e328c..00000000 --- a/Example/SugarRecord-ExampleMacOS/Source/Examples/Helpers/Directory.swift +++ /dev/null @@ -1,6 +0,0 @@ -import Foundation - -func databasePath(_ name: String) -> String { - let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory,.userDomainMask, true)[0] as String - return documentsPath + "/\(name)" -} diff --git a/Example/SugarRecord-ExampleMacOS/Source/Examples/Helpers/Random.swift b/Example/SugarRecord-ExampleMacOS/Source/Examples/Helpers/Random.swift deleted file mode 100644 index 4030cd84..00000000 --- a/Example/SugarRecord-ExampleMacOS/Source/Examples/Helpers/Random.swift +++ /dev/null @@ -1,13 +0,0 @@ -import Foundation - - -func randomStringWithLength (_ len : Int) -> NSString { - let letters : NSString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" - let randomString : NSMutableString = NSMutableString(capacity: len) - for _ in 0 ..< len { - let length = UInt32 (letters.length) - let rand = arc4random_uniform(length) - randomString.appendFormat("%C", letters.character(at: Int(rand))) - } - return randomString -} diff --git a/Example/SugarRecord-ExampleMacOS/Source/Main/AppDelegate.swift b/Example/SugarRecord-ExampleMacOS/Source/Main/AppDelegate.swift deleted file mode 100644 index 733d3376..00000000 --- a/Example/SugarRecord-ExampleMacOS/Source/Main/AppDelegate.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// AppDelegate.swift -// SugarRecord-ExampleMacOS -// -// Created by Jorge Martín Espinosa on 10/7/17. -// Copyright © 2017 CocoaPods. All rights reserved. -// - -import Cocoa -import SugarRecord - -@NSApplicationMain -class AppDelegate: NSObject, NSApplicationDelegate { - - - - func applicationDidFinishLaunching(_ aNotification: Notification) { - // Insert code here to initialize your application - } - - func applicationWillTerminate(_ aNotification: Notification) { - - } - -} - -var db: CoreDataDefaultStorage = { - let store = CoreDataStore.named("cd_basic") - let bundle = Bundle.main - let model = CoreDataObjectModel.merged([bundle]) - let defaultStorage = try! CoreDataDefaultStorage(store: store, model: model) - return defaultStorage -}() diff --git a/Example/SugarRecord-ExampleMacOS/Source/Main/ListViewController.swift b/Example/SugarRecord-ExampleMacOS/Source/Main/ListViewController.swift deleted file mode 100644 index 166541d7..00000000 --- a/Example/SugarRecord-ExampleMacOS/Source/Main/ListViewController.swift +++ /dev/null @@ -1,115 +0,0 @@ -// -// ViewController.swift -// SugarRecord-ExampleMacOS -// -// Created by Jorge Martín Espinosa on 10/7/17. -// Copyright © 2017 CocoaPods. All rights reserved. -// - -import Cocoa -import SugarRecord -import CoreData - -class ListViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource { - - // MARK: - Attributes - - lazy var entitiesObservable: RequestObservable = { - let request = FetchRequest().sorted(with: "date", ascending: false) - return db.observable(request: request) - }() - - var entities: [BasicObject] = [] { - didSet { - updateData() - } - } - - @IBOutlet weak var tableView: NSTableView! - @IBOutlet weak var deleteButton: NSButton! - - override func viewDidLoad() { - super.viewDidLoad() - - tableView.dataSource = self - tableView.delegate = self - - entitiesObservable.observe { changes in - switch(changes) { - case .initial(let objects): - self.entities = objects - case .update(let deletions, let insertions, let modifications): - deletions.forEach { - self.entities.remove(at: $0) - } - - insertions.forEach { (position, item) in - self.entities.insert(item, at: position) - } - - print("\(deletions.count) deleted | \(insertions.count) inserted | \(modifications.count) modified") - case .error(let error): - print("Something went wrong: \(error)") - } - self.updateData() - } - } - - func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? { - if let cell = tableView.make(withIdentifier: "simple_cell", owner: nil) as? NSTableCellView { - cell.textField?.stringValue = entities[row].name ?? "" - return cell - } - return nil - } - - func tableViewSelectionDidChange(_ notification: Notification) { - if tableView.selectedRow >= 0 && tableView.selectedRow < entities.count { - let selectedItemValues = entities[tableView.selectedRow] - let fetchRequest = FetchRequest().filtered(with: "name", equalTo: selectedItemValues.name ?? "") - if let item = try? db.fetch(fetchRequest) { - (parent as? SplitViewController)?.onSelectionChanged(item: item.first) - } - deleteButton.isEnabled = true - } else { - (parent as? SplitViewController)?.onSelectionChanged(item: nil) - deleteButton.isEnabled = false - } - } - - func numberOfRows(in tableView: NSTableView) -> Int { - return entities.count - } - - @IBAction func addEntity(sender: Any?) { - try! db.operation { (context, save) -> Void in - let _object: BasicObject = try! context.new() - _object.date = Date() - _object.name = randomStringWithLength(10) as String - try! context.insert(_object) - save() - } - } - - @IBAction func deleteEntity(sender: Any?) { - let _object = self.entities[tableView.selectedRow] - try! db.operation { (context, save) -> Void in - if let object = try! context.request(BasicObject.self).filtered(with: "name", equalTo: _object.name ?? "").fetch().first { - try! context.remove(object) - save() - } - } - } - - func updateData() { - self.tableView.reloadData() - } - - override var representedObject: Any? { - didSet { - // Update the view, if already loaded. - } - } - -} - diff --git a/Example/SugarRecord-ExampleMacOS/Source/Main/SplitViewController.swift b/Example/SugarRecord-ExampleMacOS/Source/Main/SplitViewController.swift deleted file mode 100644 index b69ddc33..00000000 --- a/Example/SugarRecord-ExampleMacOS/Source/Main/SplitViewController.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// SplitViewController.swift -// SugarRecord_Example -// -// Created by Jorge Martín Espinosa on 10/7/17. -// Copyright © 2017 CocoaPods. All rights reserved. -// - -import Foundation -import Cocoa - -class SplitViewController: NSSplitViewController { - - var detailsViewController: DetailsViewController? { - return splitViewItems[1].viewController as? DetailsViewController - } - - func onSelectionChanged(item: BasicObject?) { - detailsViewController?.selectedItem = item - } - -} diff --git a/Example/SugarRecord-ExampleMacOS/Supporting Files/Info.plist b/Example/SugarRecord-ExampleMacOS/Supporting Files/Info.plist deleted file mode 100644 index a5bc038f..00000000 --- a/Example/SugarRecord-ExampleMacOS/Supporting Files/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - Copyright © 2017 CocoaPods. All rights reserved. - NSMainStoryboardFile - Main - NSPrincipalClass - NSApplication - - diff --git a/Example/SugarRecord-ExampleMacOS/Supporting Files/SugarRecord_ExampleMacOS.entitlements b/Example/SugarRecord-ExampleMacOS/Supporting Files/SugarRecord_ExampleMacOS.entitlements deleted file mode 100644 index f2ef3ae0..00000000 --- a/Example/SugarRecord-ExampleMacOS/Supporting Files/SugarRecord_ExampleMacOS.entitlements +++ /dev/null @@ -1,10 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.files.user-selected.read-only - - - diff --git a/Example/SugarRecord.xcodeproj/project.pbxproj b/Example/SugarRecord.xcodeproj/project.pbxproj deleted file mode 100644 index 2bb64f65..00000000 --- a/Example/SugarRecord.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1490 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 0D4B9E0213B3D0246753DDE6 /* Pods_SugarRecord_MacOSTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51050438EF72D11B40A20FA7 /* Pods_SugarRecord_MacOSTests.framework */; }; - 23E13E5B1D96896300204C82 /* CoreData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E341D96896300204C82 /* CoreData.swift */; }; - 23E13E5D1D96896300204C82 /* Track+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E381D96896300204C82 /* Track+CoreDataProperties.swift */; }; - 23E13E5E1D96896300204C82 /* Track.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E391D96896300204C82 /* Track.swift */; }; - 23E13E611D96896300204C82 /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E3E1D96896300204C82 /* DataModel.xcdatamodeld */; }; - 23E13E621D96896300204C82 /* CoreDataChangeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E431D96896300204C82 /* CoreDataChangeTests.swift */; }; - 23E13E631D96896300204C82 /* CoreDataObservableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E441D96896300204C82 /* CoreDataObservableTests.swift */; }; - 23E13E641D96896300204C82 /* ObjectModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E451D96896300204C82 /* ObjectModelTests.swift */; }; - 23E13E651D96896300204C82 /* OptionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E461D96896300204C82 /* OptionsTests.swift */; }; - 23E13E661D96896300204C82 /* StoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E471D96896300204C82 /* StoreTests.swift */; }; - 23E13E671D96896300204C82 /* CoreDataDefaultStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E491D96896300204C82 /* CoreDataDefaultStorageTests.swift */; }; - 23E13E681D96896300204C82 /* RequestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E4C1D96896300204C82 /* RequestTests.swift */; }; - 23E13E691D96896300204C82 /* DirUtilsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E4E1D96896300204C82 /* DirUtilsTests.swift */; }; - 23E13E6A1D96896300204C82 /* VersionControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E501D96896300204C82 /* VersionControllerTests.swift */; }; - 23E13E6B1D96896300204C82 /* VersionProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E511D96896300204C82 /* VersionProviderTests.swift */; }; - 23E13E8F1D96899000204C82 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 23E13E721D96899000204C82 /* Assets.xcassets */; }; - 23E13E901D96899000204C82 /* Basic.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E741D96899000204C82 /* Basic.xcdatamodeld */; }; - 23E13E911D96899000204C82 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 23E13E771D96899000204C82 /* LaunchScreen.storyboard */; }; - 23E13E921D96899000204C82 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E7A1D96899000204C82 /* AppDelegate.swift */; }; - 23E13E991D96899000204C82 /* Directory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E8B1D96899000204C82 /* Directory.swift */; }; - 23E13E9A1D96899000204C82 /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E8C1D96899000204C82 /* Random.swift */; }; - 23E13E9B1D96899000204C82 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E8E1D96899000204C82 /* ViewController.swift */; }; - 23FB2C051E97C8BB00432BCB /* CoreDataBasicView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23FB2BFA1E97C8BB00432BCB /* CoreDataBasicView.swift */; }; - 23FB2C061E97C8BB00432BCB /* BasicObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23FB2BFC1E97C8BB00432BCB /* BasicObject.swift */; }; - 23FB2C071E97C8BB00432BCB /* CoreDataBasicEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23FB2BFD1E97C8BB00432BCB /* CoreDataBasicEntity.swift */; }; - 4DE9B2AC1F138FF900B59AEE /* CoreData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E341D96896300204C82 /* CoreData.swift */; }; - 4DE9B2AD1F138FF900B59AEE /* Track+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E381D96896300204C82 /* Track+CoreDataProperties.swift */; }; - 4DE9B2AE1F138FF900B59AEE /* Track.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E391D96896300204C82 /* Track.swift */; }; - 4DE9B2AF1F138FF900B59AEE /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E3E1D96896300204C82 /* DataModel.xcdatamodeld */; }; - 4DE9B2B01F138FF900B59AEE /* CoreDataChangeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E431D96896300204C82 /* CoreDataChangeTests.swift */; }; - 4DE9B2B11F138FF900B59AEE /* CoreDataObservableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E441D96896300204C82 /* CoreDataObservableTests.swift */; }; - 4DE9B2B21F138FF900B59AEE /* ObjectModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E451D96896300204C82 /* ObjectModelTests.swift */; }; - 4DE9B2B31F138FF900B59AEE /* OptionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E461D96896300204C82 /* OptionsTests.swift */; }; - 4DE9B2B41F138FF900B59AEE /* StoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E471D96896300204C82 /* StoreTests.swift */; }; - 4DE9B2B51F138FF900B59AEE /* CoreDataDefaultStorageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E491D96896300204C82 /* CoreDataDefaultStorageTests.swift */; }; - 4DE9B2B61F138FF900B59AEE /* RequestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E4C1D96896300204C82 /* RequestTests.swift */; }; - 4DE9B2B71F138FF900B59AEE /* DirUtilsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E4E1D96896300204C82 /* DirUtilsTests.swift */; }; - 4DE9B2B81F138FF900B59AEE /* VersionControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E501D96896300204C82 /* VersionControllerTests.swift */; }; - 4DE9B2B91F138FF900B59AEE /* VersionProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E511D96896300204C82 /* VersionProviderTests.swift */; }; - 4DE9B2C31F13913300B59AEE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DE9B2C21F13913300B59AEE /* AppDelegate.swift */; }; - 4DE9B2C51F13913300B59AEE /* ListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DE9B2C41F13913300B59AEE /* ListViewController.swift */; }; - 4DE9B2C71F13913300B59AEE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4DE9B2C61F13913300B59AEE /* Assets.xcassets */; }; - 4DE9B2CA1F13913300B59AEE /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4DE9B2C81F13913300B59AEE /* Main.storyboard */; }; - 4DE9B2E01F139B9B00B59AEE /* BasicObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DE9B2DE1F139A2C00B59AEE /* BasicObject.swift */; }; - 4DE9B2E11F139B9B00B59AEE /* CoreDataBasicEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DE9B2DF1F139A2C00B59AEE /* CoreDataBasicEntity.swift */; }; - 4DE9B2E51F139C3700B59AEE /* Directory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E8B1D96899000204C82 /* Directory.swift */; }; - 4DE9B2E61F139C3700B59AEE /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23E13E8C1D96899000204C82 /* Random.swift */; }; - 4DE9B2E71F139CA200B59AEE /* Basic.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 4DE9B2D51F1399CA00B59AEE /* Basic.xcdatamodeld */; }; - 4DE9B2E91F13A0F600B59AEE /* SplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DE9B2E81F13A0F600B59AEE /* SplitViewController.swift */; }; - 4DE9B2EB1F13A18C00B59AEE /* DetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DE9B2EA1F13A18C00B59AEE /* DetailsViewController.swift */; }; - 4DE9B2EC1F13A35700B59AEE /* DetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DE9B2EA1F13A18C00B59AEE /* DetailsViewController.swift */; }; - 4DE9B2ED1F13A35700B59AEE /* SplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DE9B2E81F13A0F600B59AEE /* SplitViewController.swift */; }; - 7F0014DAE56FEBE9A77EB8F3 /* Pods_SugarRecord_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE4511BDA74E45A8EA0229D9 /* Pods_SugarRecord_Tests.framework */; }; - 9BF9E2C7A1F9D1D232693210 /* Pods_SugarRecord_MacOSExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51C31F64CDE7FD4553FC46C1 /* Pods_SugarRecord_MacOSExample.framework */; }; - A682778445C166ABA1550ECF /* Pods_SugarRecord_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB6674BDC2C223325C9246F4 /* Pods_SugarRecord_Example.framework */; }; - E9824064F609CB4C02C76B65 /* Pods_SugarRecord_ExampleMacOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88F9F4CFBFCB1137A2C0BBF0 /* Pods_SugarRecord_ExampleMacOS.framework */; }; - EFB805D2889B4336C9072AB8 /* Pods_MacOSTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A6ED7D1E3A83450EF0B0BC5 /* Pods_MacOSTest.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 4DE9B2D11F13916400B59AEE /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 607FACC81AFB9204008FA782 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4DE9B2BF1F13913300B59AEE; - remoteInfo = "SugarRecord-ExampleMacOS"; - }; - 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 607FACC81AFB9204008FA782 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 607FACCF1AFB9204008FA782; - remoteInfo = SugarRecord; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 199B6E9AFF9F22F151FCACD5 /* Pods-SugarRecord_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SugarRecord_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SugarRecord_Example/Pods-SugarRecord_Example.debug.xcconfig"; sourceTree = ""; }; - 23E13E341D96896300204C82 /* CoreData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreData.swift; sourceTree = ""; }; - 23E13E381D96896300204C82 /* Track+CoreDataProperties.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Track+CoreDataProperties.swift"; sourceTree = ""; }; - 23E13E391D96896300204C82 /* Track.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Track.swift; sourceTree = ""; }; - 23E13E3F1D96896300204C82 /* DataModel.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = DataModel.xcdatamodel; sourceTree = ""; }; - 23E13E431D96896300204C82 /* CoreDataChangeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataChangeTests.swift; sourceTree = ""; }; - 23E13E441D96896300204C82 /* CoreDataObservableTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataObservableTests.swift; sourceTree = ""; }; - 23E13E451D96896300204C82 /* ObjectModelTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObjectModelTests.swift; sourceTree = ""; }; - 23E13E461D96896300204C82 /* OptionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OptionsTests.swift; sourceTree = ""; }; - 23E13E471D96896300204C82 /* StoreTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreTests.swift; sourceTree = ""; }; - 23E13E491D96896300204C82 /* CoreDataDefaultStorageTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataDefaultStorageTests.swift; sourceTree = ""; }; - 23E13E4C1D96896300204C82 /* RequestTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestTests.swift; sourceTree = ""; }; - 23E13E4E1D96896300204C82 /* DirUtilsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DirUtilsTests.swift; sourceTree = ""; }; - 23E13E501D96896300204C82 /* VersionControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VersionControllerTests.swift; sourceTree = ""; }; - 23E13E511D96896300204C82 /* VersionProviderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VersionProviderTests.swift; sourceTree = ""; }; - 23E13E721D96899000204C82 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 23E13E751D96899000204C82 /* Basic.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Basic.xcdatamodel; sourceTree = ""; }; - 23E13E771D96899000204C82 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; - 23E13E7A1D96899000204C82 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 23E13E8B1D96899000204C82 /* Directory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Directory.swift; sourceTree = ""; }; - 23E13E8C1D96899000204C82 /* Random.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Random.swift; sourceTree = ""; }; - 23E13E8E1D96899000204C82 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 23FB2BFA1E97C8BB00432BCB /* CoreDataBasicView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataBasicView.swift; sourceTree = ""; }; - 23FB2BFC1E97C8BB00432BCB /* BasicObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicObject.swift; sourceTree = ""; }; - 23FB2BFD1E97C8BB00432BCB /* CoreDataBasicEntity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataBasicEntity.swift; sourceTree = ""; }; - 35FF60B77D16780A36BDC384 /* Pods-SugarRecord-MacOSExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SugarRecord-MacOSExample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SugarRecord-MacOSExample/Pods-SugarRecord-MacOSExample.debug.xcconfig"; sourceTree = ""; }; - 43D59494AB8B01F49D62B037 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; - 4B1CE16714333FEF4FCD084E /* Pods-SugarRecord-ExampleMacOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SugarRecord-ExampleMacOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-SugarRecord-ExampleMacOS/Pods-SugarRecord-ExampleMacOS.release.xcconfig"; sourceTree = ""; }; - 4B2199C871394D189D0CBFFF /* Pods-SugarRecord-ExampleMacOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SugarRecord-ExampleMacOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SugarRecord-ExampleMacOS/Pods-SugarRecord-ExampleMacOS.debug.xcconfig"; sourceTree = ""; }; - 4DE9B2A21F138FC500B59AEE /* SugarRecord_MacOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SugarRecord_MacOSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 4DE9B2AA1F138FDD00B59AEE /* Pods_SugarRecord_Tests.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Pods_SugarRecord_Tests.framework; path = "Pods/../build/Debug-iphoneos/Pods_SugarRecord_Tests.framework"; sourceTree = ""; }; - 4DE9B2C01F13913300B59AEE /* SugarRecord-MacOSExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SugarRecord-MacOSExample.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4DE9B2C21F13913300B59AEE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 4DE9B2C41F13913300B59AEE /* ListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListViewController.swift; sourceTree = ""; }; - 4DE9B2C61F13913300B59AEE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 4DE9B2C91F13913300B59AEE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 4DE9B2CB1F13913300B59AEE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 4DE9B2CC1F13913300B59AEE /* SugarRecord_ExampleMacOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SugarRecord_ExampleMacOS.entitlements; sourceTree = ""; }; - 4DE9B2D61F1399CA00B59AEE /* Basic.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Basic.xcdatamodel; sourceTree = ""; }; - 4DE9B2DE1F139A2C00B59AEE /* BasicObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicObject.swift; sourceTree = ""; }; - 4DE9B2DF1F139A2C00B59AEE /* CoreDataBasicEntity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataBasicEntity.swift; sourceTree = ""; }; - 4DE9B2E31F139C2300B59AEE /* Directory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Directory.swift; sourceTree = ""; }; - 4DE9B2E41F139C2300B59AEE /* Random.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Random.swift; sourceTree = ""; }; - 4DE9B2E81F13A0F600B59AEE /* SplitViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplitViewController.swift; sourceTree = ""; }; - 4DE9B2EA1F13A18C00B59AEE /* DetailsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailsViewController.swift; sourceTree = ""; }; - 4DE9B2F01F13BC4B00B59AEE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 51050438EF72D11B40A20FA7 /* Pods_SugarRecord_MacOSTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SugarRecord_MacOSTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 51C31F64CDE7FD4553FC46C1 /* Pods_SugarRecord_MacOSExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SugarRecord_MacOSExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 54DE24CF394C35117CF642A6 /* Pods-SugarRecord_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SugarRecord_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SugarRecord_Tests/Pods-SugarRecord_Tests.debug.xcconfig"; sourceTree = ""; }; - 587F20500BE8B0716DFB56D2 /* Pods-MacOSTest.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MacOSTest.release.xcconfig"; path = "Pods/Target Support Files/Pods-MacOSTest/Pods-MacOSTest.release.xcconfig"; sourceTree = ""; }; - 5A6ED7D1E3A83450EF0B0BC5 /* Pods_MacOSTest.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MacOSTest.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B476131E81A65EF61C0905C /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; - 607FACD01AFB9204008FA782 /* SugarRecord_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SugarRecord_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 607FACE51AFB9204008FA782 /* SugarRecord_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SugarRecord_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 65A181DD622A1F2F3D27044A /* SugarRecord.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = SugarRecord.podspec; path = ../SugarRecord.podspec; sourceTree = ""; }; - 7B2B361FEDD2996B9562BBB2 /* Pods-SugarRecord_MacOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SugarRecord_MacOSTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SugarRecord_MacOSTests/Pods-SugarRecord_MacOSTests.debug.xcconfig"; sourceTree = ""; }; - 8026227C811CCCAE52CFE75A /* Pods-MacOSTest.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MacOSTest.debug.xcconfig"; path = "Pods/Target Support Files/Pods-MacOSTest/Pods-MacOSTest.debug.xcconfig"; sourceTree = ""; }; - 88F9F4CFBFCB1137A2C0BBF0 /* Pods_SugarRecord_ExampleMacOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SugarRecord_ExampleMacOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 92C812F114142E61803D9DEF /* Pods-SugarRecord_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SugarRecord_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-SugarRecord_Example/Pods-SugarRecord_Example.release.xcconfig"; sourceTree = ""; }; - A48C60DE617E4E019B077F5A /* Pods-SugarRecord_MacOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SugarRecord_MacOSTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SugarRecord_MacOSTests/Pods-SugarRecord_MacOSTests.release.xcconfig"; sourceTree = ""; }; - B12A993BAFFB1BD0E68DDEA2 /* Pods-SugarRecord-MacOSExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SugarRecord-MacOSExample.release.xcconfig"; path = "Pods/Target Support Files/Pods-SugarRecord-MacOSExample/Pods-SugarRecord-MacOSExample.release.xcconfig"; sourceTree = ""; }; - BB6674BDC2C223325C9246F4 /* Pods_SugarRecord_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SugarRecord_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DE4511BDA74E45A8EA0229D9 /* Pods_SugarRecord_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SugarRecord_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EF1427C1C51BC3D125AAFF0F /* Pods-SugarRecord_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SugarRecord_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SugarRecord_Tests/Pods-SugarRecord_Tests.release.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 4DE9B29F1F138FC500B59AEE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - EFB805D2889B4336C9072AB8 /* Pods_MacOSTest.framework in Frameworks */, - 0D4B9E0213B3D0246753DDE6 /* Pods_SugarRecord_MacOSTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4DE9B2BD1F13913300B59AEE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E9824064F609CB4C02C76B65 /* Pods_SugarRecord_ExampleMacOS.framework in Frameworks */, - 9BF9E2C7A1F9D1D232693210 /* Pods_SugarRecord_MacOSExample.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607FACCD1AFB9204008FA782 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - A682778445C166ABA1550ECF /* Pods_SugarRecord_Example.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607FACE21AFB9204008FA782 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 7F0014DAE56FEBE9A77EB8F3 /* Pods_SugarRecord_Tests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 23E13E331D96896300204C82 /* Helpers */ = { - isa = PBXGroup; - children = ( - 23E13E341D96896300204C82 /* CoreData.swift */, - ); - name = Helpers; - path = ../../Tests/Helpers; - sourceTree = ""; - }; - 23E13E361D96896300204C82 /* Models */ = { - isa = PBXGroup; - children = ( - 23E13E371D96896300204C82 /* CoreData */, - ); - name = Models; - path = ../../Tests/Models; - sourceTree = ""; - }; - 23E13E371D96896300204C82 /* CoreData */ = { - isa = PBXGroup; - children = ( - 23E13E381D96896300204C82 /* Track+CoreDataProperties.swift */, - 23E13E391D96896300204C82 /* Track.swift */, - ); - path = CoreData; - sourceTree = ""; - }; - 23E13E3D1D96896300204C82 /* Resources */ = { - isa = PBXGroup; - children = ( - 23E13E3E1D96896300204C82 /* DataModel.xcdatamodeld */, - ); - name = Resources; - path = ../../Tests/Resources; - sourceTree = ""; - }; - 23E13E401D96896300204C82 /* Source */ = { - isa = PBXGroup; - children = ( - 23E13E411D96896300204C82 /* CoreData */, - 23E13E4A1D96896300204C82 /* Foundation */, - 23E13E521D96896300204C82 /* Reactive */, - ); - name = Source; - path = ../../Tests/Source; - sourceTree = ""; - }; - 23E13E411D96896300204C82 /* CoreData */ = { - isa = PBXGroup; - children = ( - 23E13E421D96896300204C82 /* Entities */, - 23E13E481D96896300204C82 /* Storage */, - ); - path = CoreData; - sourceTree = ""; - }; - 23E13E421D96896300204C82 /* Entities */ = { - isa = PBXGroup; - children = ( - 23E13E431D96896300204C82 /* CoreDataChangeTests.swift */, - 23E13E441D96896300204C82 /* CoreDataObservableTests.swift */, - 23E13E451D96896300204C82 /* ObjectModelTests.swift */, - 23E13E461D96896300204C82 /* OptionsTests.swift */, - 23E13E471D96896300204C82 /* StoreTests.swift */, - ); - path = Entities; - sourceTree = ""; - }; - 23E13E481D96896300204C82 /* Storage */ = { - isa = PBXGroup; - children = ( - 23E13E491D96896300204C82 /* CoreDataDefaultStorageTests.swift */, - ); - path = Storage; - sourceTree = ""; - }; - 23E13E4A1D96896300204C82 /* Foundation */ = { - isa = PBXGroup; - children = ( - 23E13E4B1D96896300204C82 /* Entities */, - 23E13E4D1D96896300204C82 /* Utils */, - 23E13E4F1D96896300204C82 /* Version */, - ); - path = Foundation; - sourceTree = ""; - }; - 23E13E4B1D96896300204C82 /* Entities */ = { - isa = PBXGroup; - children = ( - 23E13E4C1D96896300204C82 /* RequestTests.swift */, - ); - path = Entities; - sourceTree = ""; - }; - 23E13E4D1D96896300204C82 /* Utils */ = { - isa = PBXGroup; - children = ( - 23E13E4E1D96896300204C82 /* DirUtilsTests.swift */, - ); - path = Utils; - sourceTree = ""; - }; - 23E13E4F1D96896300204C82 /* Version */ = { - isa = PBXGroup; - children = ( - 23E13E501D96896300204C82 /* VersionControllerTests.swift */, - 23E13E511D96896300204C82 /* VersionProviderTests.swift */, - ); - path = Version; - sourceTree = ""; - }; - 23E13E521D96896300204C82 /* Reactive */ = { - isa = PBXGroup; - children = ( - ); - path = Reactive; - sourceTree = ""; - }; - 23E13E701D96899000204C82 /* Resources */ = { - isa = PBXGroup; - children = ( - 23E13E711D96899000204C82 /* Assets */, - 23E13E731D96899000204C82 /* DataModels */, - 23E13E761D96899000204C82 /* Storyboards */, - ); - path = Resources; - sourceTree = ""; - }; - 23E13E711D96899000204C82 /* Assets */ = { - isa = PBXGroup; - children = ( - 23E13E721D96899000204C82 /* Assets.xcassets */, - ); - path = Assets; - sourceTree = ""; - }; - 23E13E731D96899000204C82 /* DataModels */ = { - isa = PBXGroup; - children = ( - 23E13E741D96899000204C82 /* Basic.xcdatamodeld */, - ); - path = DataModels; - sourceTree = ""; - }; - 23E13E761D96899000204C82 /* Storyboards */ = { - isa = PBXGroup; - children = ( - 23E13E771D96899000204C82 /* LaunchScreen.storyboard */, - ); - path = Storyboards; - sourceTree = ""; - }; - 23E13E781D96899000204C82 /* Source */ = { - isa = PBXGroup; - children = ( - 23FB2BF71E97C8BB00432BCB /* Examples */, - 23E13E791D96899000204C82 /* App */, - 23E13E8A1D96899000204C82 /* Helpers */, - 23E13E8D1D96899000204C82 /* Main */, - ); - path = Source; - sourceTree = ""; - }; - 23E13E791D96899000204C82 /* App */ = { - isa = PBXGroup; - children = ( - 23E13E7A1D96899000204C82 /* AppDelegate.swift */, - ); - path = App; - sourceTree = ""; - }; - 23E13E8A1D96899000204C82 /* Helpers */ = { - isa = PBXGroup; - children = ( - 23E13E8B1D96899000204C82 /* Directory.swift */, - 23E13E8C1D96899000204C82 /* Random.swift */, - ); - path = Helpers; - sourceTree = ""; - }; - 23E13E8D1D96899000204C82 /* Main */ = { - isa = PBXGroup; - children = ( - 23E13E8E1D96899000204C82 /* ViewController.swift */, - ); - path = Main; - sourceTree = ""; - }; - 23FB2BF71E97C8BB00432BCB /* Examples */ = { - isa = PBXGroup; - children = ( - 23FB2BF81E97C8BB00432BCB /* CoreData */, - 23FB2BFE1E97C8BB00432BCB /* News */, - ); - path = Examples; - sourceTree = ""; - }; - 23FB2BF81E97C8BB00432BCB /* CoreData */ = { - isa = PBXGroup; - children = ( - 23FB2BF91E97C8BB00432BCB /* Basic */, - 23FB2BFB1E97C8BB00432BCB /* Models */, - ); - path = CoreData; - sourceTree = ""; - }; - 23FB2BF91E97C8BB00432BCB /* Basic */ = { - isa = PBXGroup; - children = ( - 23FB2BFA1E97C8BB00432BCB /* CoreDataBasicView.swift */, - ); - path = Basic; - sourceTree = ""; - }; - 23FB2BFB1E97C8BB00432BCB /* Models */ = { - isa = PBXGroup; - children = ( - 23FB2BFC1E97C8BB00432BCB /* BasicObject.swift */, - 23FB2BFD1E97C8BB00432BCB /* CoreDataBasicEntity.swift */, - ); - path = Models; - sourceTree = ""; - }; - 23FB2BFE1E97C8BB00432BCB /* News */ = { - isa = PBXGroup; - children = ( - 23FB2BFF1E97C8BB00432BCB /* Models */, - 23FB2C001E97C8BB00432BCB /* Services */, - 23FB2C011E97C8BB00432BCB /* Views */, - ); - path = News; - sourceTree = ""; - }; - 23FB2BFF1E97C8BB00432BCB /* Models */ = { - isa = PBXGroup; - children = ( - ); - path = Models; - sourceTree = ""; - }; - 23FB2C001E97C8BB00432BCB /* Services */ = { - isa = PBXGroup; - children = ( - ); - path = Services; - sourceTree = ""; - }; - 23FB2C011E97C8BB00432BCB /* Views */ = { - isa = PBXGroup; - children = ( - ); - path = Views; - sourceTree = ""; - }; - 4DE9B2C11F13913300B59AEE /* SugarRecord-ExampleMacOS */ = { - isa = PBXGroup; - children = ( - 4DE9B2DA1F1399F900B59AEE /* Supporting Files */, - 4DE9B2D81F1399D900B59AEE /* Source */, - 4DE9B2D31F1399C200B59AEE /* Resources */, - ); - path = "SugarRecord-ExampleMacOS"; - sourceTree = ""; - }; - 4DE9B2D31F1399C200B59AEE /* Resources */ = { - isa = PBXGroup; - children = ( - 4DE9B2D91F1399E800B59AEE /* Storyboards */, - 4DE9B2D71F1399D100B59AEE /* Assets */, - 4DE9B2D41F1399CA00B59AEE /* DataModels */, - ); - path = Resources; - sourceTree = ""; - }; - 4DE9B2D41F1399CA00B59AEE /* DataModels */ = { - isa = PBXGroup; - children = ( - 4DE9B2D51F1399CA00B59AEE /* Basic.xcdatamodeld */, - ); - path = DataModels; - sourceTree = ""; - }; - 4DE9B2D71F1399D100B59AEE /* Assets */ = { - isa = PBXGroup; - children = ( - 4DE9B2C61F13913300B59AEE /* Assets.xcassets */, - ); - path = Assets; - sourceTree = ""; - }; - 4DE9B2D81F1399D900B59AEE /* Source */ = { - isa = PBXGroup; - children = ( - 4DE9B2EE1F13BC0E00B59AEE /* Main */, - 4DE9B2DB1F139A1B00B59AEE /* Examples */, - ); - path = Source; - sourceTree = ""; - }; - 4DE9B2D91F1399E800B59AEE /* Storyboards */ = { - isa = PBXGroup; - children = ( - 4DE9B2C81F13913300B59AEE /* Main.storyboard */, - ); - path = Storyboards; - sourceTree = ""; - }; - 4DE9B2DA1F1399F900B59AEE /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 4DE9B2CB1F13913300B59AEE /* Info.plist */, - 4DE9B2CC1F13913300B59AEE /* SugarRecord_ExampleMacOS.entitlements */, - ); - path = "Supporting Files"; - sourceTree = ""; - }; - 4DE9B2DB1F139A1B00B59AEE /* Examples */ = { - isa = PBXGroup; - children = ( - 4DE9B2E21F139C2300B59AEE /* Helpers */, - 4DE9B2DC1F139A2000B59AEE /* CoreData */, - 4DE9B2EA1F13A18C00B59AEE /* DetailsViewController.swift */, - ); - path = Examples; - sourceTree = ""; - }; - 4DE9B2DC1F139A2000B59AEE /* CoreData */ = { - isa = PBXGroup; - children = ( - 4DE9B2DD1F139A2C00B59AEE /* Models */, - ); - path = CoreData; - sourceTree = ""; - }; - 4DE9B2DD1F139A2C00B59AEE /* Models */ = { - isa = PBXGroup; - children = ( - 4DE9B2DE1F139A2C00B59AEE /* BasicObject.swift */, - 4DE9B2DF1F139A2C00B59AEE /* CoreDataBasicEntity.swift */, - ); - path = Models; - sourceTree = ""; - }; - 4DE9B2E21F139C2300B59AEE /* Helpers */ = { - isa = PBXGroup; - children = ( - 4DE9B2E31F139C2300B59AEE /* Directory.swift */, - 4DE9B2E41F139C2300B59AEE /* Random.swift */, - ); - path = Helpers; - sourceTree = ""; - }; - 4DE9B2EE1F13BC0E00B59AEE /* Main */ = { - isa = PBXGroup; - children = ( - 4DE9B2C21F13913300B59AEE /* AppDelegate.swift */, - 4DE9B2C41F13913300B59AEE /* ListViewController.swift */, - 4DE9B2E81F13A0F600B59AEE /* SplitViewController.swift */, - ); - path = Main; - sourceTree = ""; - }; - 4DE9B2EF1F13BC4B00B59AEE /* MacOSTests */ = { - isa = PBXGroup; - children = ( - 4DE9B2F01F13BC4B00B59AEE /* Info.plist */, - ); - path = MacOSTests; - sourceTree = ""; - }; - 51C9EF80959BF8FABCA8F5A9 /* Pods */ = { - isa = PBXGroup; - children = ( - 199B6E9AFF9F22F151FCACD5 /* Pods-SugarRecord_Example.debug.xcconfig */, - 92C812F114142E61803D9DEF /* Pods-SugarRecord_Example.release.xcconfig */, - 54DE24CF394C35117CF642A6 /* Pods-SugarRecord_Tests.debug.xcconfig */, - EF1427C1C51BC3D125AAFF0F /* Pods-SugarRecord_Tests.release.xcconfig */, - 8026227C811CCCAE52CFE75A /* Pods-MacOSTest.debug.xcconfig */, - 587F20500BE8B0716DFB56D2 /* Pods-MacOSTest.release.xcconfig */, - 4B2199C871394D189D0CBFFF /* Pods-SugarRecord-ExampleMacOS.debug.xcconfig */, - 4B1CE16714333FEF4FCD084E /* Pods-SugarRecord-ExampleMacOS.release.xcconfig */, - 35FF60B77D16780A36BDC384 /* Pods-SugarRecord-MacOSExample.debug.xcconfig */, - B12A993BAFFB1BD0E68DDEA2 /* Pods-SugarRecord-MacOSExample.release.xcconfig */, - 7B2B361FEDD2996B9562BBB2 /* Pods-SugarRecord_MacOSTests.debug.xcconfig */, - A48C60DE617E4E019B077F5A /* Pods-SugarRecord_MacOSTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; - 607FACC71AFB9204008FA782 = { - isa = PBXGroup; - children = ( - 607FACF51AFB993E008FA782 /* Podspec Metadata */, - 607FACD21AFB9204008FA782 /* Example for SugarRecord */, - 607FACE81AFB9204008FA782 /* Tests */, - 4DE9B2EF1F13BC4B00B59AEE /* MacOSTests */, - 4DE9B2C11F13913300B59AEE /* SugarRecord-ExampleMacOS */, - 607FACD11AFB9204008FA782 /* Products */, - 51C9EF80959BF8FABCA8F5A9 /* Pods */, - CEEE802555381F009B6ADB04 /* Frameworks */, - ); - sourceTree = ""; - }; - 607FACD11AFB9204008FA782 /* Products */ = { - isa = PBXGroup; - children = ( - 607FACD01AFB9204008FA782 /* SugarRecord_Example.app */, - 607FACE51AFB9204008FA782 /* SugarRecord_Tests.xctest */, - 4DE9B2A21F138FC500B59AEE /* SugarRecord_MacOSTests.xctest */, - 4DE9B2C01F13913300B59AEE /* SugarRecord-MacOSExample.app */, - ); - name = Products; - sourceTree = ""; - }; - 607FACD21AFB9204008FA782 /* Example for SugarRecord */ = { - isa = PBXGroup; - children = ( - 23E13E701D96899000204C82 /* Resources */, - 23E13E781D96899000204C82 /* Source */, - 607FACD31AFB9204008FA782 /* Supporting Files */, - ); - name = "Example for SugarRecord"; - path = SugarRecord; - sourceTree = ""; - }; - 607FACD31AFB9204008FA782 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 607FACD41AFB9204008FA782 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 607FACE81AFB9204008FA782 /* Tests */ = { - isa = PBXGroup; - children = ( - 23E13E331D96896300204C82 /* Helpers */, - 23E13E361D96896300204C82 /* Models */, - 23E13E3D1D96896300204C82 /* Resources */, - 23E13E401D96896300204C82 /* Source */, - 607FACE91AFB9204008FA782 /* Supporting Files */, - ); - path = Tests; - sourceTree = ""; - }; - 607FACE91AFB9204008FA782 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 607FACEA1AFB9204008FA782 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { - isa = PBXGroup; - children = ( - 65A181DD622A1F2F3D27044A /* SugarRecord.podspec */, - 43D59494AB8B01F49D62B037 /* README.md */, - 5B476131E81A65EF61C0905C /* LICENSE */, - ); - name = "Podspec Metadata"; - sourceTree = ""; - }; - CEEE802555381F009B6ADB04 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 4DE9B2AA1F138FDD00B59AEE /* Pods_SugarRecord_Tests.framework */, - BB6674BDC2C223325C9246F4 /* Pods_SugarRecord_Example.framework */, - DE4511BDA74E45A8EA0229D9 /* Pods_SugarRecord_Tests.framework */, - 5A6ED7D1E3A83450EF0B0BC5 /* Pods_MacOSTest.framework */, - 88F9F4CFBFCB1137A2C0BBF0 /* Pods_SugarRecord_ExampleMacOS.framework */, - 51C31F64CDE7FD4553FC46C1 /* Pods_SugarRecord_MacOSExample.framework */, - 51050438EF72D11B40A20FA7 /* Pods_SugarRecord_MacOSTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 4DE9B2A11F138FC500B59AEE /* SugarRecord_MacOSTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4DE9B2A91F138FC600B59AEE /* Build configuration list for PBXNativeTarget "SugarRecord_MacOSTests" */; - buildPhases = ( - 0582B3662692EE134120463A /* [CP] Check Pods Manifest.lock */, - 4DE9B29E1F138FC500B59AEE /* Sources */, - 4DE9B29F1F138FC500B59AEE /* Frameworks */, - 4DE9B2A01F138FC500B59AEE /* Resources */, - 04B17ADE8FF538577C6429AD /* [CP] Embed Pods Frameworks */, - E204E2D9D429AEED3BCF742C /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - 4DE9B2D21F13916400B59AEE /* PBXTargetDependency */, - ); - name = SugarRecord_MacOSTests; - productName = MacOSTest; - productReference = 4DE9B2A21F138FC500B59AEE /* SugarRecord_MacOSTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 4DE9B2BF1F13913300B59AEE /* SugarRecord-MacOSExample */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4DE9B2CD1F13913300B59AEE /* Build configuration list for PBXNativeTarget "SugarRecord-MacOSExample" */; - buildPhases = ( - 4B48A6FF26BA0B58AF134FD3 /* [CP] Check Pods Manifest.lock */, - 4DE9B2BC1F13913300B59AEE /* Sources */, - 4DE9B2BD1F13913300B59AEE /* Frameworks */, - 4DE9B2BE1F13913300B59AEE /* Resources */, - 04C55B11D074FA429DA32DF3 /* [CP] Embed Pods Frameworks */, - 5D09BD15B81C22D5B135EB98 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "SugarRecord-MacOSExample"; - productName = "SugarRecord-ExampleMacOS"; - productReference = 4DE9B2C01F13913300B59AEE /* SugarRecord-MacOSExample.app */; - productType = "com.apple.product-type.application"; - }; - 607FACCF1AFB9204008FA782 /* SugarRecord_Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SugarRecord_Example" */; - buildPhases = ( - 01C1BC6375B2AB4AFA13BBA1 /* [CP] Check Pods Manifest.lock */, - 607FACCC1AFB9204008FA782 /* Sources */, - 607FACCD1AFB9204008FA782 /* Frameworks */, - 607FACCE1AFB9204008FA782 /* Resources */, - 5CC50519DB34147A00106131 /* [CP] Embed Pods Frameworks */, - A8B8DCCFD7667D0B80C5AF17 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SugarRecord_Example; - productName = SugarRecord; - productReference = 607FACD01AFB9204008FA782 /* SugarRecord_Example.app */; - productType = "com.apple.product-type.application"; - }; - 607FACE41AFB9204008FA782 /* SugarRecord_Tests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SugarRecord_Tests" */; - buildPhases = ( - C80BC0F277849B3F17D1036F /* [CP] Check Pods Manifest.lock */, - 607FACE11AFB9204008FA782 /* Sources */, - 607FACE21AFB9204008FA782 /* Frameworks */, - 607FACE31AFB9204008FA782 /* Resources */, - FE8764C997ACB32CEF47985C /* [CP] Embed Pods Frameworks */, - A8EAB62C7C1162F4D92E413F /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - 607FACE71AFB9204008FA782 /* PBXTargetDependency */, - ); - name = SugarRecord_Tests; - productName = Tests; - productReference = 607FACE51AFB9204008FA782 /* SugarRecord_Tests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 607FACC81AFB9204008FA782 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0900; - LastUpgradeCheck = 0720; - ORGANIZATIONNAME = CocoaPods; - TargetAttributes = { - 4DE9B2A11F138FC500B59AEE = { - CreatedOnToolsVersion = 9.0; - DevelopmentTeam = 55CX6N5J5U; - }; - 4DE9B2BF1F13913300B59AEE = { - CreatedOnToolsVersion = 9.0; - }; - 607FACCF1AFB9204008FA782 = { - CreatedOnToolsVersion = 6.3.1; - LastSwiftMigration = 0800; - }; - 607FACE41AFB9204008FA782 = { - CreatedOnToolsVersion = 6.3.1; - LastSwiftMigration = 0800; - }; - }; - }; - buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "SugarRecord" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 607FACC71AFB9204008FA782; - productRefGroup = 607FACD11AFB9204008FA782 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 607FACCF1AFB9204008FA782 /* SugarRecord_Example */, - 4DE9B2BF1F13913300B59AEE /* SugarRecord-MacOSExample */, - 607FACE41AFB9204008FA782 /* SugarRecord_Tests */, - 4DE9B2A11F138FC500B59AEE /* SugarRecord_MacOSTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 4DE9B2A01F138FC500B59AEE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4DE9B2BE1F13913300B59AEE /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4DE9B2C71F13913300B59AEE /* Assets.xcassets in Resources */, - 4DE9B2CA1F13913300B59AEE /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607FACCE1AFB9204008FA782 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 23E13E8F1D96899000204C82 /* Assets.xcassets in Resources */, - 23E13E911D96899000204C82 /* LaunchScreen.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607FACE31AFB9204008FA782 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 01C1BC6375B2AB4AFA13BBA1 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - 04B17ADE8FF538577C6429AD /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SugarRecord_MacOSTests/Pods-SugarRecord_MacOSTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 04C55B11D074FA429DA32DF3 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SugarRecord-MacOSExample/Pods-SugarRecord-MacOSExample-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 0582B3662692EE134120463A /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - 4B48A6FF26BA0B58AF134FD3 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - 5CC50519DB34147A00106131 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SugarRecord_Example/Pods-SugarRecord_Example-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 5D09BD15B81C22D5B135EB98 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SugarRecord-MacOSExample/Pods-SugarRecord-MacOSExample-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - A8B8DCCFD7667D0B80C5AF17 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SugarRecord_Example/Pods-SugarRecord_Example-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - A8EAB62C7C1162F4D92E413F /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SugarRecord_Tests/Pods-SugarRecord_Tests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - C80BC0F277849B3F17D1036F /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - E204E2D9D429AEED3BCF742C /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SugarRecord_MacOSTests/Pods-SugarRecord_MacOSTests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - FE8764C997ACB32CEF47985C /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SugarRecord_Tests/Pods-SugarRecord_Tests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 4DE9B29E1F138FC500B59AEE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4DE9B2AC1F138FF900B59AEE /* CoreData.swift in Sources */, - 4DE9B2AD1F138FF900B59AEE /* Track+CoreDataProperties.swift in Sources */, - 4DE9B2AE1F138FF900B59AEE /* Track.swift in Sources */, - 4DE9B2AF1F138FF900B59AEE /* DataModel.xcdatamodeld in Sources */, - 4DE9B2B01F138FF900B59AEE /* CoreDataChangeTests.swift in Sources */, - 4DE9B2B11F138FF900B59AEE /* CoreDataObservableTests.swift in Sources */, - 4DE9B2B21F138FF900B59AEE /* ObjectModelTests.swift in Sources */, - 4DE9B2B31F138FF900B59AEE /* OptionsTests.swift in Sources */, - 4DE9B2B41F138FF900B59AEE /* StoreTests.swift in Sources */, - 4DE9B2B51F138FF900B59AEE /* CoreDataDefaultStorageTests.swift in Sources */, - 4DE9B2B61F138FF900B59AEE /* RequestTests.swift in Sources */, - 4DE9B2B71F138FF900B59AEE /* DirUtilsTests.swift in Sources */, - 4DE9B2B81F138FF900B59AEE /* VersionControllerTests.swift in Sources */, - 4DE9B2B91F138FF900B59AEE /* VersionProviderTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4DE9B2BC1F13913300B59AEE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4DE9B2EC1F13A35700B59AEE /* DetailsViewController.swift in Sources */, - 4DE9B2ED1F13A35700B59AEE /* SplitViewController.swift in Sources */, - 4DE9B2E71F139CA200B59AEE /* Basic.xcdatamodeld in Sources */, - 4DE9B2E51F139C3700B59AEE /* Directory.swift in Sources */, - 4DE9B2E61F139C3700B59AEE /* Random.swift in Sources */, - 4DE9B2E01F139B9B00B59AEE /* BasicObject.swift in Sources */, - 4DE9B2E11F139B9B00B59AEE /* CoreDataBasicEntity.swift in Sources */, - 4DE9B2C51F13913300B59AEE /* ListViewController.swift in Sources */, - 4DE9B2C31F13913300B59AEE /* AppDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607FACCC1AFB9204008FA782 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 23FB2C051E97C8BB00432BCB /* CoreDataBasicView.swift in Sources */, - 23E13E9A1D96899000204C82 /* Random.swift in Sources */, - 23E13E921D96899000204C82 /* AppDelegate.swift in Sources */, - 23E13E9B1D96899000204C82 /* ViewController.swift in Sources */, - 23FB2C061E97C8BB00432BCB /* BasicObject.swift in Sources */, - 4DE9B2E91F13A0F600B59AEE /* SplitViewController.swift in Sources */, - 23E13E901D96899000204C82 /* Basic.xcdatamodeld in Sources */, - 23FB2C071E97C8BB00432BCB /* CoreDataBasicEntity.swift in Sources */, - 23E13E991D96899000204C82 /* Directory.swift in Sources */, - 4DE9B2EB1F13A18C00B59AEE /* DetailsViewController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607FACE11AFB9204008FA782 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 23E13E631D96896300204C82 /* CoreDataObservableTests.swift in Sources */, - 23E13E681D96896300204C82 /* RequestTests.swift in Sources */, - 23E13E621D96896300204C82 /* CoreDataChangeTests.swift in Sources */, - 23E13E6A1D96896300204C82 /* VersionControllerTests.swift in Sources */, - 23E13E5B1D96896300204C82 /* CoreData.swift in Sources */, - 23E13E641D96896300204C82 /* ObjectModelTests.swift in Sources */, - 23E13E671D96896300204C82 /* CoreDataDefaultStorageTests.swift in Sources */, - 23E13E611D96896300204C82 /* DataModel.xcdatamodeld in Sources */, - 23E13E5D1D96896300204C82 /* Track+CoreDataProperties.swift in Sources */, - 23E13E691D96896300204C82 /* DirUtilsTests.swift in Sources */, - 23E13E6B1D96896300204C82 /* VersionProviderTests.swift in Sources */, - 23E13E651D96896300204C82 /* OptionsTests.swift in Sources */, - 23E13E5E1D96896300204C82 /* Track.swift in Sources */, - 23E13E661D96896300204C82 /* StoreTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 4DE9B2D21F13916400B59AEE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 4DE9B2BF1F13913300B59AEE /* SugarRecord-MacOSExample */; - targetProxy = 4DE9B2D11F13916400B59AEE /* PBXContainerItemProxy */; - }; - 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 607FACCF1AFB9204008FA782 /* SugarRecord_Example */; - targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 4DE9B2C81F13913300B59AEE /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 4DE9B2C91F13913300B59AEE /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 4DE9B2A71F138FC600B59AEE /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7B2B361FEDD2996B9562BBB2 /* Pods-SugarRecord_MacOSTests.debug.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "Mac Developer"; - COMBINE_HIDPI_IMAGES = YES; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = 55CX6N5J5U; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/build/Debug-iphoneos", - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = MacOSTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.12; - PRODUCT_BUNDLE_IDENTIFIER = com.arasthel.MacOSTest; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - 4DE9B2A81F138FC600B59AEE /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A48C60DE617E4E019B077F5A /* Pods-SugarRecord_MacOSTests.release.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "Mac Developer"; - COMBINE_HIDPI_IMAGES = YES; - DEVELOPMENT_TEAM = 55CX6N5J5U; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/build/Debug-iphoneos", - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = MacOSTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.12; - PRODUCT_BUNDLE_IDENTIFIER = com.arasthel.MacOSTest; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - }; - name = Release; - }; - 4DE9B2CE1F13913300B59AEE /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 35FF60B77D16780A36BDC384 /* Pods-SugarRecord-MacOSExample.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = "SugarRecord-ExampleMacOS/Supporting Files/SugarRecord_ExampleMacOS.entitlements"; - CODE_SIGN_IDENTITY = "Mac Developer"; - COMBINE_HIDPI_IMAGES = YES; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = ""; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = "SugarRecord-ExampleMacOS/Supporting Files/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.12; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.SugarRecord-MacOSExample"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - 4DE9B2CF1F13913300B59AEE /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B12A993BAFFB1BD0E68DDEA2 /* Pods-SugarRecord-MacOSExample.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = "SugarRecord-ExampleMacOS/Supporting Files/SugarRecord_ExampleMacOS.entitlements"; - CODE_SIGN_IDENTITY = "Mac Developer"; - COMBINE_HIDPI_IMAGES = YES; - DEVELOPMENT_TEAM = ""; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = "SugarRecord-ExampleMacOS/Supporting Files/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.12; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.SugarRecord-MacOSExample"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - }; - name = Release; - }; - 607FACED1AFB9204008FA782 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - 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; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; - MACOSX_DEPLOYMENT_TARGET = 10.12; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 607FACEE1AFB9204008FA782 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - 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; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; - MACOSX_DEPLOYMENT_TARGET = 10.12; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 607FACF01AFB9204008FA782 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 199B6E9AFF9F22F151FCACD5 /* Pods-SugarRecord_Example.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = SugarRecord/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MODULE_NAME = ExampleApp; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - 607FACF11AFB9204008FA782 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 92C812F114142E61803D9DEF /* Pods-SugarRecord_Example.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = SugarRecord/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MODULE_NAME = ExampleApp; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; - }; - name = Release; - }; - 607FACF31AFB9204008FA782 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 54DE24CF394C35117CF642A6 /* Pods-SugarRecord_Tests.debug.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - 607FACF41AFB9204008FA782 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EF1427C1C51BC3D125AAFF0F /* Pods-SugarRecord_Tests.release.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - INFOPLIST_FILE = Tests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 4DE9B2A91F138FC600B59AEE /* Build configuration list for PBXNativeTarget "SugarRecord_MacOSTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4DE9B2A71F138FC600B59AEE /* Debug */, - 4DE9B2A81F138FC600B59AEE /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4DE9B2CD1F13913300B59AEE /* Build configuration list for PBXNativeTarget "SugarRecord-MacOSExample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4DE9B2CE1F13913300B59AEE /* Debug */, - 4DE9B2CF1F13913300B59AEE /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "SugarRecord" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 607FACED1AFB9204008FA782 /* Debug */, - 607FACEE1AFB9204008FA782 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SugarRecord_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 607FACF01AFB9204008FA782 /* Debug */, - 607FACF11AFB9204008FA782 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SugarRecord_Tests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 607FACF31AFB9204008FA782 /* Debug */, - 607FACF41AFB9204008FA782 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCVersionGroup section */ - 23E13E3E1D96896300204C82 /* DataModel.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - 23E13E3F1D96896300204C82 /* DataModel.xcdatamodel */, - ); - currentVersion = 23E13E3F1D96896300204C82 /* DataModel.xcdatamodel */; - path = DataModel.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; - 23E13E741D96899000204C82 /* Basic.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - 23E13E751D96899000204C82 /* Basic.xcdatamodel */, - ); - currentVersion = 23E13E751D96899000204C82 /* Basic.xcdatamodel */; - path = Basic.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; - 4DE9B2D51F1399CA00B59AEE /* Basic.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - 4DE9B2D61F1399CA00B59AEE /* Basic.xcdatamodel */, - ); - currentVersion = 4DE9B2D61F1399CA00B59AEE /* Basic.xcdatamodel */; - path = Basic.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; -/* End XCVersionGroup section */ - }; - rootObject = 607FACC81AFB9204008FA782 /* Project object */; -} diff --git a/Example/SugarRecord.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/SugarRecord.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 71771f18..00000000 --- a/Example/SugarRecord.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Example/SugarRecord.xcodeproj/xcshareddata/xcschemes/SugarRecord-Example.xcscheme b/Example/SugarRecord.xcodeproj/xcshareddata/xcschemes/SugarRecord-Example.xcscheme deleted file mode 100644 index 4f7b4a9d..00000000 --- a/Example/SugarRecord.xcodeproj/xcshareddata/xcschemes/SugarRecord-Example.xcscheme +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/SugarRecord.xcodeproj/xcshareddata/xcschemes/SugarRecord_Tests.xcscheme b/Example/SugarRecord.xcodeproj/xcshareddata/xcschemes/SugarRecord_Tests.xcscheme deleted file mode 100644 index 27c72185..00000000 --- a/Example/SugarRecord.xcodeproj/xcshareddata/xcschemes/SugarRecord_Tests.xcscheme +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/SugarRecord.xcworkspace/contents.xcworkspacedata b/Example/SugarRecord.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 49aaf9f5..00000000 --- a/Example/SugarRecord.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/Example/SugarRecord/Info.plist b/Example/SugarRecord/Info.plist deleted file mode 100644 index 04ef3d32..00000000 --- a/Example/SugarRecord/Info.plist +++ /dev/null @@ -1,37 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - - - diff --git a/Example/SugarRecord/Resources/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/SugarRecord/Resources/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 19882d56..00000000 --- a/Example/SugarRecord/Resources/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - }, - { - "idiom" : "ios-marketing", - "size" : "1024x1024", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Example/SugarRecord/Resources/DataModels/Basic.xcdatamodeld/Basic.xcdatamodel/contents b/Example/SugarRecord/Resources/DataModels/Basic.xcdatamodeld/Basic.xcdatamodel/contents deleted file mode 100644 index 3e985dc3..00000000 --- a/Example/SugarRecord/Resources/DataModels/Basic.xcdatamodeld/Basic.xcdatamodel/contents +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/Example/SugarRecord/Resources/Storyboards/LaunchScreen.storyboard b/Example/SugarRecord/Resources/Storyboards/LaunchScreen.storyboard deleted file mode 100644 index 78686cd0..00000000 --- a/Example/SugarRecord/Resources/Storyboards/LaunchScreen.storyboard +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/SugarRecord/Source/App/AppDelegate.swift b/Example/SugarRecord/Source/App/AppDelegate.swift deleted file mode 100644 index cf62a264..00000000 --- a/Example/SugarRecord/Source/App/AppDelegate.swift +++ /dev/null @@ -1,40 +0,0 @@ -import UIKit - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { - window = UIWindow(frame: UIScreen.main.bounds) - window?.rootViewController = UINavigationController(rootViewController: ViewController()) - window?.makeKeyAndVisible() - return true - } - - func applicationWillResignActive(_ application: UIApplication) { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. - } - - func applicationDidEnterBackground(_ application: UIApplication) { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. - } - - func applicationWillEnterForeground(_ application: UIApplication) { - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. - } - - func applicationDidBecomeActive(_ application: UIApplication) { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - } - - func applicationWillTerminate(_ application: UIApplication) { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. - } - - -} - diff --git a/Example/SugarRecord/Source/Examples/CoreData/Basic/CoreDataBasicView.swift b/Example/SugarRecord/Source/Examples/CoreData/Basic/CoreDataBasicView.swift deleted file mode 100644 index 3d2fb573..00000000 --- a/Example/SugarRecord/Source/Examples/CoreData/Basic/CoreDataBasicView.swift +++ /dev/null @@ -1,128 +0,0 @@ -import Foundation -import UIKit -import SugarRecord -import CoreData - -class CoreDataBasicView: UIViewController, UITableViewDelegate, UITableViewDataSource { - - // MARK: - Attributes - lazy var db: CoreDataDefaultStorage = { - let store = CoreDataStore.named("cd_basic") - let bundle = Bundle(for: CoreDataBasicView.classForCoder()) - let model = CoreDataObjectModel.merged([bundle]) - let defaultStorage = try! CoreDataDefaultStorage(store: store, model: model) - return defaultStorage - }() - lazy var tableView: UITableView = { - let _tableView = UITableView(frame: CGRect.zero, style: UITableViewStyle.plain) - _tableView.translatesAutoresizingMaskIntoConstraints = false - _tableView.delegate = self - _tableView.dataSource = self - _tableView.register(UITableViewCell.classForCoder(), forCellReuseIdentifier: "default-cell") - return _tableView - }() - var entities: [CoreDataBasicEntity] = [] { - didSet { - self.tableView.reloadData() - } - } - - - // MARK: - Init - - init() { - super.init(nibName: nil, bundle: nil) - self.title = "CoreData Basic" - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - deinit { - print("🚀🚀🚀 Deallocating \(self) 🚀🚀🚀") - } - - - // MARK: - Lifecycle - - override func viewDidLoad() { - super.viewDidLoad() - setup() - updateData() - } - - - // MARK: - Private - - fileprivate func setup() { - setupView() - setupNavigationItem() - setupTableView() - } - - fileprivate func setupView() { - self.view.backgroundColor = UIColor.white - } - - fileprivate func setupNavigationItem() { - self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.add, target: self, action: #selector(CoreDataBasicView.userDidSelectAdd(_:))) - } - - fileprivate func setupTableView() { - self.view.addSubview(tableView) - self.tableView.snp.makeConstraints { (make) -> Void in - make.edges.equalTo(self.view) - } - } - - - // MARK: - UITableViewDataSource / UITableViewDelegate - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return self.entities.count - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "default-cell")! - cell.textLabel?.text = "\(entities[(indexPath as NSIndexPath).row].name) - \(entities[(indexPath as NSIndexPath).row].dateString)" - return cell - } - - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - tableView.deselectRow(at: indexPath, animated: true) - } - - func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { - if editingStyle == UITableViewCellEditingStyle.delete { - let name = entities[(indexPath as NSIndexPath).row].name - try! db.operation({ (context, save) -> Void in - guard let obj = try! context.request(BasicObject.self).filtered(with: "name", equalTo: name).fetch().first else { return } - _ = try? context.remove(obj) - save() - }) - updateData() - } - } - - - // MARK: - Actions - - func userDidSelectAdd(_ sender: AnyObject!) { - try! db.operation { (context, save) -> Void in - let _object: BasicObject = try! context.new() - _object.date = Date() - _object.name = randomStringWithLength(10) as String - try! context.insert(_object) - save() - } - updateData() - } - - - // MARK: - Private - - fileprivate func updateData() { - self.entities = try! db.fetch(FetchRequest()).map(CoreDataBasicEntity.init) - } -} diff --git a/Example/SugarRecord/Source/Examples/CoreData/Models/BasicObject.swift b/Example/SugarRecord/Source/Examples/CoreData/Models/BasicObject.swift deleted file mode 100644 index b4ae5c8c..00000000 --- a/Example/SugarRecord/Source/Examples/CoreData/Models/BasicObject.swift +++ /dev/null @@ -1,15 +0,0 @@ -import Foundation -import CoreData - -class BasicObject: NSManagedObject { - - // Insert code here to add functionality to your managed object subclass - -} - -extension BasicObject { - - @NSManaged var date: Date? - @NSManaged var name: String? - -} diff --git a/Example/SugarRecord/Source/Examples/CoreData/Models/CoreDataBasicEntity.swift b/Example/SugarRecord/Source/Examples/CoreData/Models/CoreDataBasicEntity.swift deleted file mode 100644 index 6d8f2e7c..00000000 --- a/Example/SugarRecord/Source/Examples/CoreData/Models/CoreDataBasicEntity.swift +++ /dev/null @@ -1,19 +0,0 @@ -import Foundation - -class CoreDataBasicEntity { - - // MARK: - Attributes - - let dateString: String - let name: String - - // MARK: - Init - - init(object: BasicObject) { - let dateFormater = DateFormatter() - dateFormater.timeStyle = DateFormatter.Style.short - dateFormater.dateStyle = DateFormatter.Style.short - self.dateString = dateFormater.string(from: object.date! as Date) - self.name = object.name! - } -} diff --git a/Example/SugarRecord/Source/Helpers/Directory.swift b/Example/SugarRecord/Source/Helpers/Directory.swift deleted file mode 100644 index 0b6e328c..00000000 --- a/Example/SugarRecord/Source/Helpers/Directory.swift +++ /dev/null @@ -1,6 +0,0 @@ -import Foundation - -func databasePath(_ name: String) -> String { - let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory,.userDomainMask, true)[0] as String - return documentsPath + "/\(name)" -} diff --git a/Example/SugarRecord/Source/Helpers/Random.swift b/Example/SugarRecord/Source/Helpers/Random.swift deleted file mode 100644 index 4030cd84..00000000 --- a/Example/SugarRecord/Source/Helpers/Random.swift +++ /dev/null @@ -1,13 +0,0 @@ -import Foundation - - -func randomStringWithLength (_ len : Int) -> NSString { - let letters : NSString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" - let randomString : NSMutableString = NSMutableString(capacity: len) - for _ in 0 ..< len { - let length = UInt32 (letters.length) - let rand = arc4random_uniform(length) - randomString.appendFormat("%C", letters.character(at: Int(rand))) - } - return randomString -} diff --git a/Example/SugarRecord/Source/Main/ViewController.swift b/Example/SugarRecord/Source/Main/ViewController.swift deleted file mode 100644 index d62d8c56..00000000 --- a/Example/SugarRecord/Source/Main/ViewController.swift +++ /dev/null @@ -1,84 +0,0 @@ -import UIKit -import SnapKit - -class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { - - // MARK: - Attributes - - lazy var tableView: UITableView = { - let _tableView = UITableView(frame: CGRect.zero, style: UITableViewStyle.plain) - _tableView.translatesAutoresizingMaskIntoConstraints = false - _tableView.delegate = self - _tableView.dataSource = self - _tableView.register(UITableViewCell.classForCoder(), forCellReuseIdentifier: "default-cell") - return _tableView - }() - - - // MARK: - Init - - init() { - super.init(nibName: nil, bundle: nil) - self.title = "SugarRecord Examples" - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - // MARK - Lifecycle - - override func viewDidLoad() { - super.viewDidLoad() - setup() - } - - - // MARK: - Setup - - fileprivate func setup() { - setupView() - setupTableView() - } - - fileprivate func setupView() { - self.view.backgroundColor = UIColor.white - } - - fileprivate func setupTableView() { - self.view.addSubview(tableView) - self.tableView.snp.makeConstraints { (make) -> Void in - make.edges.equalTo(self.view) - } - } - - - // MARK: - UITableViewDataSource / UITableViewDelegate - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 3 - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "default-cell")! - switch (indexPath as NSIndexPath).row { - case 0: - cell.textLabel?.text = "CoreData Basic" - default: - cell.textLabel?.text = "" - } - cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator - return cell - } - - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - tableView.deselectRow(at: indexPath, animated: true) - switch (indexPath as NSIndexPath).row { - case 0: - self.navigationController?.pushViewController(CoreDataBasicView(), animated: true) - default: - break - } - } -} - diff --git a/Example/Tests/Info.plist b/Example/Tests/Info.plist deleted file mode 100644 index ba72822e..00000000 --- a/Example/Tests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 26afed39..00000000 --- a/Gemfile +++ /dev/null @@ -1,9 +0,0 @@ -source 'https://rubygems.org' - -gem "fastlane" -gem "cocoapods", "1.1.0rc2" - -# Danger -gem "danger" -gem "danger-the_coding_love" -gem "danger-junit" \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index b6986c21..00000000 --- a/Gemfile.lock +++ /dev/null @@ -1,234 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - CFPropertyList (2.3.5) - activesupport (4.2.10) - i18n (~> 0.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) - addressable (2.5.2) - public_suffix (>= 2.0.2, < 4.0) - babosa (1.0.2) - claide (1.0.2) - claide-plugins (0.9.2) - cork - nap - open4 (~> 1.3) - cocoapods (1.1.0.rc.2) - activesupport (>= 4.0.2, < 5) - claide (>= 1.0.0, < 2.0) - cocoapods-core (= 1.1.0.rc.2) - cocoapods-deintegrate (>= 1.0.1, < 2.0) - cocoapods-downloader (>= 1.1.1, < 2.0) - cocoapods-plugins (>= 1.0.0, < 2.0) - cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-stats (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.0.0, < 2.0) - cocoapods-try (>= 1.1.0, < 2.0) - colored (~> 1.2) - escape (~> 0.0.4) - fourflusher (~> 1.0.1) - gh_inspector (~> 1.0) - molinillo (~> 0.5.1) - nap (~> 1.0) - xcodeproj (>= 1.3.1, < 2.0) - cocoapods-core (1.1.0.rc.2) - activesupport (>= 4.0.2, < 5) - fuzzy_match (~> 2.0.4) - nap (~> 1.0) - cocoapods-deintegrate (1.0.1) - cocoapods-downloader (1.1.3) - cocoapods-plugins (1.0.0) - nap - cocoapods-search (1.0.0) - cocoapods-stats (1.0.0) - cocoapods-trunk (1.3.0) - nap (>= 0.8, < 2.0) - netrc (~> 0.11) - cocoapods-try (1.1.0) - colored (1.2) - colored2 (3.1.2) - commander-fastlane (4.4.5) - highline (~> 1.7.2) - concurrent-ruby (1.0.5) - cork (0.3.0) - colored2 (~> 3.1) - danger (5.5.5) - claide (~> 1.0) - claide-plugins (>= 0.9.2) - colored2 (~> 3.1) - cork (~> 0.1) - faraday (~> 0.9) - faraday-http-cache (~> 1.0) - git (~> 1) - kramdown (~> 1.5) - no_proxy_fix - octokit (~> 4.7) - terminal-table (~> 1) - danger-junit (0.7.4) - danger (> 2.0) - ox (~> 2.0) - danger-plugin-api (1.0.0) - danger (> 2.0) - danger-the_coding_love (0.0.4) - danger-plugin-api (~> 1.0) - nokogiri - declarative (0.0.10) - declarative-option (0.1.0) - domain_name (0.5.20170404) - unf (>= 0.0.5, < 1.0.0) - dotenv (2.2.1) - escape (0.0.4) - excon (0.59.0) - faraday (0.13.1) - multipart-post (>= 1.2, < 3) - faraday-cookie_jar (0.0.6) - faraday (>= 0.7.4) - http-cookie (~> 1.0.0) - faraday-http-cache (1.3.1) - faraday (~> 0.8) - faraday_middleware (0.12.2) - faraday (>= 0.7.4, < 1.0) - fastimage (2.1.0) - fastlane (2.66.2) - CFPropertyList (>= 2.3, < 3.0.0) - addressable (>= 2.3, < 3.0.0) - babosa (>= 1.0.2, < 2.0.0) - bundler (>= 1.12.0, < 2.0.0) - colored - commander-fastlane (>= 4.4.5, < 5.0.0) - dotenv (>= 2.1.1, < 3.0.0) - excon (>= 0.45.0, < 1.0.0) - faraday (~> 0.9) - faraday-cookie_jar (~> 0.0.6) - faraday_middleware (~> 0.9) - fastimage (>= 2.1.0, < 3.0.0) - gh_inspector (>= 1.0.1, < 2.0.0) - google-api-client (>= 0.13.1, < 0.14.0) - highline (>= 1.7.2, < 2.0.0) - json (< 3.0.0) - mini_magick (~> 4.5.1) - multi_json - multi_xml (~> 0.5) - multipart-post (~> 2.0.0) - plist (>= 3.1.0, < 4.0.0) - public_suffix (~> 2.0.0) - rubyzip (>= 1.1.0, < 2.0.0) - security (= 0.1.3) - slack-notifier (>= 1.3, < 2.0.0) - terminal-notifier (>= 1.6.2, < 2.0.0) - terminal-table (>= 1.4.5, < 2.0.0) - tty-screen (~> 0.6.2) - word_wrap (~> 1.0.0) - xcodeproj (>= 1.5.2, < 2.0.0) - xcpretty (>= 0.2.4, < 1.0.0) - xcpretty-travis-formatter (>= 0.0.3) - fourflusher (1.0.1) - fuzzy_match (2.0.4) - gh_inspector (1.0.3) - git (1.3.0) - google-api-client (0.13.6) - addressable (~> 2.5, >= 2.5.1) - googleauth (~> 0.5) - httpclient (>= 2.8.1, < 3.0) - mime-types (~> 3.0) - representable (~> 3.0) - retriable (>= 2.0, < 4.0) - googleauth (0.6.2) - faraday (~> 0.12) - jwt (>= 1.4, < 3.0) - logging (~> 2.0) - memoist (~> 0.12) - multi_json (~> 1.11) - os (~> 0.9) - signet (~> 0.7) - highline (1.7.8) - http-cookie (1.0.3) - domain_name (~> 0.5) - httpclient (2.8.3) - i18n (0.9.1) - concurrent-ruby (~> 1.0) - json (2.1.0) - jwt (2.1.0) - kramdown (1.15.0) - little-plugger (1.1.4) - logging (2.2.2) - little-plugger (~> 1.1) - multi_json (~> 1.10) - memoist (0.16.0) - mime-types (3.1) - mime-types-data (~> 3.2015) - mime-types-data (3.2016.0521) - mini_magick (4.5.1) - mini_portile2 (2.3.0) - minitest (5.10.3) - molinillo (0.5.7) - multi_json (1.12.2) - multi_xml (0.6.0) - multipart-post (2.0.0) - nanaimo (0.2.3) - nap (1.1.0) - netrc (0.11.0) - no_proxy_fix (0.1.2) - nokogiri (1.8.1) - mini_portile2 (~> 2.3.0) - octokit (4.7.0) - sawyer (~> 0.8.0, >= 0.5.3) - open4 (1.3.4) - os (0.9.6) - ox (2.8.2) - plist (3.3.0) - public_suffix (2.0.5) - representable (3.0.4) - declarative (< 0.1.0) - declarative-option (< 0.2.0) - uber (< 0.2.0) - retriable (3.1.1) - rouge (2.0.7) - rubyzip (1.2.1) - sawyer (0.8.1) - addressable (>= 2.3.5, < 2.6) - faraday (~> 0.8, < 1.0) - security (0.1.3) - signet (0.8.1) - addressable (~> 2.3) - faraday (~> 0.9) - jwt (>= 1.5, < 3.0) - multi_json (~> 1.10) - slack-notifier (1.5.1) - terminal-notifier (1.8.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) - thread_safe (0.3.6) - tty-screen (0.6.3) - tzinfo (1.2.4) - thread_safe (~> 0.1) - uber (0.1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.7.4) - unicode-display_width (1.3.0) - word_wrap (1.0.0) - xcodeproj (1.5.3) - CFPropertyList (~> 2.3.3) - claide (>= 1.0.2, < 2.0) - colored2 (~> 3.1) - nanaimo (~> 0.2.3) - xcpretty (0.2.8) - rouge (~> 2.0.7) - xcpretty-travis-formatter (1.0.0) - xcpretty (~> 0.2, >= 0.0.7) - -PLATFORMS - ruby - -DEPENDENCIES - cocoapods (= 1.1.0rc2) - danger - danger-junit - danger-the_coding_love - fastlane - -BUNDLED WITH - 1.16.0 diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md deleted file mode 100644 index 92eb0715..00000000 --- a/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,9 +0,0 @@ -## What -> Describe here your issue, a bug you found, an idea that you had, something that you think can be improved... - -## Context -> Provide information that helps with understanding your issue. For example your use case that the project doesn't cover, what you were doing when you found the bug... You can also provide the version of the library that you were using, how you integrated it with your project, the platform version... - - -## Proposal -> Attach your own proposal *(if you have it)*. We'll discuss in on the issue to find the best one that fits into the library. \ No newline at end of file diff --git a/Info.plist b/Info.plist deleted file mode 100644 index d3de8eef..00000000 --- a/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSPrincipalClass - - - diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 9c97faac..00000000 --- a/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2016 SugarRecord - -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. - diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 819f0cd2..00000000 --- a/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,16 +0,0 @@ -**Issue:** [Link](https://github.com/carambalabs/XXXX/issues/YYY) - -### Short description -> Describe here the purpose of your PR. - -### Solution -> Describe the solution you came up with and the reasons that led you to that solution. If you thought about other solutions don't forget about mentioning them. - -### Implementation -> Detail in a checklist the steps that you took to implement the PR. - -- [ ] Step 1 -- [ ] Setp 2 - -### GIF -> Find a descriptive GIF for your PR. Because we :heart: fun at Carambalabs. \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 77c05b83..00000000 --- a/README.md +++ /dev/null @@ -1,263 +0,0 @@ -#
![SugarRecord](Assets/Caramba.png)
- -[![Twitter: @carambalabs](https://img.shields.io/badge/contact-@carambalabs-blue.svg?style=flat)](https://twitter.com/carambalabs) -[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/SugarRecord.svg)](https://img.shields.io/cocoapods/v/SugarRecord.svg) -[![Language: Swift](https://img.shields.io/badge/lang-Swift-yellow.svg?style=flat)](https://developer.apple.com/swift/) -[![Language: Swift](https://img.shields.io/badge/license-MIT-lightgrey.svg?style=flat)](http://opensource.org/licenses/MIT) -[![Build Status](https://travis-ci.org/carambalabs/SugarRecord.svg)](https://travis-ci.org/carambalabs/SugarRecord) -[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) - -## What is SugarRecord? -SugarRecord is a persistence wrapper designed to make working with persistence solutions like CoreData in a much easier way. Thanks to SugarRecord you'll be able to use CoreData with just a few lines of code: Just choose your stack and start playing with your data. - -The library is maintained by [@carambalabs](https://github.com/carambalabs). You can reach me at [pepibumur@gmail.com](mailto://pepibumur@gmail.com) for help or whatever you need to commend about the library. - -[![paypal](https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2AUKNEW4JLPXQ) - - -## Features -- Swift 3.0 compatible (Xcode 8.0). -- Protocols based design. -- For **beginners** and **advanced** users -- Fully customizable. Build your own stack! -- Friendly syntax (fluent) -- Away from Singleton patterns! No shared states :tada: -- Compatible with OSX/iOS/watchOS/tvOS -- Fully tested (thanks Nimble and Quick) -- Actively supported - -## Setup - -### [CocoaPods](https://cocoapods.org) - -1. Install [CocoaPods](https://cocoapods.org). You can do it with `gem install cocoapods` -2. Edit your `Podfile` file and add the following line `pod 'SugarRecord'` -3. Update your pods with the command `pod install` -4. Open the project from the generated workspace (`.xcworkspace` file). - -*Note: You can also test the last commits by specifying it directly in the Podfile line* - -**Available specs** -Choose the right one depending ton the configuration you need for you app. - -```ruby -pod "SugarRecord/CoreData" -pod "SugarRecord/CoreData+iCloud" -``` - -### [Carthage](https://github.com/carthage) - -1. Install [Carthage](https://github.com/carthage). You can do it with `brew install carthage`. -2. Edit your `Cartfile` file and add the following line `github "carambalabs/sugarrecord". -3. Execute `carthage update` -4. Add the frameworks to your project as explained on the [Carthage repository](https://github.com/carthage). - -## Reference -You can check generated SugarRecord documentation [here](http://cocoadocs.org/docsets/SugarRecord/2.0.0/) generated automatically with [CocoaDocs](http://cocoadocs.org/) - -# How to use - -#### Creating your Storage -A storage represents your database. The first step to start using SugarRecord is initializing the storage. SugarRecord provides a default storages, `CoreDataDefaultStorage`. - -```swift -// Initializing CoreDataDefaultStorage -func coreDataStorage() -> CoreDataDefaultStorage { - let store = CoreDataStore.named("db") - let bundle = Bundle(for: self.classForCoder) - let model = CoreDataObjectModel.merged([bundle]) - let defaultStorage = try! CoreDataDefaultStorage(store: store, model: model) - return defaultStorage -} -``` - -##### Creating an iCloud Storage - -SugarRecord supports the integration of CoreData with iCloud. It's very easy to setup since it's implemented in its own storage that you can use from your app, `CoreDataiCloudStorage`: - -```swift -// Initializes the CoreDataiCloudStorage -func icloudStorage() -> CoreDataiCloudStorage { - let bundle = Bundle(for: self.classForCoder) - let model = CoreDataObjectModel.merged([bundle]) - let icloudConfig = CoreDataiCloudConfig(ubiquitousContentName: "MyDb", ubiquitousContentURL: "Path/", ubiquitousContainerIdentifier: "com.company.MyApp.anothercontainer") - let icloudStorage = try! CoreDataiCloudStorage(model: model, iCloud: icloudConfig) - return icloudStorage -} -``` - -#### Contexts -Storages offer multiple kind of contexts that are the entry points to the database. For curious developers, in case of CoreData a context is a wrapper around `NSManagedObjectContext`. The available contexts are: - -- **MainContext:** Use it for main thread operations, for example fetches whose data will be presented in the UI. -- **SaveContext:** Use this context for background operations. The context is initialized when the storage instance is created. That context is used for storage operations. -- **MemoryContext:** Use this context when you want to do some tests and you don't want your changes to be persisted. - -#### Fetching data - -```swift -let pedros: [Person] = try! db.fetch(FetchRequest().filtered(with: "name", equalTo: "Pedro")) -let tasks: [Task] = try! db.fetch(FetchRequest()) -let citiesByName: [City] = try! db.fetch(FetchRequest().sorted(with: "name", ascending: true)) -let predicate: NSPredicate = NSPredicate(format: "id == %@", "AAAA") -let john: User? = try! db.fetch(FetchRequest().filtered(with: predicate)).first -``` - -#### Remove/Insert/Update operations - -Although `Context`s offer `insertion` and `deletion` methods that you can use it directly SugarRecords aims at using the `operation` method method provided by the storage for operations that imply modifications of the database models: - -- **Context**: You can use it for fetching, inserting, deleting. Whatever you need to do with your data. -- **Save**: All the changes you apply to that context are in a memory state unless you call the `save()` method. That method will persist the changes to your store and propagate them across all the available contexts. - -```swift -do { - db.operation { (context, save) throws in - // Do your operations here - try save() - } -} catch { - // There was an error in the operation -} -``` - -##### New model -You can use the context `new()` method to initialize a model **without inserting it in the context**: - -```swift -do { - db.operation { (context, save) throws in - let newTask: Track = try context.new() - newTask.name = "Make CoreData easier!" - try context.insert(newTask) - try save() - } -} catch { - // There was an error in the operation -} -``` -> In order to insert the model into the context you use the insert() method. - -##### Creating a model -You can use the `create()` for initializing and inserting in the context in the same operation: - -```swift -do { - db.operation { (context, save) throws -> Void in - let newTask: Track = try! context.create() - newTask.name = "Make CoreData easier!" - save() - } -} -catch { - // There was an error in the operation -} -``` - -##### Delete a model -In a similar way you can use the `remove()` method from the context passing the objects you want to remove from the database: - -```swift -do { - db.operation { (context, save) throws in - let john: User? = try context.request(User.self).filteredWith("id", equalTo: "1234").fetch().first - if let john = john { - try context.remove([john]) - try save() - } - } -} catch { - // There was an error in the operation -} -``` - -
-> This is the first approach of SugarRecord for the interface. We'll improve it with the feedback you can report and according to the use of the framework. Do not hesitate to reach us with your proposals. Everything that has to be with making the use of CoreData easier, funnier, and enjoyable is welcome! :tada: - -### RequestObservable - -SugarRecord provides a component, `RequestObservable` that allows observing changes in the DataBase. It uses `NSFetchedResultsController` under the hood. - -**Observing** - -```swift -class Presenter { - var observable: RequestObservable! - - func setup() { - let request: FetchRequest = FetchRequest().filtered(with: "artist", equalTo: "pedro") - self.observable = storage.instance.observable(request) - self.observable.observe { changes in - case .Initial(let objects): - print("\(objects.count) objects in the database") - case .Update(let deletions, let insertions, let modifications): - print("\(deletions.count) deleted | \(insertions.count) inserted | \(modifications.count) modified") - case .Error(let error): - print("Something went wrong") - } - } -} -``` -> **Retain**: RequestObservable must be retained during the observation lifecycle. When the `RequestObservable` instance gets released from memory it stops observing changes from your storage. - -> **NOTE**: This was renamed from Observable -> RequestObservable so we are no longer stomping on the RxSwift Observable namespace. - -**:warning: `RequestObservable` is only available for CoreData + OSX since MacOS 10.12** - -## Resources -- [Quick](https://github.com/quick/quick) -- [Nimble](https://github.com/quick/nimble) -- [CoreData and threads with GCD](http://www.cimgf.com/2011/05/04/core-data-and-threads-without-the-headache/) -- [Jazzy](https://github.com/realm/jazzy) -- [iCloud + CoreData (objc.io)](http://www.objc.io/issue-10/icloud-core-data.html) - -## Contributors - -[glebo](https://github.com/glebo)[sushichop](https://github.com/sushichop)[foxling](https://github.com/foxling)[ZevEisenberg](https://github.com/ZevEisenberg)[konyu](https://github.com/konyu) - -[yuuki1224](https://github.com/yuuki1224)[YTN01](https://github.com/YTN01)[gitter-badger](https://github.com/gitter-badger)[sergigracia](https://github.com/sergigracia)[adityatrivedi](https://github.com/adityatrivedi) - -[Adlai-Holler](https://github.com/Adlai-Holler)[akshaynhegde](https://github.com/akshaynhegde)[goingreen](https://github.com/goingreen)[startupthekid](https://github.com/startupthekid)[ctotheameron](https://github.com/ctotheameron) - -[davidahouse](https://github.com/davidahouse)[A8-Moke](https://github.com/A8-Moke)[Arasthel](https://github.com/Arasthel)[LuizZak](https://github.com/LuizZak)[literator](https://github.com/literator) - -[madeinqc](https://github.com/madeinqc)[kolisko](https://github.com/kolisko)[dukemike](https://github.com/dukemike)[rafalwojcik](https://github.com/rafalwojcik)[thad](https://github.com/thad) - -[chrispix](https://github.com/chrispix)[ReadmeCritic](https://github.com/ReadmeCritic)[avielg](https://github.com/avielg)[rdougan](https://github.com/rdougan)[grangej](https://github.com/grangej) - -[fjbelchi](https://github.com/fjbelchi)[dcvz](https://github.com/dcvz)[pepibumur](https://github.com/pepibumur) - -## About - - - -This project is funded and maintained by [Caramba](http://caramba.io). We 💛 open source software! - -Check out our other [open source projects](https://github.com/carambalabs/), read our [blog](http://blog.caramba.io) or say :wave: on twitter [@carambalabs](http://twitter.com/carambalabs). - -## Contribute - -Contributions are welcome :metal: We encourage developers like you to help us improve the projects we've shared with the community. Please see the [Contributing Guide](https://github.com/carambalabs/Foundation/blob/master/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/carambalabs/Foundation/blob/master/CONDUCT.md). - -## License -The MIT License (MIT) - -Copyright (c) 2017 Caramba - -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. diff --git a/SugarRecord.podspec b/SugarRecord.podspec index 24f7c841..fbda9237 100644 --- a/SugarRecord.podspec +++ b/SugarRecord.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "SugarRecord" - s.version = "3.1.2" + s.version = "4.0.0" s.summary = "CoreData wrapper written on Swift" s.homepage = "https://github.com/carambalabs/SugarRecord" s.license = 'MIT' @@ -9,7 +9,7 @@ Pod::Spec.new do |s| s.social_media_url = 'https://twitter.com/carambalabs' s.requires_arc = true - s.ios.deployment_target = "8.0" + s.ios.deployment_target = "9.0" s.osx.deployment_target = "10.10" coredata_dependencies = lambda do |spec| @@ -17,7 +17,7 @@ Pod::Spec.new do |s| end foundation_dependencies = lambda do |spec| - spec.dependency "Result", "~> 3.0" + spec.dependency "Result", "~> 5.0" end all_platforms = lambda do |spec| @@ -27,22 +27,12 @@ Pod::Spec.new do |s| spec.tvos.deployment_target = '9.0' end - excluded_icloud_files = ['SugarRecord/Source/CoreData/Entities/iCloudConfig.swift', 'SugarRecord/Source/CoreData/Storages/CoreDataiCloudStorage.swift'] - s.subspec "CoreData" do |spec| source_files = ['SugarRecord/Source/Foundation/**/*.{swift}', 'SugarRecord/Source/CoreData/**/*.{swift}'] spec.source_files = source_files - spec.exclude_files = excluded_icloud_files coredata_dependencies.call(spec) foundation_dependencies.call(spec) all_platforms.call(spec) end - s.subspec "CoreData+iCloud" do |spec| - source_files = ['SugarRecord/Source/Foundation/**/*.{swift}', 'SugarRecord/Source/CoreData/**/*.{swift}'] - spec.source_files = source_files - coredata_dependencies.call(spec) - foundation_dependencies.call(spec) - end - end diff --git a/SugarRecord.xcworkspace/contents.xcworkspacedata b/SugarRecord.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 6d75102c..00000000 --- a/SugarRecord.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/SugarRecord/Source/CoreData/Entities/CoreDataChange.swift b/SugarRecord/Source/CoreData/Entities/CoreDataChange.swift deleted file mode 100644 index b57fdc35..00000000 --- a/SugarRecord/Source/CoreData/Entities/CoreDataChange.swift +++ /dev/null @@ -1,46 +0,0 @@ -import Foundation - -internal enum CoreDataChange { - - case update(Int, T) - case delete(Int, T) - case insert(Int, T) - - internal func object() -> T { - switch self { - case .update(_, let object): return object - case .delete(_, let object): return object - case .insert(_, let object): return object - } - } - - internal func index() -> Int { - switch self { - case .update(let index, _): return index - case .delete(let index, _): return index - case .insert(let index, _): return index - } - } - - internal var isDeletion: Bool { - switch self { - case .delete(_): return true - default: return false - } - } - - internal var isUpdate: Bool { - switch self { - case .update(_): return true - default: return false - } - } - - internal var isInsertion: Bool { - switch self { - case .insert(_): return true - default: return false - } - } - -} diff --git a/SugarRecord/Source/CoreData/Entities/CoreDataObjectModel.swift b/SugarRecord/Source/CoreData/Entities/CoreDataObjectModel.swift index 48207eb1..1e28f6f3 100644 --- a/SugarRecord/Source/CoreData/Entities/CoreDataObjectModel.swift +++ b/SugarRecord/Source/CoreData/Entities/CoreDataObjectModel.swift @@ -27,7 +27,7 @@ extension CoreDataObjectModel: CustomStringConvertible { public var description: String { get { switch self { - case .named(let name): return "NSManagedObject model named: \(name) in the main NSBundle" + case .named(let name, _): return "NSManagedObject model named: \(name) in the main NSBundle" case .merged(_): return "Merged NSManagedObjec models in the provided bundles" case .url(let url): return "NSManagedObject model in the URL: \(url)" } diff --git a/SugarRecord/Source/CoreData/Entities/CoreDataObservable.swift b/SugarRecord/Source/CoreData/Entities/CoreDataObservable.swift deleted file mode 100644 index 6f0365b9..00000000 --- a/SugarRecord/Source/CoreData/Entities/CoreDataObservable.swift +++ /dev/null @@ -1,87 +0,0 @@ -import Foundation -import CoreData - -@available(OSX 10.12, *) -public class CoreDataObservable: RequestObservable, NSFetchedResultsControllerDelegate where T:Equatable { - - // MARK: - Attributes - - internal let fetchRequest: NSFetchRequest - internal var observer: ((ObservableChange) -> Void)? - internal let fetchedResultsController: NSFetchedResultsController - private var batchChanges: [CoreDataChange] = [] - - - // MARK: - Init - - internal init(request: FetchRequest, context: NSManagedObjectContext) { - - let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: T.entityName) - if let predicate = request.predicate { - fetchRequest.predicate = predicate - } - if let sortDescriptor = request.sortDescriptor { - fetchRequest.sortDescriptors = [sortDescriptor] - } - fetchRequest.fetchBatchSize = 0 - self.fetchRequest = fetchRequest - self.fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil) - super.init(request: request) - self.fetchedResultsController.delegate = self - } - - - // MARK: - Observable - - public override func observe(_ closure: @escaping (ObservableChange) -> Void) { - assert(self.observer == nil, "Observable can be observed only once") - let initial = try! self.fetchedResultsController.managedObjectContext.fetch(self.fetchRequest) as! [T] - closure(ObservableChange.initial(initial)) - self.observer = closure - _ = try? self.fetchedResultsController.performFetch() - } - - - // MARK: - Dipose Method - - override func dispose() { - self.fetchedResultsController.delegate = nil - } - - - // MARK: - NSFetchedResultsControllerDelegate - - public func controller(_ controller: NSFetchedResultsController, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) { - - var index: Int? - var newIndex: Int? - #if os(iOS) || os(tvOS) || os(watchOS) - index = indexPath?.row - newIndex = newIndexPath?.row - #elseif os(OSX) - index = indexPath?[1] - newIndex = newIndexPath?[1] - #endif - switch type { - case .delete: - self.batchChanges.append(.delete(index!, anObject as! T)) - case .insert: - self.batchChanges.append(.insert(newIndex!, anObject as! T)) - case .update: - self.batchChanges.append(.update(index!, anObject as! T)) - default: break - } - } - - public func controllerWillChangeContent(_ controller: NSFetchedResultsController) { - self.batchChanges = [] - } - - public func controllerDidChangeContent(_ controller: NSFetchedResultsController) { - let deleted = self.batchChanges.filter { $0.isDeletion }.map { $0.index() } - let inserted = self.batchChanges.filter { $0.isInsertion }.map { (index: $0.index(), element: $0.object()) } - let updated = self.batchChanges.filter { $0.isUpdate }.map { (index: $0.index(), element: $0.object()) } - self.observer?(ObservableChange.update(deletions: deleted, insertions: inserted, modifications: updated)) - } - -} diff --git a/SugarRecord/Source/CoreData/Entities/CoreDataStore.swift b/SugarRecord/Source/CoreData/Entities/CoreDataStore.swift index 0e6c4bf7..9325b05d 100644 --- a/SugarRecord/Source/CoreData/Entities/CoreDataStore.swift +++ b/SugarRecord/Source/CoreData/Entities/CoreDataStore.swift @@ -10,7 +10,7 @@ public enum CoreDataStore { switch self { case .url(let url): return url case .named(let name): - return URL(fileURLWithPath: documentsDirectory()).appendingPathComponent(name) + return URL(fileURLWithPath: String.documentDirectory).appendingPathComponent(name) } } diff --git a/SugarRecord/Source/CoreData/Entities/CoreDataiCloudConfig.swift b/SugarRecord/Source/CoreData/Entities/CoreDataiCloudConfig.swift deleted file mode 100644 index 3d15e599..00000000 --- a/SugarRecord/Source/CoreData/Entities/CoreDataiCloudConfig.swift +++ /dev/null @@ -1,30 +0,0 @@ -import Foundation - -public struct CoreDataiCloudConfig { - - // MARK: - Attributes - - internal let ubiquitousContentName: String - internal let ubiquitousContentURL: String - internal let ubiquitousContainerIdentifier: String - internal let ubiquitousPeerTokenOption: String? - internal let removeUbiquitousMetadataOption: Bool? - internal let rebuildFromUbiquitousContentOption: Bool? - - - // MARK: - Init - - public init(ubiquitousContentName: String, - ubiquitousContentURL: String, - ubiquitousContainerIdentifier: String, - ubiquitousPeerTokenOption: String? = nil, - removeUbiquitousMetadataOption: Bool? = nil, - rebuildFromUbiquitousContentOption: Bool? = nil) { - self.ubiquitousContentName = ubiquitousContentName - self.ubiquitousContentURL = ubiquitousContentURL - self.ubiquitousPeerTokenOption = ubiquitousPeerTokenOption - self.removeUbiquitousMetadataOption = removeUbiquitousMetadataOption - self.ubiquitousContainerIdentifier = ubiquitousContainerIdentifier - self.rebuildFromUbiquitousContentOption = rebuildFromUbiquitousContentOption - } -} diff --git a/SugarRecord/Source/CoreData/Extensions/NSManagedObject.swift b/SugarRecord/Source/CoreData/Extensions/NSManagedObject.swift index bd91cefb..83e2beb6 100644 --- a/SugarRecord/Source/CoreData/Extensions/NSManagedObject.swift +++ b/SugarRecord/Source/CoreData/Extensions/NSManagedObject.swift @@ -6,7 +6,7 @@ import CoreData extension NSManagedObject { open class var entityName: String { - return NSStringFromClass(self).components(separatedBy: ".").last! + return NSStringFromClass(self).components(separatedBy: ".").last!.replacingOccurrences(of: "Entity", with: "") } } diff --git a/SugarRecord/Source/CoreData/Extensions/NSManagedObjectContext.swift b/SugarRecord/Source/CoreData/Extensions/NSManagedObjectContext.swift index 88ad93ca..0a1f4ce0 100644 --- a/SugarRecord/Source/CoreData/Extensions/NSManagedObjectContext.swift +++ b/SugarRecord/Source/CoreData/Extensions/NSManagedObjectContext.swift @@ -18,6 +18,115 @@ extension NSManagedObjectContext: Context { return typedResults } + public func fetchOne(_ request: FetchRequest) throws -> T? { + guard let entity = T.self as? NSManagedObject.Type else { throw StorageError.invalidType } + let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: entity.entityName) + fetchRequest.predicate = request.predicate + fetchRequest.sortDescriptors = request.sortDescriptor.map {[$0]} + fetchRequest.fetchOffset = request.fetchOffset + fetchRequest.fetchLimit = 1 + + if let results = try? self.fetch(fetchRequest), results.count > 0, let item = results.first as? T { + return item + } + + return nil + } + + public func query(_ request: FetchRequest, attributes: [String]) throws -> [[String: Any]] { + guard let entity = T.self as? NSManagedObject.Type else { throw StorageError.invalidType } + let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: entity.entityName) + fetchRequest.predicate = request.predicate + fetchRequest.sortDescriptors = request.sortDescriptor.map {[$0]} + fetchRequest.fetchOffset = request.fetchOffset + fetchRequest.fetchLimit = request.fetchLimit + + fetchRequest.propertiesToFetch = attributes + fetchRequest.resultType = .dictionaryResultType + + let results = try self.fetch(fetchRequest) + let typedResults = results.compactMap { $0 as? [String: Any] } + return typedResults + } + + public func query(_ request: FetchRequest, attribute: String) throws -> [String]? { + guard let entity = T.self as? NSManagedObject.Type else { throw StorageError.invalidType } + let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: entity.entityName) + fetchRequest.predicate = request.predicate + fetchRequest.sortDescriptors = request.sortDescriptor.map {[$0]} + fetchRequest.fetchOffset = request.fetchOffset + fetchRequest.fetchLimit = request.fetchLimit + + fetchRequest.propertiesToFetch = [attribute] + fetchRequest.resultType = .dictionaryResultType + + let results = try self.fetch(fetchRequest) + + var elements = [String]() + results.compactMap { $0 as? [String: Any] }.forEach { + if let value = $0[attribute] as? String { + elements.append(value) + } + } + + return elements + } + + public func querySet(_ request: FetchRequest, attribute: String) throws -> Set? { + guard let entity = T.self as? NSManagedObject.Type else { throw StorageError.invalidType } + let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: entity.entityName) + fetchRequest.predicate = request.predicate + fetchRequest.sortDescriptors = request.sortDescriptor.map {[$0]} + fetchRequest.fetchOffset = request.fetchOffset + fetchRequest.fetchLimit = request.fetchLimit + + fetchRequest.propertiesToFetch = [attribute] + fetchRequest.resultType = .dictionaryResultType + + let results = try self.fetch(fetchRequest) + + var ids = Set() + + if let currentResults = results as? [[String: Any]] { + for item in currentResults { + if let id = item[attribute] as? String { + ids.insert(id) + } + } + } + + return ids + } + + public func queryOne(_ request: FetchRequest, attributes: [String]) throws -> [String: Any]? { + guard let entity = T.self as? NSManagedObject.Type else { throw StorageError.invalidType } + let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: entity.entityName) + fetchRequest.predicate = request.predicate + fetchRequest.sortDescriptors = request.sortDescriptor.map {[$0]} + fetchRequest.fetchOffset = request.fetchOffset + fetchRequest.fetchLimit = 1 + + fetchRequest.propertiesToFetch = attributes + fetchRequest.resultType = .dictionaryResultType + + let results = try self.fetch(fetchRequest) + let typedResults = results.compactMap { $0 as? [String: Any] } + return typedResults.first + } + + public func count(_ request: FetchRequest) -> Int { + guard let entity = T.self as? NSManagedObject.Type else { return 0 } + let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: entity.entityName) + fetchRequest.predicate = request.predicate + + if let count = try? self.count(for: fetchRequest) { + return count + } + + return 0 + } + + public func insert(_ entity: T) throws {} public func new() throws -> T { @@ -42,6 +151,44 @@ extension NSManagedObjectContext: Context { throw StorageError.invalidOperation("-removeAll not available in NSManagedObjectContext. Remove the store instead") } + public func saveToPersistentStore(_ completion: ((Swift.Result) -> Void)? = nil) { + + self.performAndWait { + do { + try self.save() + + if let parentContext = self.parent { + parentContext.saveToPersistentStore(completion) + } else { + DispatchQueue.main.async { + completion?(.success(nil)) + } + } + } catch { + DispatchQueue.main.async { + completion?(.failure(error)) + } + } + } + } + + // MARK: - Batch Actions + public func batchUpdate(entityName: String, propertiesToUpdate: [AnyHashable : Any]?, predicate: NSPredicate?) { + let request = NSBatchUpdateRequest(entityName: entityName) + request.propertiesToUpdate = propertiesToUpdate + request.resultType = .updatedObjectsCountResultType + request.predicate = predicate + + _ = try? self.execute(request) + } + + public func batchDelete(entityName: String, predicate: NSPredicate?) { + let fetch = NSFetchRequest(entityName: entityName) + fetch.predicate = predicate + let request = NSBatchDeleteRequest(fetchRequest: fetch) + + _ = try? self.execute(request) + } } diff --git a/SugarRecord/Source/CoreData/Storages/CoreDataDefaultStorage.swift b/SugarRecord/Source/CoreData/Storages/CoreDataDefaultStorage.swift index c445ad8c..a77ac096 100644 --- a/SugarRecord/Source/CoreData/Storages/CoreDataDefaultStorage.swift +++ b/SugarRecord/Source/CoreData/Storages/CoreDataDefaultStorage.swift @@ -20,7 +20,6 @@ public class CoreDataDefaultStorage: Storage { } } - public var type: StorageType = .coreData public var mainContext: Context! private var _saveContext: Context! public var saveContext: Context! { @@ -110,29 +109,13 @@ public class CoreDataDefaultStorage: Storage { // MARK: - Init - - public convenience init(store: CoreDataStore, model: CoreDataObjectModel, migrate: Bool = true) throws { - try self.init(store: store, model: model, migrate: migrate, versionController: VersionController()) - } - - internal init(store: CoreDataStore, model: CoreDataObjectModel, migrate: Bool = true, versionController: VersionController) throws { - self.store = store + public init(store: CoreDataStore, model: CoreDataObjectModel, migrate: Bool = true) throws { + self.store = store self.objectModel = model.model()! self.persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: objectModel) self.persistentStore = try cdInitializeStore(store: store, storeCoordinator: persistentStoreCoordinator, migrate: migrate) self.rootSavingContext = cdContext(withParent: .coordinator(self.persistentStoreCoordinator), concurrencyType: .privateQueueConcurrencyType, inMemory: false) self.mainContext = cdContext(withParent: .context(self.rootSavingContext), concurrencyType: .mainQueueConcurrencyType, inMemory: false) - #if DEBUG - versionController.check() - #endif - } - - - // MARK: - Public - - @available(OSX 10.12, *) - public func observable(request: FetchRequest) -> RequestObservable where T:Equatable { - return CoreDataObservable(request: request, context: self.mainContext as! NSManagedObjectContext) } } diff --git a/SugarRecord/Source/CoreData/Storages/CoreDataiCloudStorage.swift b/SugarRecord/Source/CoreData/Storages/CoreDataiCloudStorage.swift deleted file mode 100644 index 7501e3b9..00000000 --- a/SugarRecord/Source/CoreData/Storages/CoreDataiCloudStorage.swift +++ /dev/null @@ -1,166 +0,0 @@ -import Foundation -import CoreData - -public class CoreDataiCloudStorage: Storage { - - // MARK: - Attributes - - internal let store: CoreDataStore - internal var objectModel: NSManagedObjectModel! = nil - internal var persistentStore: NSPersistentStore! = nil - internal var persistentStoreCoordinator: NSPersistentStoreCoordinator! = nil - internal var rootSavingContext: NSManagedObjectContext! = nil - - - // MARK: - Storage - - public var description: String { - get { - return "CoreDataiCloudStorage" - } - } - public var type: StorageType = .coreData - - public var mainContext: Context! - - public var saveContext: Context! { - get { - let context = cdContext(withParent: .context(self.rootSavingContext), concurrencyType: .privateQueueConcurrencyType, inMemory: false) - context.observe(inMainThread: true) { [weak self] (notification) -> Void in - (self?.mainContext as? NSManagedObjectContext)?.mergeChanges(fromContextDidSave: notification as Notification) - } - return context - } - } - - public var memoryContext: Context! { - get { - let context = cdContext(withParent: .context(self.rootSavingContext), concurrencyType: .privateQueueConcurrencyType, inMemory: true) - return context - } - } - - public func operation(_ operation: @escaping (_ context: Context, _ save: @escaping () -> Void) throws -> T) throws -> T { - let context: NSManagedObjectContext = (self.saveContext as? NSManagedObjectContext)! - var _error: Error! - - var returnedObject: T! - - context.performAndWait { - do { - returnedObject = try operation(context, { () -> Void in - do { - try context.save() - } - catch { - _error = error - } - if self.rootSavingContext.hasChanges { - self.rootSavingContext.performAndWait { - do { - try self.rootSavingContext.save() - } - catch { - _error = error - } - } - } - }) - } - catch { - _error = error - } - } - if let error = _error { - throw error - } - - return returnedObject - } - - public func backgroundOperation(_ operation: @escaping (_ context: Context, _ save: @escaping () -> Void) -> (), completion: @escaping (Error?) -> ()) { - let context: NSManagedObjectContext = self.saveContext as! NSManagedObjectContext - var _error: Error! - context.perform { - operation(context, { () -> Void in - do { - try context.save() - } - catch { - _error = error - } - self.rootSavingContext.perform { - if self.rootSavingContext.hasChanges { - do { - try self.rootSavingContext.save() - } - catch { - _error = error - } - } - completion(_error) - } - }) - } - } - - public func removeStore() throws { - try FileManager.default.removeItem(at: store.path() as URL) - } - - - // MARK: - Init - - public convenience init(model: CoreDataObjectModel, iCloud: CoreDataiCloudConfig) throws { - try self.init(model: model, iCloud: iCloud, versionController: VersionController()) - } - - internal init(model: CoreDataObjectModel, iCloud: CoreDataiCloudConfig, versionController: VersionController) throws { - self.objectModel = model.model()! - self.persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: objectModel) - let result = try! cdiCloudInitializeStore(storeCoordinator: persistentStoreCoordinator, iCloud: iCloud) - self.store = result.0 - self.persistentStore = result.1 - self.rootSavingContext = cdContext(withParent: .coordinator(self.persistentStoreCoordinator), concurrencyType: .privateQueueConcurrencyType, inMemory: false) - self.mainContext = cdContext(withParent: .context(self.rootSavingContext), concurrencyType: .mainQueueConcurrencyType, inMemory: false) - self.observeiCloudChangesInCoordinator() - #if DEBUG - versionController.check() - #endif - } - - - // MARK: - Public - -#if os(iOS) || os(tvOS) || os(watchOS) - - public func observable(request: FetchRequest) -> RequestObservable where T:Equatable { - return CoreDataObservable(request: request, context: self.mainContext as! NSManagedObjectContext) - } - -#endif - - // MARK: - Private - - private func observeiCloudChangesInCoordinator() { - NotificationCenter - .default - .addObserver(forName: NSNotification.Name.NSPersistentStoreDidImportUbiquitousContentChanges, object: self.persistentStoreCoordinator, queue: nil) { [weak self] (notification) -> Void in - self?.rootSavingContext.perform { - self?.rootSavingContext.mergeChanges(fromContextDidSave: notification) - } - } - } - -} - -internal func cdiCloudInitializeStore(storeCoordinator: NSPersistentStoreCoordinator, iCloud: CoreDataiCloudConfig) throws -> (CoreDataStore, NSPersistentStore?) { - let storeURL = FileManager.default - .url(forUbiquityContainerIdentifier: iCloud.ubiquitousContainerIdentifier)! - .appendingPathComponent(iCloud.ubiquitousContentURL) - var options = CoreDataOptions.migration.dict() - options[NSPersistentStoreUbiquitousContentURLKey] = storeURL as AnyObject? - options[NSPersistentStoreUbiquitousContentNameKey] = iCloud.ubiquitousContentName as AnyObject? - let store = CoreDataStore.url(storeURL) - return try (store, cdAddPersistentStore(store: store, storeCoordinator: storeCoordinator, options: options)) -} diff --git a/SugarRecord/Source/Foundation/Entities/Request.swift b/SugarRecord/Source/Foundation/Entities/Request.swift index 02147d9a..7026c68c 100644 --- a/SugarRecord/Source/Foundation/Entities/Request.swift +++ b/SugarRecord/Source/Foundation/Entities/Request.swift @@ -21,6 +21,14 @@ public struct FetchRequest: Equatable { self.fetchLimit = fetchLimit } + public init(_ context: Context, predicate: NSPredicate? = nil, fetchOffset: Int = 0, fetchLimit: Int = 0) { + self.context = context + self.sortDescriptor = nil + self.predicate = predicate + self.fetchOffset = fetchOffset + self.fetchLimit = fetchLimit + } + // MARK: - Public Fetching Methods @@ -33,6 +41,27 @@ public struct FetchRequest: Equatable { } + public func query(attributes: [String]) throws -> [[String: Any]] { + return try context!.query(self, attributes: attributes) + } + + public func queryOne(attributes: [String]) throws -> [String: Any]? { + return try context!.queryOne(self, attributes: attributes) + } + + public func querySet(attribute: String) throws -> Set? { + return try context!.querySet(self, attribute: attribute) + } + + public func fetchOne() throws -> T? { + return try context!.fetchOne(self) + } + + public func count() -> Int { + return context!.count(self) + } + + // MARK: - Public Builder Methods public func filtered(with predicate: NSPredicate) -> FetchRequest { @@ -54,7 +83,7 @@ public struct FetchRequest: Equatable { return self .request(withPredicate: NSPredicate(format: "NOT (\(key) IN %@)", value)) } - + public func sorted(with sortDescriptor: NSSortDescriptor) -> FetchRequest { return self @@ -94,5 +123,5 @@ public struct FetchRequest: Equatable { public func == (lhs: FetchRequest, rhs: FetchRequest) -> Bool { return lhs.sortDescriptor == rhs.sortDescriptor && - lhs.predicate == rhs.predicate + lhs.predicate == rhs.predicate } diff --git a/SugarRecord/Source/Foundation/Entities/Storage.swift b/SugarRecord/Source/Foundation/Entities/Storage.swift index bad0fd36..fb754200 100644 --- a/SugarRecord/Source/Foundation/Entities/Storage.swift +++ b/SugarRecord/Source/Foundation/Entities/Storage.swift @@ -1,14 +1,10 @@ import Foundation -public enum StorageType { - case coreData -} typealias StorageOperation = ((_ context: Context, _ save: () -> Void) throws -> Void) throws -> Void public protocol Storage: CustomStringConvertible, Requestable { - var type: StorageType { get } var mainContext: Context! { get } var saveContext: Context! { get } var memoryContext: Context! { get } diff --git a/SugarRecord/Source/Foundation/Extensions/RequestExtension.swift b/SugarRecord/Source/Foundation/Extensions/RequestExtension.swift deleted file mode 100644 index b9041f8b..00000000 --- a/SugarRecord/Source/Foundation/Extensions/RequestExtension.swift +++ /dev/null @@ -1,22 +0,0 @@ -import Foundation - - -// MARK: Request extension (NSPredicateConvertible) - -extension FetchRequest: NSPredicateConvertible { - - public init(predicate: NSPredicate) { - self = FetchRequest(predicate: predicate) - } -} - - -// MARK: Request extension (NSSortDescriptorConvertible) - -extension FetchRequest: NSSortDescriptorConvertible { - - public init(sortDescriptor: NSSortDescriptor) { - self = FetchRequest(sortDescriptor: sortDescriptor) - } - -} diff --git a/SugarRecord/Source/Foundation/Logger/Logger.swift b/SugarRecord/Source/Foundation/Logger/Logger.swift deleted file mode 100644 index c39d89dd..00000000 --- a/SugarRecord/Source/Foundation/Logger/Logger.swift +++ /dev/null @@ -1,11 +0,0 @@ -import Foundation - -internal class Logger { - - // MARK: - Internal - - internal func log(_ message: String) { - print("🍬 SugarRecord: \(message)") - } - -} diff --git a/SugarRecord/Source/Foundation/Protocols/Context.swift b/SugarRecord/Source/Foundation/Protocols/Context.swift index cf9f3ebc..01d5d898 100644 --- a/SugarRecord/Source/Foundation/Protocols/Context.swift +++ b/SugarRecord/Source/Foundation/Protocols/Context.swift @@ -3,26 +3,35 @@ import Foundation public protocol Context: Requestable { func fetch(_ request: FetchRequest) throws -> [T] + func fetchOne(_ request: FetchRequest) throws -> T? func insert(_ entity: T) throws func new() throws -> T + func query(_ request: FetchRequest, attributes: [String]) throws -> [[String: Any]] + func query(_ request: FetchRequest, attribute: String) throws -> [String]? + func querySet(_ request: FetchRequest, attribute: String) throws -> Set? + func queryOne(_ request: FetchRequest, attributes: [String]) throws -> [String: Any]? + func count(_ request: FetchRequest) -> Int func create() throws -> T func remove(_ objects: [T]) throws func remove(_ object: T) throws func removeAll() throws + func saveToPersistentStore(_ completion: ((Swift.Result) -> Void)?) + func batchUpdate(entityName: String, propertiesToUpdate: [AnyHashable : Any]?, predicate: NSPredicate?) + func batchDelete(entityName: String, predicate: NSPredicate?) } // MARK: - Extension of Context implementing convenience methods. public extension Context { - - public func create() throws -> T { + + func create() throws -> T { let instance: T = try self.new() try self.insert(instance) return instance } - - public func remove(_ object: T) throws { + + func remove(_ object: T) throws { return try self.remove([object]) } diff --git a/SugarRecord/Source/Foundation/Utils/DirUtils.swift b/SugarRecord/Source/Foundation/Utils/DirUtils.swift index 417e11ff..2167104e 100644 --- a/SugarRecord/Source/Foundation/Utils/DirUtils.swift +++ b/SugarRecord/Source/Foundation/Utils/DirUtils.swift @@ -1,10 +1,9 @@ import Foundation -func documentsDirectory() -> String { - #if os(tvOS) - let paths = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true) - #else - let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) - #endif - return paths[0] +extension String { + + static var documentDirectory: String { + return NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! + } + } diff --git a/SugarRecord/Source/Foundation/Version/VersionController.swift b/SugarRecord/Source/Foundation/Version/VersionController.swift deleted file mode 100644 index 60a59479..00000000 --- a/SugarRecord/Source/Foundation/Version/VersionController.swift +++ /dev/null @@ -1,31 +0,0 @@ -import Foundation - -internal class VersionController { - - // MARK: - Attributes - - fileprivate let provider: VersionProvider - fileprivate let logger: Logger - - - // MARK: - Init - - internal init(provider: VersionProvider = VersionProvider(), - logger: Logger = Logger()) { - self.provider = provider - self.logger = logger - } - - - // MARK: - Internal - - internal func check() { - let frameworkVersion = self.provider.framework() - self.provider.github { [weak self] (githubVersion) in - if frameworkVersion != githubVersion { - self?.logger.log("There's a new version available, \(githubVersion)") - } - } - } - -} diff --git a/SugarRecord/Source/Foundation/Version/VersionProvider.swift b/SugarRecord/Source/Foundation/Version/VersionProvider.swift deleted file mode 100644 index aa3e457a..00000000 --- a/SugarRecord/Source/Foundation/Version/VersionProvider.swift +++ /dev/null @@ -1,33 +0,0 @@ -import Foundation - -internal class VersionProvider: NSObject { - - // MARK: - Constants - - internal static let apiReleasesUrl: String = "https://api.github.com/repos/carambalabs/sugarrecord/releases" - - - // MARK: - Internal - - internal func framework() -> String! { - if let version = Bundle(for: VersionProvider.classForCoder()).object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String { - return version - } - return nil - } - - internal func github(_ completion: @escaping (String) -> Void) { - let request: URLRequest = URLRequest(url: URL(string: VersionProvider.apiReleasesUrl)!) - let session = URLSession(configuration: URLSessionConfiguration.default) - session.dataTask(with: request, completionHandler: { (data, response, error) in - if let data = data { - let json: AnyObject? = try! JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as AnyObject? - if let array = json as? [[String: AnyObject]], let lastVersion = array.first, let versionTag: String = lastVersion["tag_name"] as? String { - completion(versionTag) - } - } - }).resume() - session.finishTasksAndInvalidate() - } - -} diff --git a/Tests/Helpers/CoreData.swift b/Tests/Helpers/CoreData.swift deleted file mode 100755 index 64f523c8..00000000 --- a/Tests/Helpers/CoreData.swift +++ /dev/null @@ -1,12 +0,0 @@ -import Foundation -import CoreData - -@testable import SugarRecord - -func testCoreData() -> CoreDataDefaultStorage { - let store = CoreDataStore.named("testing") - let bundle = Bundle(for: CoreDataDefaultStorageTests.classForCoder()) - let model = CoreDataObjectModel.merged([bundle]) - let defaultStorage = try! CoreDataDefaultStorage(store: store, model: model) - return defaultStorage -} diff --git a/Tests/Models/CoreData/Track+CoreDataProperties.swift b/Tests/Models/CoreData/Track+CoreDataProperties.swift deleted file mode 100755 index 08c147bf..00000000 --- a/Tests/Models/CoreData/Track+CoreDataProperties.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Foundation -import CoreData - -extension Track { - - @NSManaged var name: String? - @NSManaged var artist: String? - -} diff --git a/Tests/Models/CoreData/Track.swift b/Tests/Models/CoreData/Track.swift deleted file mode 100755 index b0b84e8b..00000000 --- a/Tests/Models/CoreData/Track.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Foundation -import CoreData - - -class Track: NSManagedObject { - -// Insert code here to add functionality to your managed object subclass - -} diff --git a/Tests/Resources/DataModel.xcdatamodeld/DataModel.xcdatamodel/contents b/Tests/Resources/DataModel.xcdatamodeld/DataModel.xcdatamodel/contents deleted file mode 100755 index 97ecd06d..00000000 --- a/Tests/Resources/DataModel.xcdatamodeld/DataModel.xcdatamodel/contents +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/Tests/Source/CoreData/Entities/CoreDataChangeTests.swift b/Tests/Source/CoreData/Entities/CoreDataChangeTests.swift deleted file mode 100755 index ebdc4483..00000000 --- a/Tests/Source/CoreData/Entities/CoreDataChangeTests.swift +++ /dev/null @@ -1,128 +0,0 @@ -import Foundation -import Quick -import Nimble - -@testable import SugarRecord - -class CoreDataChangeTests: QuickSpec { - - override func spec() { - - context("Insert") { - var change: CoreDataChange! - - beforeSuite { - change = .insert(0, "insert") - } - - describe("-object") { - it("should return the correct object") { - expect(change.object()) == "insert" - } - } - - describe("-isDeletion") { - it("should return false") { - expect(change.isDeletion) == false - } - } - - describe("-isUpdate") { - it("should return false") { - expect(change.isUpdate) == false - } - } - - describe("-isInsertion") { - it("should return true") { - expect(change.isInsertion) == true - } - } - - describe("-index") { - it("should return the correct index") { - expect(change.index()) == 0 - } - } - } - - context("Update") { - var change: CoreDataChange! - - beforeSuite { - change = .update(1, "update") - } - - describe("-object") { - it("should return the correct object") { - expect(change.object()) == "update" - } - } - - describe("-isDeletion") { - it("should return false") { - expect(change.isDeletion) == false - } - } - - describe("-isUpdate") { - it("should return true") { - expect(change.isUpdate) == true - } - } - - describe("-isInsertion") { - it("should return false") { - expect(change.isInsertion) == false - } - } - - describe("-index") { - it("should return the correct index") { - expect(change.index()) == 1 - } - } - } - - context("Delete") { - - var change: CoreDataChange! - - beforeSuite { - change = .delete(3, "delete") - } - - describe("-object") { - it("should return the correct object") { - expect(change.object()) == "delete" - } - } - - describe("-isDeletion") { - it("should return true") { - expect(change.isDeletion) == true - } - } - - describe("-isUpdate") { - it("should return false") { - expect(change.isUpdate) == false - } - } - - describe("-isInsertion") { - it("should return false") { - expect(change.isInsertion) == false - } - } - - describe("-index") { - it("should return the correct index") { - expect(change.index()) == 3 - } - } - } - - } - -} diff --git a/Tests/Source/CoreData/Entities/CoreDataObservableTests.swift b/Tests/Source/CoreData/Entities/CoreDataObservableTests.swift deleted file mode 100755 index a33b4915..00000000 --- a/Tests/Source/CoreData/Entities/CoreDataObservableTests.swift +++ /dev/null @@ -1,85 +0,0 @@ -import Foundation -import Quick -import Nimble -import CoreData - -@testable import SugarRecord - -class CoreDataObservableTests: QuickSpec { - - override func spec() { - - var request: FetchRequest! - var subject: CoreDataObservable! - var storage: CoreDataDefaultStorage! - - beforeEach { - let store: CoreDataStore = CoreDataStore.named("test") - let bundle = Bundle(for: self.classForCoder) - let model = CoreDataObjectModel.merged([bundle]) - storage = try! CoreDataDefaultStorage(store: store, model: model) - _ = try? storage.removeStore() - request = FetchRequest().sorted(with: "name", ascending: true) - let context: NSManagedObjectContext = storage.mainContext as! NSManagedObjectContext - subject = CoreDataObservable(request: request, context: context) - context.perform({ - let track: Track = try! context.create() - track.name = "test" - track.artist = "pedro" - try! context.save() - }) - } - - afterEach { - _ = try? storage.removeStore() - } - - describe("-observe:") { - it("should report the initial state") { - waitUntil(action: { (done) in - subject.observe({ (change) in - switch change { - case .initial(let values): - expect(values.first?.name) == "test" - expect(values.first?.artist) == "pedro" - done() - default: - break - } - }) - }) - } - - //FIXME -// it("should report updates") { -// waitUntil(action: { (done) in -// subject.observe({ (change) in -// switch change { -// case .update(_, let insertions, _): -// expect(insertions[0].element.name) == "test2" -// expect(insertions[0].element.artist) == "pedro" -// done() -// default: -// break -// } -// }) -// let context: NSManagedObjectContext = storage.mainContext as! NSManagedObjectContext -// context.performAndWait { -// let track: Track = try! context.create() -// track.name = "test2" -// track.artist = "pedro" -// try! context.save() -// } -// }) -// } - } - - describe("-dispose") { - it("should unlink the NSFetchedResultsController from the observable") { - subject.dispose() - expect(subject.fetchedResultsController.delegate).to(beNil()) - } - } - } - -} diff --git a/Tests/Source/CoreData/Entities/ObjectModelTests.swift b/Tests/Source/CoreData/Entities/ObjectModelTests.swift deleted file mode 100755 index 731048af..00000000 --- a/Tests/Source/CoreData/Entities/ObjectModelTests.swift +++ /dev/null @@ -1,41 +0,0 @@ -import Foundation -import Nimble -import Quick -import CoreData - -@testable import SugarRecord - -class ObjectModelTests: QuickSpec { - - override func spec() { - - describe("data model generation") { () -> Void in - - context("merged", { - it("should take the provided bundle data model", closure: { () -> () in - let bundle = Bundle(for: self.classForCoder) - expect(CoreDataObjectModel.merged([bundle]).model()).toNot(beNil()) - }) - it("should return the models in the main bundle", closure: { - expect(CoreDataObjectModel.merged(nil).model()?.entities.count) == 0 - }) - }) - - context("named", { - it("should return the object model", closure: { - expect(CoreDataObjectModel.named("DataModel", Bundle(for: self.classForCoder)).model()?.entities.count) == 1 - }) - }) - - context("url", { () -> Void in - it("should return an object model if the url is valid") { - let url = Bundle(for: self.classForCoder).url(forResource: "DataModel", withExtension: "momd") - expect(CoreDataObjectModel.url(url!).model()?.entities.count) == 1 - } - }) - - } - - } - -} diff --git a/Tests/Source/CoreData/Entities/OptionsTests.swift b/Tests/Source/CoreData/Entities/OptionsTests.swift deleted file mode 100755 index f1f2f608..00000000 --- a/Tests/Source/CoreData/Entities/OptionsTests.swift +++ /dev/null @@ -1,34 +0,0 @@ -import Foundation -import Quick -import Nimble -import CoreData - -@testable import SugarRecord - -class OptionsTests: QuickSpec { - - override func spec() { - - describe("options dictionary content") { - - it("should return the right data for default options") { - let options = CoreDataOptions.basic.dict() - let sqliteOptions = options[NSSQLitePragmasOption] as! [String: String] - expect(sqliteOptions["journal_mode"]) == "DELETE" - expect(options[NSMigratePersistentStoresAutomaticallyOption] as? NSNumber) == NSNumber(value: true) - expect(options[NSInferMappingModelAutomaticallyOption] as? NSNumber) == NSNumber(value: false) - } - - it("should return the right data for migration options") { - let options = CoreDataOptions.migration.dict() - let sqliteOptions = options[NSSQLitePragmasOption] as! [String: String] - expect(sqliteOptions["journal_mode"]) == "DELETE" - expect(options[NSMigratePersistentStoresAutomaticallyOption] as? NSNumber) == NSNumber(value: true) - expect(options[NSInferMappingModelAutomaticallyOption] as? NSNumber) == NSNumber(value: true) - } - - } - - } - -} diff --git a/Tests/Source/CoreData/Entities/StoreTests.swift b/Tests/Source/CoreData/Entities/StoreTests.swift deleted file mode 100755 index 99a844ae..00000000 --- a/Tests/Source/CoreData/Entities/StoreTests.swift +++ /dev/null @@ -1,25 +0,0 @@ -import Foundation -import Quick -import Nimble - -@testable import SugarRecord - -class StoreTests: QuickSpec { - - override func spec() { - - describe("path generation") { () -> Void in - - it("should return the url if the store is specified via an URL", closure: { () -> () in - let url: URL = URL(string: "myurl")! - expect(CoreDataStore.url(url).path()) == url - }) - - it("should return the store name in documents folder if it's a named store", closure: { () -> () in - let name: String = "database.sqlite" - expect(CoreDataStore.named(name).path()) == NSURL(fileURLWithPath: documentsDirectory()).appendingPathComponent(name) - }) - - } - } -} diff --git a/Tests/Source/CoreData/Storage/CoreDataDefaultStorageTests.swift b/Tests/Source/CoreData/Storage/CoreDataDefaultStorageTests.swift deleted file mode 100755 index 9d9b1912..00000000 --- a/Tests/Source/CoreData/Storage/CoreDataDefaultStorageTests.swift +++ /dev/null @@ -1,187 +0,0 @@ -import Foundation -import Quick -import Nimble -import CoreData - -@testable import SugarRecord - -class CoreDataDefaultStorageTests: QuickSpec { - override func spec() { - - describe("storage") { () -> Void in - - var store: CoreDataStore! - var model: CoreDataObjectModel! - var subject: CoreDataDefaultStorage! - - beforeEach { - store = CoreDataStore.named("test") - let bundle = Bundle(for: self.classForCoder) - model = CoreDataObjectModel.merged([bundle]) - subject = try! CoreDataDefaultStorage(store: store!, model: model!) - } - - afterEach { - _ = try? subject?.removeStore() - } - - context("initialization") { - - it("should create the database") { - let path = store!.path().path - expect(FileManager.default.fileExists(atPath: path)) == true - } - - it("should have the right description") { - expect(subject?.description) == "CoreDataDefaultStorage" - } - - it("should have the right type") { - expect(subject?.type) == .coreData - } - - describe("root saving context") { - it("should have the persistent store coordinator as parent") { - expect(subject?.rootSavingContext.persistentStoreCoordinator) == subject?.persistentStoreCoordinator - } - it("should have private concurrency type") { - expect(subject?.rootSavingContext.concurrencyType) == .privateQueueConcurrencyType - } - } - - describe("save context") { - it("should have the root saving context as parent") { - expect((subject?.saveContext as! NSManagedObjectContext).parent) == subject?.rootSavingContext - } - - it("should have private concurrency type") { - expect((subject?.saveContext as! NSManagedObjectContext).concurrencyType) == NSManagedObjectContextConcurrencyType.privateQueueConcurrencyType - } - - } - - describe("memory context") { - it("should have the root saving context as parent") { - expect((subject?.memoryContext as! NSManagedObjectContext).parent) == subject?.rootSavingContext - } - - it("should have private concurrency type") { - expect((subject?.memoryContext as! NSManagedObjectContext).concurrencyType) == NSManagedObjectContextConcurrencyType.privateQueueConcurrencyType - } - } - - describe("main context") { - it("should have the root saving context as parent") { - expect((subject?.mainContext as! NSManagedObjectContext).parent) == subject?.rootSavingContext - } - - it("should have main concurrency type") { - expect((subject?.mainContext as! NSManagedObjectContext).concurrencyType) == NSManagedObjectContextConcurrencyType.mainQueueConcurrencyType - } - } - } - - context("removal") { - it("should properly remove the store") { - _ = try? subject?.removeStore() - let path = store!.path().path - expect(FileManager.default.fileExists(atPath: path)) == false - } - } - - context("persistence") { - - it("shouldn't persist changes if we save the memory context") { - waitUntil(action: { (done) -> Void in - let memoryContext = subject!.memoryContext as! NSManagedObjectContext! - let _: Track = try! memoryContext!.create() - try! memoryContext?.save() - _ = try? subject?.operation({ (context, save) -> Void in - let resultsCount = try! context.request(Track.self).fetch().count - expect(resultsCount) == 0 - done() - }) - }) - } - - it("should persist the changes if it's save context") { - waitUntil(action: { (done) -> Void in - _ = try? subject?.operation({ (context, save) -> Void in - let _: Track = try! context.create() - save() - }) - let tracksCount: Int? = try! subject?.mainContext.request(Track.self).fetch().count - expect(tracksCount) == 1 - done() - }) - } - } - - describe("-operation:") { - it("should return the inner value from the operation") { - waitUntil(action: { (done) -> Void in - let result: String = try! subject.operation({ (context, save) -> String in - let issue: Track = try! context.create() - issue.name = "trackName" - save() - return issue.name! - }) - expect(result) == "trackName" - done() - - }) - } - } - - describe("-backgroundOperation") { - it("should complete") { - waitUntil { (_done) in - subject.backgroundOperation({ (_, done) in - // Do nothing - done() - }, completion: { (error) in - _done() - }) - } - } - it("it shouldn't call the completion block in the main thread") { - waitUntil { (done) in - subject.backgroundOperation({ (_, _done) in - _done() - }, completion: { (_) in - XCTAssertFalse(Thread.isMainThread) - done() - }) - } - } - } - - - describe("-observable:") { - - var request: FetchRequest! - var observable: CoreDataObservable! - - beforeEach { - request = FetchRequest().filtered(with: "name", equalTo: "test") - .sorted(with: "name", ascending: true) - observable = subject.observable(request: request) as! CoreDataObservable - } - - it("should have the correct request predicate") { - expect(observable.fetchRequest.predicate) == request.predicate - } - - it("should have the correct request sort descriptor") { - expect(observable.fetchRequest.sortDescriptors) == [request.sortDescriptor!] - } - - it("should have the correct context") { - expect(observable.fetchedResultsController.managedObjectContext) == subject.mainContext! as? NSManagedObjectContext - } - - } - } - - } -} diff --git a/Tests/Source/Foundation/Entities/RequestTests.swift b/Tests/Source/Foundation/Entities/RequestTests.swift deleted file mode 100755 index 46fd1ccf..00000000 --- a/Tests/Source/Foundation/Entities/RequestTests.swift +++ /dev/null @@ -1,63 +0,0 @@ -import Foundation -import Quick -import Nimble -import Result - -@testable import SugarRecord - -class RequestTests: QuickSpec { - - override func spec() { - - describe("builders") { - - it("-filtered:with") { - let predicate: NSPredicate = NSPredicate(format: "name == TEST") - let request: FetchRequest = FetchRequest(testCoreData()).filtered(with: predicate) - expect(request.predicate) == predicate - } - - it("-filtered(with:value:)") { - let predicate: NSPredicate = NSPredicate(format: "name == %@", "TEST") - let request: FetchRequest = FetchRequest(testCoreData()).filtered(with: "name", equalTo: "TEST") - expect(request.predicate) == predicate - } - - it("-filtered:with:in:") { - let predicate: NSPredicate = NSPredicate(format: "name IN %@", ["TEST"]) - let request: FetchRequest = FetchRequest(testCoreData()).filtered(with: "name", in: ["TEST"]) - expect(request.predicate) == predicate - } - - it("-filtered:with:notIn:") { - let predicate: NSPredicate = NSPredicate(format: "NOT name IN %@", ["TEST"]) - let request: FetchRequest = FetchRequest(testCoreData()).filtered(with: "name", notIn: ["TEST"]) - expect(request.predicate) == predicate - } - - it("-sorted(with:ascending:comparator)") { - let descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true, comparator: { _ in return ComparisonResult.orderedSame}) - let request: FetchRequest = FetchRequest(testCoreData()).sorted(with: "name", ascending: true, comparator: {_ in return ComparisonResult.orderedSame}) - expect(descriptor.key) == request.sortDescriptor?.key - expect(descriptor.ascending) == request.sortDescriptor?.ascending - } - - it("-sorted(with:ascending)") { - let descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true) - let request: FetchRequest = FetchRequest(testCoreData()).sorted(with: "name", ascending: true) - expect(descriptor.key) == request.sortDescriptor?.key - expect(descriptor.ascending) == request.sortDescriptor?.ascending - } - - it("sorted(with:ascending:selector)") { - let descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true, selector: Selector("selector")) - let request: FetchRequest = FetchRequest(testCoreData()).sorted(with: "name", ascending: true, selector: Selector("selector")) - expect(descriptor.key) == request.sortDescriptor?.key - expect(descriptor.ascending) == request.sortDescriptor?.ascending - expect(descriptor.selector) == request.sortDescriptor?.selector - } - } - - } - -} diff --git a/Tests/Source/Foundation/Utils/DirUtilsTests.swift b/Tests/Source/Foundation/Utils/DirUtilsTests.swift deleted file mode 100755 index 7fca67b7..00000000 --- a/Tests/Source/Foundation/Utils/DirUtilsTests.swift +++ /dev/null @@ -1,18 +0,0 @@ -import Foundation -import Quick -import Nimble - -@testable import SugarRecord - -class DirUtilsTests: QuickSpec { - - override func spec() { - - it("should return the proper documents directory") { - let path = documentsDirectory() - expect(path) == NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] - } - - } - -} diff --git a/Tests/Source/Foundation/Version/VersionControllerTests.swift b/Tests/Source/Foundation/Version/VersionControllerTests.swift deleted file mode 100755 index a6ce201f..00000000 --- a/Tests/Source/Foundation/Version/VersionControllerTests.swift +++ /dev/null @@ -1,43 +0,0 @@ -import Foundation -import Quick -import Nimble - -@testable import SugarRecord - -class VersionControllerTests: QuickSpec { - override func spec() { - var provider: MockVersionProvider! - var logger: MockLogger! - var subject: VersionController! - - beforeSuite { - provider = MockVersionProvider() - logger = MockLogger() - subject = VersionController(provider: provider, logger: logger) - } - - it("should log when there's a new version") { - subject.check() - expect(logger.logged) == true - } - } -} - - -// MARK: - Mocking - -private class MockVersionProvider: VersionProvider { - fileprivate override func framework() -> String! { - return "4.0.0" - } - fileprivate override func github(_ completion: @escaping (String) -> Void) { - completion("4.0.1") - } -} - -private class MockLogger: Logger { - fileprivate var logged: Bool! = false - fileprivate override func log(_ message: String) { - self.logged = true - } -} diff --git a/Tests/Source/Foundation/Version/VersionProviderTests.swift b/Tests/Source/Foundation/Version/VersionProviderTests.swift deleted file mode 100755 index 925ace83..00000000 --- a/Tests/Source/Foundation/Version/VersionProviderTests.swift +++ /dev/null @@ -1,48 +0,0 @@ -import Foundation -import Quick -import Nimble -import OHHTTPStubs - -@testable import SugarRecord - -class VersionProviderTests: QuickSpec { - override func spec() { - - var subject: VersionProvider! - - beforeEach { - subject = VersionProvider() - _ = stub(condition: isPath("/repos/carambalabs/sugarrecord/releases")) { _ in - let object = [["tag_name": "3.1.0"]] - return OHHTTPStubsResponse(jsonObject: object, statusCode: 200, headers: ["Content-Type":"application/json"]) - } - } - - afterEach { - OHHTTPStubs.removeAllStubs() - } - - describe("-github:completion:") { - it("should return the version") { - waitUntil(timeout: 10, action: { (done) in - subject.github({ (version) in - expect(version) == "3.1.0" - done() - }) - }) - } - } - - describe("-framework") { - it("should return a value") { - expect(subject.framework()).toNot(beNil()) - } - it("should have the correct format") { - let regex = try! NSRegularExpression(pattern: "\\d+\\.\\d+\\.\\d+", options: [.caseInsensitive]) - let version = subject.framework() - let correctFormat = regex.firstMatch(in: version!, options: [], range: NSMakeRange(0, version!.characters.count)) != nil - expect(correctFormat) == true - } - } - } -} diff --git a/fastlane/Fastfile b/fastlane/Fastfile deleted file mode 100644 index aef00fc7..00000000 --- a/fastlane/Fastfile +++ /dev/null @@ -1,41 +0,0 @@ -COMMIT_MESSAGE = "Bump podspec to" - -lane :dependencies do - cocoapods(podfile: "Example/") - carthage(command: "update") -end - -lane :tests do - scan(workspace: "Example/SugarRecord.xcworkspace", scheme: "SugarRecord_Tests", device: "iPhone 6", skip_build: true) -end - -lane :carthage_project do - carthage(command: "build", no_skip_current: true, verbose: true) -end - -lane :travis do - dependencies - carthage_project - tests - danger -end - -lane :push do - podspec = "SugarRecord.podspec" - last_version = version_get_podspec(path: podspec) - version = version_bump_podspec(path: podspec) - git_commit(path: [podspec, "./Example/Podfile.lock"], message: "#{COMMIT_MESSAGE} #{version}") - changelog = changelog_from_git_commits - changelog ||= "No changelog" - github_release = set_github_release( - repository_name: "carambalabs/SugarRecord", - api_token: ENV['GITHUB_TOKEN'], - name: version, - tag_name: version, - description: changelog, - commitish: "master" - ) - sh("git fetch --tags") - push_to_git_remote(remote_branch: 'master', force: false, tags: true) - pod_push(allow_warnings: true, verbose: true) -end \ No newline at end of file diff --git a/fastlane/README.md b/fastlane/README.md deleted file mode 100644 index c2a30b70..00000000 --- a/fastlane/README.md +++ /dev/null @@ -1,61 +0,0 @@ -fastlane documentation -================ -# Installation - -Make sure you have the latest version of the Xcode command line tools installed: - -``` -xcode-select --install -``` - -## Choose your installation method: - - - - - - - - - - - - - - -
Homebrew -Installer Script -Rubygems -
macOSmacOSmacOS or Linux with Ruby 2.0.0 or above
brew cask install fastlaneDownload the zip file. Then double click on the install script (or run it in a terminal window).sudo gem install fastlane -NV
-# Available Actions -### dependencies -``` -fastlane dependencies -``` - -### tests -``` -fastlane tests -``` - -### carthage_project -``` -fastlane carthage_project -``` - -### travis -``` -fastlane travis -``` - -### push -``` -fastlane push -``` - - ----- - -This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run. -More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). -The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools).