From 2704840beb91ad9b1d7100690446544cebaa8447 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Thu, 22 Sep 2016 14:49:38 -0700 Subject: [PATCH] Updating the API to a Swift3 style API --- Podfile | 4 +- Podfile.lock | 10 +- .../ConsistencyManager.swift | 34 +- .../DataStructures/BatchListener.swift | 14 +- Pods/ConsistencyManager/README.md | 14 + Pods/Manifest.lock | 10 +- Pods/Pods.xcodeproj/project.pbxproj | 402 +++++++++--------- .../ConsistencyManager/Info.plist | 2 +- .../Pods-RocketData-acknowledgements.plist | 2 - .../Pods-RocketData-frameworks.sh | 91 ++++ .../Pods-RocketData.debug.xcconfig | 2 +- .../Pods-RocketData.release.xcconfig | 2 +- ...ods-RocketDataTests-acknowledgements.plist | 2 - .../Pods-RocketDataTests.debug.xcconfig | 1 - .../Pods-RocketDataTests.release.xcconfig | 1 - RocketData.podspec | 2 +- RocketData.xcodeproj/project.pbxproj | 4 +- RocketData/BatchDataProviderListener.swift | 10 +- RocketData/CollectionDataProvider.swift | 34 +- RocketData/DataModelManager.swift | 4 +- RocketData/DataProvider.swift | 14 +- RocketData/Model.swift | 20 +- RocketData/SharedCollectionManager.swift | 8 +- RocketDataTests/BatchListenerTests.swift | 10 +- ...nsistencyCollectionDataProviderTests.swift | 2 +- .../PauseCollectionDataProviderTests.swift | 88 ++-- .../SharedCollectionDataProviderTests.swift | 10 +- .../SharedCollectionTests.swift | 2 +- .../SimpleCollectionDataProviderTests.swift | 16 +- .../ConsistencyDataProviderTests.swift | 2 +- .../PauseDataProviderTests.swift | 10 +- .../SimpleDataProviderTests.swift | 16 +- RocketDataTests/ParsingHelpersTests.swift | 2 +- RocketDataTests/TestModels/ChildModel.swift | 2 +- .../TestModels/FullChildModel.swift | 2 +- RocketDataTests/TestModels/SmallModels.swift | 4 +- SampleApp/Podfile.lock | 12 +- .../ConsistencyManager.swift | 34 +- .../DataStructures/BatchListener.swift | 14 +- SampleApp/Pods/ConsistencyManager/README.md | 14 + .../Local Podspecs/RocketData.podspec.json | 2 +- SampleApp/Pods/Manifest.lock | 12 +- SampleApp/Pods/Pods.xcodeproj/project.pbxproj | 256 +++++------ .../ConsistencyManager/Info.plist | 2 +- .../Pods-SampleApp-acknowledgements.plist | 6 - .../Pods-SampleApp.debug.xcconfig | 1 - .../Pods-SampleApp.release.xcconfig | 1 - SampleApp/SampleApp.xcodeproj/project.pbxproj | 2 +- .../ViewControllers/ChatsViewController.swift | 2 +- .../MessagesViewController.swift | 2 +- 50 files changed, 642 insertions(+), 571 deletions(-) create mode 100755 Pods/Target Support Files/Pods-RocketData/Pods-RocketData-frameworks.sh diff --git a/Podfile b/Podfile index 680a0df..1a6d40e 100644 --- a/Podfile +++ b/Podfile @@ -3,11 +3,11 @@ use_frameworks! target :'RocketData' do - pod 'ConsistencyManager', '~> 3.0.0' + pod 'ConsistencyManager', '~> 4.0.0' end target :'RocketDataTests' do - pod 'ConsistencyManager', '~> 3.0.0' + pod 'ConsistencyManager', '~> 4.0.0' end # This is necessary to convert the target to swift 3.0 diff --git a/Podfile.lock b/Podfile.lock index 2888da4..8afd8bc 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,12 +1,12 @@ PODS: - - ConsistencyManager (3.0.0) + - ConsistencyManager (4.0.0) DEPENDENCIES: - - ConsistencyManager (~> 3.0.0) + - ConsistencyManager (~> 4.0.0) SPEC CHECKSUMS: - ConsistencyManager: 2312b687bbd3875ae5b40a220239e969448d2191 + ConsistencyManager: 323ee466a5c933973529dfa5baa5cbc238633a67 -PODFILE CHECKSUM: 6db966c1e9f949a826512ccb3129eda0b528af50 +PODFILE CHECKSUM: 965fc2d0fcedbb7cfd5acaa4e86a619f1085e99e -COCOAPODS: 1.1.0.rc.2 +COCOAPODS: 1.0.1 diff --git a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift index 6252297..0991ae7 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift @@ -30,17 +30,17 @@ import Foundation The two important APIs that you will mainly use in this class are: - `listenForUpdates(listener: ConsistencyManagerListener)` - `updateWithNewModel(model: ConsistencyManagerModel, context: Any? = nil)` + `addListener(listener: ConsistencyManagerListener)` + `updateModel(model: ConsistencyManagerModel, context: Any? = nil)` These APIs allow you to start listening for updates on a model and register new updates. - Anytime you change a model locally, you should call updateWithNewModel to propegate these changes. + Anytime you change a model locally, you should call updateModel to propegate these changes. Additionally you have the following APIs to use if you choose to have your listener temporarily pause (and later resume) listening to updates: - `pauseListeningForUpdates(listener: ConsistencyManagerListener)` - `resumeListeningForUpdates(listener: ConsistencyManagerListener)` + `pauseListener(listener: ConsistencyManagerListener)` + `resumeListener(listener: ConsistencyManagerListener)` #### Removing Listeners @@ -140,23 +140,23 @@ open class ConsistencyManager { Note that calling this method on a paused listener will not unpause it. - parameter listener: The consistency manager listener that is listening to a model */ - open func listenForUpdates(_ listener: ConsistencyManagerListener) { + open func addListener(_ listener: ConsistencyManagerListener) { let model = listener.currentModel() if let model = model { - listenForUpdates(listener, onModel: model) + addListener(listener, to: model) } // Else they are listening to nothing. Let's not remove them though, since we are on a different thread, so timing issues could cause bugs. } /** - Call this method if you want to listen to a specific model. Usually, this is unnecssary and you should just use listenForUpdates(listener). + Call this method if you want to listen to a specific model. Usually, this is unnecssary and you should just use `addListener(listener)`. This is necessary if you manually update a model and change only part of it. Note that calling this method on a paused listener will not unpause it. For a performance optimization, you may only want to add yourself as a listener for this new change (and not the whole model again). - parameter listener: the consistency manager - - parameter onModel: the model you want to listen to with this listener + - parameter model: the model you want to listen to with this listener */ - open func listenForUpdates(_ listener: ConsistencyManagerListener, onModel model: ConsistencyManagerModel) { + open func addListener(_ listener: ConsistencyManagerListener, to model: ConsistencyManagerModel) { dispatchTask { _ in self.addListener(listener, recursivelyToChildModels: model) } @@ -198,7 +198,7 @@ open class ConsistencyManager { // MARK: Pausing and Resuming Listening to Updates /** - Temporarily ignore any updates on the current model. Use removeListener(listener: ConsistencyManagerListener) instead if you + Temporarily ignore any updates on the current model. Use `removeListener(listener: ConsistencyManagerListener)` instead if you know that you will not ever need to resume listening to updates. Once you start listening again, you will get all the changes that you missed via the modelUpdated delegate method with the most updated model at that point, and you will get the most recent context (only) as well. @@ -211,8 +211,8 @@ open class ConsistencyManager { This should only be called on the main thread. - parameter listener: The consistency manager listener that is currently listening to a model */ - open func pauseListeningForUpdates(_ listener: ConsistencyManagerListener) { - if !isPaused(listener) { + open func pauseListener(_ listener: ConsistencyManagerListener) { + if !isListenerPaused(listener) { let pausedListener = PausedListener(listener: listener, updatedModel: listener.currentModel(), mostRecentContext: nil, modelUpdates: ModelUpdates(changedModelIds: [], deletedModelIds: [])) pausedListeners.append(pausedListener) } @@ -226,9 +226,9 @@ open class ConsistencyManager { This should only be called on the main thread. - parameter listener: The consistency manager listener that is currently not listening - (i.e. has most recently called the pauseListeningForUpdates method) to a model + (i.e. has most recently called the pauseListener method) to a model */ - open func resumeListeningForUpdates(_ listener: ConsistencyManagerListener) { + open func resumeListener(_ listener: ConsistencyManagerListener) { guard let index = pausedListeners.index(where: { listener === $0.listener }) else { return } @@ -295,7 +295,7 @@ open class ConsistencyManager { - parameter listener: The listener to query the paused state of. */ - open func isPaused(_ listener: ConsistencyManagerListener) -> Bool { + open func isListenerPaused(_ listener: ConsistencyManagerListener) -> Bool { return pausedListeners.contains { listener === $0.listener } } @@ -308,7 +308,7 @@ open class ConsistencyManager { - parameter model: the model with which you want to update the consistency manager - parameter context: any context parameter, to be passed on to each listener in the delegate method */ - open func updateWithNewModel(_ model: ConsistencyManagerModel, context: Any? = nil) { + open func updateModel(_ model: ConsistencyManagerModel, context: Any? = nil) { dispatchTask { cancelled in let tuple = self.childrenAndListenersForModel(model) let optionalModelUpdates = CollectionHelpers.optionalValueDictionaryFromDictionary(tuple.modelUpdates) diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift index c042848..2bacf3a 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift @@ -21,7 +21,7 @@ import Foundation ### SETUP - You should NOT call listenForUpdates on any of the listeners that you pass into this class. Instead, you should call it directly on the instance of this class. + You should NOT call addListener on any of the listeners that you pass into this class. Instead, you should call it directly on the instance of this class. This causes the instance of this class to listen to each of the models of the listeners. Any time you manually change a model on one of the listeners, you need to call listenerHasUpdatedModel. */ @@ -35,15 +35,15 @@ open class BatchListener: ConsistencyManagerListener { /// Listening to all models occurs immediately upon initialization of the BatchListener object public init(listeners: [ConsistencyManagerListener], consistencyManager: ConsistencyManager) { self.listeners = listeners - listenForUpdates(consistencyManager) + addListener(consistencyManager) } /** - Instead of calling listenForUpdates on each of the child listeners, you should call this method. + Instead of calling addListener on each of the child listeners, you should call this method. You should also call it whenever you manually change any of the sublisteners. */ - open func listenForUpdates(_ consistencyManager: ConsistencyManager) { - consistencyManager.listenForUpdates(self) + open func addListener(_ consistencyManager: ConsistencyManager) { + consistencyManager.addListener(self) } /** @@ -51,7 +51,7 @@ open class BatchListener: ConsistencyManagerListener { */ open func listenerHasUpdatedModel(_ listener: ConsistencyManagerListener, consistencyManager: ConsistencyManager) { if let model = listener.currentModel() { - consistencyManager.listenForUpdates(self, onModel: model) + consistencyManager.addListener(self, to: model) } // else the model nil, so we don't have to listen to anything new. } @@ -63,7 +63,7 @@ open class BatchListener: ConsistencyManagerListener { - parameter consistencyManager: The consistency manager you are using to listen to these changes. */ open func listenerHasUpdatedModel(_ model: ConsistencyManagerModel, consistencyManager: ConsistencyManager) { - consistencyManager.listenForUpdates(self, onModel: model) + consistencyManager.addListener(self, to: model) } // MARK: Consistency Manager Implementation diff --git a/Pods/ConsistencyManager/README.md b/Pods/ConsistencyManager/README.md index 2025cd0..67264ac 100644 --- a/Pods/ConsistencyManager/README.md +++ b/Pods/ConsistencyManager/README.md @@ -59,3 +59,17 @@ To get started, you should take a look at the docs: https://linkedin.github.io/ConsistencyManager-iOS +## Swift Version + +We are currently not maintaining separate branches for different Swift versions. You can use an older and stable version of the Consistency Manager for older versions of Swift though. HEAD currently supports Swift 3. + +| Swift Version | Consistency Manager Version | +|---------------|------------------------------| +| 1 | Not supported | +| 2.0 - 2.1 | 2.x.x (untested) | +| 2.2 - 2.3 | 2.x.x | +| 3 (Easy migration API) | 3.x.x | +| 3 (Better API) | 4.x.x | + +NOTE: If you are migrating to Swift 3, consider using version 3.0.0 first, then migrating to 4.x.x. 3.0.0 migrates the code to the new syntax without making any API changes. 4.x.x introduces a better API which is more consistent with the new Swift 3 API guidelines. + diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 2888da4..8afd8bc 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,12 +1,12 @@ PODS: - - ConsistencyManager (3.0.0) + - ConsistencyManager (4.0.0) DEPENDENCIES: - - ConsistencyManager (~> 3.0.0) + - ConsistencyManager (~> 4.0.0) SPEC CHECKSUMS: - ConsistencyManager: 2312b687bbd3875ae5b40a220239e969448d2191 + ConsistencyManager: 323ee466a5c933973529dfa5baa5cbc238633a67 -PODFILE CHECKSUM: 6db966c1e9f949a826512ccb3129eda0b528af50 +PODFILE CHECKSUM: 965fc2d0fcedbb7cfd5acaa4e86a619f1085e99e -COCOAPODS: 1.1.0.rc.2 +COCOAPODS: 1.0.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index ef5a766..c6d715a 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -17,15 +17,15 @@ 49B743734DBB42D13DE2E4C95D728258 /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E97041D46547400C67C2349A305FFA8C /* ConsistencyManagerModel.swift */; }; 4B2BE5EF5BCC75C085AF6FB3DFB73BF7 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 61D3DF36C8486F6664885AE7C411C92D /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6A52EA1AB9E49BAF9D979C953CBA94C5 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59F67CC8F3BE06376FFAC7EA1A13CD9 /* ErrorManager.swift */; }; - 70768EA6EB9755E84BB7EC780F03F581 /* Pods-RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 271164874EA521DBF3A5E42882CA5E8C /* Pods-RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 70768EA6EB9755E84BB7EC780F03F581 /* Pods-RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B33AAE8E3297C60B5C529640186B8192 /* Pods-RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 79F0359EDE2A2DE6C858B37522B08417 /* WeakListenerArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEF5998704E241AD2FA83EACC216970C /* WeakListenerArray.swift */; }; 8265AE9D9D400DF1E9B06A3955F85942 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E86668F20F252C440D1015B816BE59C5 /* UIKit.framework */; }; 92E4CF92DEF26530B4633401C42CE37D /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AF6B0768E38C7114157A02217B66C9A2 /* ConsistencyManager-dummy.m */; }; 9E7CDDB3DBC6BD36B268726BD3C96ECF /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC81E5E6745EF8D6F4DDEC7F19D26164 /* ConsistencyManagerDelegate.swift */; }; - B2303CDA51DB0832BAB1788C6E7984EA /* Pods-RocketDataTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7735ED8DE53508944981B891E90C0EFE /* Pods-RocketDataTests-dummy.m */; }; + B2303CDA51DB0832BAB1788C6E7984EA /* Pods-RocketDataTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A698A45FD24BEAB6FC199968A66DCC81 /* Pods-RocketDataTests-dummy.m */; }; BD436656590B87187BA25C062EFA52EC /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C1E5D20AEA5F198AF025261DD2A188B /* ConsistencyManagerListener.swift */; }; - C8B2B67B37B8D53B63DF15B836D6A833 /* Pods-RocketDataTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F57EB9142715F7D70F6B909F8A1CC5 /* Pods-RocketDataTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D2BBBAD54A227C2138467762482F1801 /* Pods-RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 089BD4D8DE576134661A5BBA93EC9964 /* Pods-RocketData-dummy.m */; }; + C8B2B67B37B8D53B63DF15B836D6A833 /* Pods-RocketDataTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B0E2BA164619EBA0D1BC0245A0394E5D /* Pods-RocketDataTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D2BBBAD54A227C2138467762482F1801 /* Pods-RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CE1A6554C91646ECDB57AEE95C2753C /* Pods-RocketData-dummy.m */; }; E6E7ED38E1CDCE71C37187A17927D8D2 /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F8804F9D000318116CBFDE7B2BBB928 /* ConsistencyManager.swift */; }; F35A08C9B892520D731F0ADFCD665ECA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A2A6FF208CEC4C2861F1E9D42D651453 /* Foundation.framework */; }; /* End PBXBuildFile section */ @@ -48,48 +48,49 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 07A5BE63B6D649CB5208AD66140448B7 /* Pods-RocketDataTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-resources.sh"; sourceTree = ""; }; - 089BD4D8DE576134661A5BBA93EC9964 /* Pods-RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketData-dummy.m"; sourceTree = ""; }; + 04F9BDFD6297BF18B9EB79FA44B20EC4 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 10B991FFE0387E6039C11A061BA028BD /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; - 1306A5E433D9AAC7FFC59697BD9C9DB4 /* Pods-RocketDataTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-acknowledgements.plist"; sourceTree = ""; }; - 1DBC372F8061C320E3EC8760BDA49095 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 271164874EA521DBF3A5E42882CA5E8C /* Pods-RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketData-umbrella.h"; sourceTree = ""; }; 304980AC492579B69D4827369DCA19F3 /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; sourceTree = ""; }; - 34BC35DF87360F2E7CB7A5FF8B70C85D /* Pods-RocketDataTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.debug.xcconfig"; sourceTree = ""; }; - 3DEFF9A7C7AEE462D1ECECF5565903F6 /* Pods-RocketData-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketData-acknowledgements.markdown"; sourceTree = ""; }; 3F8804F9D000318116CBFDE7B2BBB928 /* ConsistencyManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManager.swift; path = ConsistencyManager/ConsistencyManager.swift; sourceTree = ""; }; 437143A8805F028E09A65AB320902072 /* ModelUpdates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelUpdates.swift; path = ConsistencyManager/DataStructures/ModelUpdates.swift; sourceTree = ""; }; 46A35328EBD6BC6926B514A28EE41C76 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 5063F94E4E75CFA2BAE770E1AA393FBE /* Pods-RocketData.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.release.xcconfig"; sourceTree = ""; }; + 5DDF3AF4A9F5500DFFD4A9165380EDB1 /* Pods-RocketData-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketData-resources.sh"; sourceTree = ""; }; 61D3DF36C8486F6664885AE7C411C92D /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; - 66C2744F8A608DA03871DB23D72F53EB /* Pods-RocketDataTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-RocketDataTests.modulemap"; sourceTree = ""; }; - 6C7CAE382E5C46A01A4E6988A98B7E20 /* Pods-RocketDataTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-frameworks.sh"; sourceTree = ""; }; - 7595FF013E359097D30B69D1C11AF69A /* Pods-RocketData-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketData-acknowledgements.plist"; sourceTree = ""; }; - 7735ED8DE53508944981B891E90C0EFE /* Pods-RocketDataTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketDataTests-dummy.m"; sourceTree = ""; }; - 7EB4155B344A2C034F85FF0DEF919271 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 82F57EB9142715F7D70F6B909F8A1CC5 /* Pods-RocketDataTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketDataTests-umbrella.h"; sourceTree = ""; }; + 7475064505FFDEFD27A0934A9DB24C97 /* Pods-RocketDataTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-resources.sh"; sourceTree = ""; }; 85F646650D2CB8D60E0A9B610A5C3CDB /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8E29FD3DF78E68BBFB2005797218704E /* Pods-RocketDataTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-RocketDataTests.modulemap"; sourceTree = ""; }; + 8FA6F9E14CC2C3C25FA29B1113E5C7A1 /* Pods-RocketDataTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.debug.xcconfig"; sourceTree = ""; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9C1E5D20AEA5F198AF025261DD2A188B /* ConsistencyManagerListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerListener.swift; sourceTree = ""; }; + 9CE1A6554C91646ECDB57AEE95C2753C /* Pods-RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketData-dummy.m"; sourceTree = ""; }; + 9DB69459C11F34D980C2A38DFBD144F5 /* Pods-RocketDataTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketDataTests-acknowledgements.markdown"; sourceTree = ""; }; 9ED23AF9DC693ED95F963C33D83DF07D /* Pods_RocketDataTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RocketDataTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A1ECCA60503B8A52C66D1701A61563B5 /* Pods-RocketData.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.debug.xcconfig"; sourceTree = ""; }; A2A6FF208CEC4C2861F1E9D42D651453 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - A304558520339D84989A221FB4C054E0 /* Pods-RocketDataTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketDataTests-acknowledgements.markdown"; sourceTree = ""; }; A3E6B9393562E012FF3536A02C577E19 /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; + A5C22668428D77CADDE216C6F7094A87 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A698A45FD24BEAB6FC199968A66DCC81 /* Pods-RocketDataTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketDataTests-dummy.m"; sourceTree = ""; }; + A73A7A2F2E3A4601A8B14BDE6ACF43FB /* Pods-RocketDataTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-frameworks.sh"; sourceTree = ""; }; AEF5998704E241AD2FA83EACC216970C /* WeakListenerArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakListenerArray.swift; path = ConsistencyManager/DataStructures/WeakListenerArray.swift; sourceTree = ""; }; AF6B0768E38C7114157A02217B66C9A2 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; + B0E2BA164619EBA0D1BC0245A0394E5D /* Pods-RocketDataTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketDataTests-umbrella.h"; sourceTree = ""; }; + B33AAE8E3297C60B5C529640186B8192 /* Pods-RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketData-umbrella.h"; sourceTree = ""; }; B4486E390C3341A54D024676ADB7D077 /* Pods_RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RocketData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B59F67CC8F3BE06376FFAC7EA1A13CD9 /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; + BE183B4C91777AA54A6FE81047AC6504 /* Pods-RocketDataTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-acknowledgements.plist"; sourceTree = ""; }; C3B52A8ED6AD153CCDA1E4BB3122D69D /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = ConsistencyManager.modulemap; sourceTree = ""; }; - C9FEDD3F8F7CA24AAC8E600FCB9CAD7F /* Pods-RocketDataTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.release.xcconfig"; sourceTree = ""; }; + C9B2561468622CC735F9130D2CEDE471 /* Pods-RocketData-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketData-acknowledgements.plist"; sourceTree = ""; }; + CD8DFC56C5118E6852FBF97C953070BF /* Pods-RocketData-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketData-frameworks.sh"; sourceTree = ""; }; CFAF7A3F70884178FAD542B42E9C7374 /* WeakArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakArray.swift; path = ConsistencyManager/DataStructures/WeakArray.swift; sourceTree = ""; }; + D2A28350FC686865DE4989C2C08BF94B /* Pods-RocketData.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.release.xcconfig"; sourceTree = ""; }; DBF2897E86ACFC66B482A811F822B961 /* BatchListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchListener.swift; path = ConsistencyManager/DataStructures/BatchListener.swift; sourceTree = ""; }; DC81E5E6745EF8D6F4DDEC7F19D26164 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; + E74FABC81220E780E10AFFA16B46B761 /* Pods-RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-RocketData.modulemap"; sourceTree = ""; }; E86668F20F252C440D1015B816BE59C5 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + E946FB05353C144B1DD40F49317AD7CB /* Pods-RocketData-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketData-acknowledgements.markdown"; sourceTree = ""; }; E97041D46547400C67C2349A305FFA8C /* ConsistencyManagerModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerModel.swift; path = ConsistencyManager/Protocols/ConsistencyManagerModel.swift; sourceTree = ""; }; + EBB8D891F6044B06170C4C327B4D64DD /* Pods-RocketData.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.debug.xcconfig"; sourceTree = ""; }; + EFA112F5EE6AC2CF8DBF6AA8A8064B89 /* Pods-RocketDataTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.release.xcconfig"; sourceTree = ""; }; F1F4E101C4FF06BAE52D4EB7710E9CB0 /* CollectionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionHelpers.swift; path = ConsistencyManager/Helpers/CollectionHelpers.swift; sourceTree = ""; }; - F614F9737D9CB81A40DC9CC666DD13FA /* Pods-RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-RocketData.modulemap"; sourceTree = ""; }; - FB0413A3831A098D5DC5A692B8557436 /* Pods-RocketData-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketData-resources.sh"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -121,21 +122,31 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 232BAA320B9B0D379D3851CE103EEC4C /* Pods-RocketData */ = { + 2B2388E493598820B8A0410D0D9BC66F /* Targets Support Files */ = { isa = PBXGroup; children = ( - 1DBC372F8061C320E3EC8760BDA49095 /* Info.plist */, - F614F9737D9CB81A40DC9CC666DD13FA /* Pods-RocketData.modulemap */, - 3DEFF9A7C7AEE462D1ECECF5565903F6 /* Pods-RocketData-acknowledgements.markdown */, - 7595FF013E359097D30B69D1C11AF69A /* Pods-RocketData-acknowledgements.plist */, - 089BD4D8DE576134661A5BBA93EC9964 /* Pods-RocketData-dummy.m */, - FB0413A3831A098D5DC5A692B8557436 /* Pods-RocketData-resources.sh */, - 271164874EA521DBF3A5E42882CA5E8C /* Pods-RocketData-umbrella.h */, - A1ECCA60503B8A52C66D1701A61563B5 /* Pods-RocketData.debug.xcconfig */, - 5063F94E4E75CFA2BAE770E1AA393FBE /* Pods-RocketData.release.xcconfig */, + AF83646799A11C0E65DB5B4E582A7685 /* Pods-RocketData */, + 2F36A7CBFBA36410A599A654AA491015 /* Pods-RocketDataTests */, ); - name = "Pods-RocketData"; - path = "Target Support Files/Pods-RocketData"; + name = "Targets Support Files"; + sourceTree = ""; + }; + 2F36A7CBFBA36410A599A654AA491015 /* Pods-RocketDataTests */ = { + isa = PBXGroup; + children = ( + A5C22668428D77CADDE216C6F7094A87 /* Info.plist */, + 8E29FD3DF78E68BBFB2005797218704E /* Pods-RocketDataTests.modulemap */, + 9DB69459C11F34D980C2A38DFBD144F5 /* Pods-RocketDataTests-acknowledgements.markdown */, + BE183B4C91777AA54A6FE81047AC6504 /* Pods-RocketDataTests-acknowledgements.plist */, + A698A45FD24BEAB6FC199968A66DCC81 /* Pods-RocketDataTests-dummy.m */, + A73A7A2F2E3A4601A8B14BDE6ACF43FB /* Pods-RocketDataTests-frameworks.sh */, + 7475064505FFDEFD27A0934A9DB24C97 /* Pods-RocketDataTests-resources.sh */, + B0E2BA164619EBA0D1BC0245A0394E5D /* Pods-RocketDataTests-umbrella.h */, + 8FA6F9E14CC2C3C25FA29B1113E5C7A1 /* Pods-RocketDataTests.debug.xcconfig */, + EFA112F5EE6AC2CF8DBF6AA8A8064B89 /* Pods-RocketDataTests.release.xcconfig */, + ); + name = "Pods-RocketDataTests"; + path = "Target Support Files/Pods-RocketDataTests"; sourceTree = ""; }; 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { @@ -165,33 +176,6 @@ path = ConsistencyManager; sourceTree = ""; }; - 4C755ACC96D46765BA54509600A21819 /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - 232BAA320B9B0D379D3851CE103EEC4C /* Pods-RocketData */, - 4E7E7762A195520FF247CE548D21DC69 /* Pods-RocketDataTests */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; - 4E7E7762A195520FF247CE548D21DC69 /* Pods-RocketDataTests */ = { - isa = PBXGroup; - children = ( - 7EB4155B344A2C034F85FF0DEF919271 /* Info.plist */, - 66C2744F8A608DA03871DB23D72F53EB /* Pods-RocketDataTests.modulemap */, - A304558520339D84989A221FB4C054E0 /* Pods-RocketDataTests-acknowledgements.markdown */, - 1306A5E433D9AAC7FFC59697BD9C9DB4 /* Pods-RocketDataTests-acknowledgements.plist */, - 7735ED8DE53508944981B891E90C0EFE /* Pods-RocketDataTests-dummy.m */, - 6C7CAE382E5C46A01A4E6988A98B7E20 /* Pods-RocketDataTests-frameworks.sh */, - 07A5BE63B6D649CB5208AD66140448B7 /* Pods-RocketDataTests-resources.sh */, - 82F57EB9142715F7D70F6B909F8A1CC5 /* Pods-RocketDataTests-umbrella.h */, - 34BC35DF87360F2E7CB7A5FF8B70C85D /* Pods-RocketDataTests.debug.xcconfig */, - C9FEDD3F8F7CA24AAC8E600FCB9CAD7F /* Pods-RocketDataTests.release.xcconfig */, - ); - name = "Pods-RocketDataTests"; - path = "Target Support Files/Pods-RocketDataTests"; - sourceTree = ""; - }; 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( @@ -199,7 +183,7 @@ 433CD3331B6C3787F473C941B61FC68F /* Frameworks */, CCE19C80C9B0F62EC444E2EEAC256C2F /* Pods */, A7FBE01DFB35645CFAE846405EBBF44C /* Products */, - 4C755ACC96D46765BA54509600A21819 /* Targets Support Files */, + 2B2388E493598820B8A0410D0D9BC66F /* Targets Support Files */, ); sourceTree = ""; }; @@ -227,6 +211,24 @@ name = Products; sourceTree = ""; }; + AF83646799A11C0E65DB5B4E582A7685 /* Pods-RocketData */ = { + isa = PBXGroup; + children = ( + 04F9BDFD6297BF18B9EB79FA44B20EC4 /* Info.plist */, + E74FABC81220E780E10AFFA16B46B761 /* Pods-RocketData.modulemap */, + E946FB05353C144B1DD40F49317AD7CB /* Pods-RocketData-acknowledgements.markdown */, + C9B2561468622CC735F9130D2CEDE471 /* Pods-RocketData-acknowledgements.plist */, + 9CE1A6554C91646ECDB57AEE95C2753C /* Pods-RocketData-dummy.m */, + CD8DFC56C5118E6852FBF97C953070BF /* Pods-RocketData-frameworks.sh */, + 5DDF3AF4A9F5500DFFD4A9165380EDB1 /* Pods-RocketData-resources.sh */, + B33AAE8E3297C60B5C529640186B8192 /* Pods-RocketData-umbrella.h */, + EBB8D891F6044B06170C4C327B4D64DD /* Pods-RocketData.debug.xcconfig */, + D2A28350FC686865DE4989C2C08BF94B /* Pods-RocketData.release.xcconfig */, + ); + name = "Pods-RocketData"; + path = "Target Support Files/Pods-RocketData"; + sourceTree = ""; + }; CCE19C80C9B0F62EC444E2EEAC256C2F /* Pods */ = { isa = PBXGroup; children = ( @@ -409,57 +411,77 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 015A368F878AC3E2CEAE21DDE8026304 /* Debug */ = { + 087C0E07E694E836BA805FE795DB2A3E /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = A3E6B9393562E012FF3536A02C577E19 /* ConsistencyManager.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; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ConsistencyManager/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - ONLY_ACTIVE_ARCH = YES; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = ConsistencyManager; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 35051ADC04A8E3671155E53E25D158F4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EBB8D891F6044B06170C4C327B4D64DD /* Pods-RocketData.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "Target Support Files/Pods-RocketData/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-RocketData/Pods-RocketData.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_RocketData; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 1F8553D73FA4ABF6F515ED3CD4D11721 /* Release */ = { + 3D2FC594F2B2BD161F45F7FC5726C815 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5063F94E4E75CFA2BAE770E1AA393FBE /* Pods-RocketData.release.xcconfig */; + baseConfigurationReference = D2A28350FC686865DE4989C2C08BF94B /* Pods-RocketData.release.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; @@ -489,7 +511,7 @@ }; name = Release; }; - 44CDBB6D11DE06DB64D6268622BDC47E /* Release */ = { + 47BEF9D903506B003EA5C2B249729489 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -507,14 +529,17 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; + COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", "$(inherited)", ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -522,22 +547,19 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + ONLY_ACTIVE_ARCH = YES; STRIP_INSTALLED_PRODUCT = NO; SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 7492D528FEDCA4E49E96A7723C51F482 /* Debug */ = { + 545D8A2EE88FE5B282E244BA127039A1 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = A3E6B9393562E012FF3536A02C577E19 /* ConsistencyManager.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -550,25 +572,22 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_NAME = ConsistencyManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - BEF444A127220CE5BC5385E36E98C687 /* Debug */ = { + 64135FF89D11D45C046F33E265CF084A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A1ECCA60503B8A52C66D1701A61563B5 /* Pods-RocketData.debug.xcconfig */; + baseConfigurationReference = 8FA6F9E14CC2C3C25FA29B1113E5C7A1 /* Pods-RocketDataTests.debug.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; @@ -577,18 +596,18 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-RocketData/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-RocketDataTests/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-RocketData/Pods-RocketData.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_RocketData; + PRODUCT_NAME = Pods_RocketDataTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -599,15 +618,13 @@ }; name = Debug; }; - D1FCAE66C55847E7E09DA4F3FDFF6FA7 /* Debug */ = { + 6CE333249CF0131362A7666AEFB6C420 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 34BC35DF87360F2E7CB7A5FF8B70C85D /* Pods-RocketDataTests.debug.xcconfig */; + baseConfigurationReference = EFA112F5EE6AC2CF8DBF6AA8A8064B89 /* Pods-RocketDataTests.release.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -620,7 +637,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MODULEMAP_FILE = "Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -628,39 +645,6 @@ PRODUCT_NAME = Pods_RocketDataTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - DADE78EE9F187306B1A7CFD1189BC2B8 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A3E6B9393562E012FF3536A02C577E19 /* ConsistencyManager.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ConsistencyManager/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = ConsistencyManager; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; @@ -668,39 +652,41 @@ }; name = Release; }; - FB8A5E574CE02E5FD49307E1442DCFD2 /* Release */ = { + AAF678CED40D3499169D10F63CA0719E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C9FEDD3F8F7CA24AAC8E600FCB9CAD7F /* Pods-RocketDataTests.release.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-RocketDataTests/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + 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; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_RocketDataTests; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + VALIDATE_PRODUCT = YES; }; name = Release; }; @@ -710,8 +696,8 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 015A368F878AC3E2CEAE21DDE8026304 /* Debug */, - 44CDBB6D11DE06DB64D6268622BDC47E /* Release */, + 47BEF9D903506B003EA5C2B249729489 /* Debug */, + AAF678CED40D3499169D10F63CA0719E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -719,8 +705,8 @@ A43C1FA3E003048B8DAE89D3918C3F25 /* Build configuration list for PBXNativeTarget "Pods-RocketData" */ = { isa = XCConfigurationList; buildConfigurations = ( - BEF444A127220CE5BC5385E36E98C687 /* Debug */, - 1F8553D73FA4ABF6F515ED3CD4D11721 /* Release */, + 35051ADC04A8E3671155E53E25D158F4 /* Debug */, + 3D2FC594F2B2BD161F45F7FC5726C815 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -728,8 +714,8 @@ A49A88E0757A7066CD2FE763AF4EA0F5 /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - D1FCAE66C55847E7E09DA4F3FDFF6FA7 /* Debug */, - FB8A5E574CE02E5FD49307E1442DCFD2 /* Release */, + 64135FF89D11D45C046F33E265CF084A /* Debug */, + 6CE333249CF0131362A7666AEFB6C420 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -737,8 +723,8 @@ D4860273489427FA3BC8FD45AEB05BD3 /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7492D528FEDCA4E49E96A7723C51F482 /* Debug */, - DADE78EE9F187306B1A7CFD1189BC2B8 /* Release */, + 087C0E07E694E836BA805FE795DB2A3E /* Debug */, + 545D8A2EE88FE5B282E244BA127039A1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Target Support Files/ConsistencyManager/Info.plist b/Pods/Target Support Files/ConsistencyManager/Info.plist index 4522675..3424ca6 100644 --- a/Pods/Target Support Files/ConsistencyManager/Info.plist +++ b/Pods/Target Support Files/ConsistencyManager/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 3.0.0 + 4.0.0 CFBundleSignature ???? CFBundleVersion diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist index adbf402..9fa7002 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist @@ -218,8 +218,6 @@ limitations under the License. - License - Apache License, Version 2.0 Title ConsistencyManager Type diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-frameworks.sh b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-frameworks.sh new file mode 100755 index 0000000..4a523ee --- /dev/null +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-frameworks.sh @@ -0,0 +1,91 @@ +#!/bin/sh +set -e + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # use filter instead of exclude so missing patterns dont' throw errors + echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements \"$1\"" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements "$1" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current file + archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + stripped="" + for arch in $archs; do + if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "$BUILT_PRODUCTS_DIR/ConsistencyManager/ConsistencyManager.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "$BUILT_PRODUCTS_DIR/ConsistencyManager/ConsistencyManager.framework" +fi diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig index 425d85a..2733fc7 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig @@ -1,4 +1,4 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig index 425d85a..2733fc7 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig @@ -1,4 +1,4 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO +EMBEDDED_CONTENT_CONTAINS_SWIFT = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist index adbf402..9fa7002 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist @@ -218,8 +218,6 @@ limitations under the License. - License - Apache License, Version 2.0 Title ConsistencyManager Type diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig index 89417bb..2733fc7 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig @@ -1,4 +1,3 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES EMBEDDED_CONTENT_CONTAINS_SWIFT = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig index 89417bb..2733fc7 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig @@ -1,4 +1,3 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES EMBEDDED_CONTENT_CONTAINS_SWIFT = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 diff --git a/RocketData.podspec b/RocketData.podspec index 7bcd7ae..383275a 100644 --- a/RocketData.podspec +++ b/RocketData.podspec @@ -9,6 +9,6 @@ Pod::Spec.new do |spec| spec.source_files = 'RocketData/**/*.swift' spec.platform = :ios, '8.0' spec.frameworks = 'Foundation' - spec.dependency 'ConsistencyManager', '~> 3.0.0' + spec.dependency 'ConsistencyManager', '~> 4.0.0' end diff --git a/RocketData.xcodeproj/project.pbxproj b/RocketData.xcodeproj/project.pbxproj index a6d6d26..13d5338 100644 --- a/RocketData.xcodeproj/project.pbxproj +++ b/RocketData.xcodeproj/project.pbxproj @@ -410,7 +410,7 @@ ); 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"; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; CC432D6C732060E3D11BA838 /* [CP] Check Pods Manifest.lock */ = { @@ -425,7 +425,7 @@ ); 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"; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; F23AEA2B7986D85FBAEE25DF /* [CP] Embed Pods Frameworks */ = { diff --git a/RocketData/BatchDataProviderListener.swift b/RocketData/BatchDataProviderListener.swift index e9b3f4a..0848d3d 100644 --- a/RocketData/BatchDataProviderListener.swift +++ b/RocketData/BatchDataProviderListener.swift @@ -40,19 +40,19 @@ open class BatchDataProviderListener: BatchListenerDelegate { When the the listener is paused, the data providers' data will not change unless setData is called on them directly. Changes that happen while the batch listener is paused will be queued and applied when the batch listener is unpaused. */ - open var paused: Bool { + open var isPaused: Bool { get { - return consistencyManager.isPaused(batchListener) + return consistencyManager.isListenerPaused(batchListener) } set { if newValue { - consistencyManager.pauseListeningForUpdates(batchListener) + consistencyManager.pauseListener(batchListener) } else { // Do this before resuming with the consistency manager to give data providers a chance to update their models before we call currentModel batchListener.listeners.forEach { listener in (listener as? BatchListenable)?.batchDataProviderUnpausedDataProvider() } - consistencyManager.resumeListeningForUpdates(batchListener) + consistencyManager.resumeListener(batchListener) } } } @@ -68,7 +68,7 @@ open class BatchDataProviderListener: BatchListenerDelegate { batchListener = BatchListener(listeners: listeners, consistencyManager: dataModelManager.consistencyManager) consistencyManager = dataModelManager.consistencyManager batchListener.delegate = self - batchListener.listenForUpdates(consistencyManager) + batchListener.addListener(consistencyManager) for dataProvider in dataProviders { Log.sharedInstance.assert(dataProvider.batchListener == nil, "Data providers can only be assigned one batch listener. You cannot add the same data provider to two batch listeners.") diff --git a/RocketData/CollectionDataProvider.swift b/RocketData/CollectionDataProvider.swift index 77bca56..d4b7887 100644 --- a/RocketData/CollectionDataProvider.swift +++ b/RocketData/CollectionDataProvider.swift @@ -61,20 +61,20 @@ open class CollectionDataProvider: ConsistencyManagerListener, B Since changes can come from multiple places in different orders, it's very difficult to guarantee these will be in the correct order. So, for unpausing, if we do not know what to use, we will simply use `.reset`. */ - open var paused: Bool { + open var isPaused: Bool { get { if let batchListener = batchListener { - return batchListener.paused + return batchListener.isPaused } else { - return dataModelManager.consistencyManager.isPaused(self) + return dataModelManager.consistencyManager.isListenerPaused(self) } } set { Log.sharedInstance.assert(batchListener == nil, "You should not manually set paused on the collection data provider if you are using a batch listener. Instead, you should use the paused variable on batch listener.") if newValue { - dataModelManager.consistencyManager.pauseListeningForUpdates(self) + dataModelManager.consistencyManager.pauseListener(self) } else { - dataModelManager.consistencyManager.resumeListeningForUpdates(self) + dataModelManager.consistencyManager.resumeListener(self) syncWithSiblingDataProviders() } } @@ -156,7 +156,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B - parameter completion: Called on the main thread. This is called with the result from the cache. At this point, the data provider will already have new data, so there's no need to call setData. */ - open func fetchDataFromCache(cacheKey: String?, context: Any? = nil, completion: @escaping ([T]?, NSError?)->()) { + open func fetchDataFromCache(withCacheKey cacheKey: String?, context: Any? = nil, completion: @escaping ([T]?, NSError?)->()) { guard cacheKey != self.cacheKey else { // If the cacheKey is the same as what we currently have, there's no point in fetching again from the cache @@ -241,7 +241,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B updateAndListenToNewModelsInConsistencyManager(context: context) // NOTE: No cache key here, because this is just updating all the new models let newModelsBatchModel = batchModelFromModels(newData, cacheKey: nil) - dataModelManager.consistencyManager.updateWithNewModel(newModelsBatchModel, context: ConsistencyContextWrapper(context: context)) + dataModelManager.consistencyManager.updateModel(newModelsBatchModel, context: ConsistencyContextWrapper(context: context)) } } @@ -285,7 +285,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B // - Update the whole collection. This will actually only affect paused collections because all the other collections were updated above. // - Update the new model. This will possibly cause other rows in the current collection to update. updateAndListenToNewModelsInConsistencyManager(context: context) - dataModelManager.consistencyManager.updateWithNewModel(element, context: ConsistencyContextWrapper(context: context)) + dataModelManager.consistencyManager.updateModel(element, context: ConsistencyContextWrapper(context: context)) } /** @@ -295,7 +295,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B - parameter shouldCache: If false, we will not persist this to the cache. - parameter context: This context will be passed onto the cache delegate. Default nil. */ - open func removeAtIndex(_ index: Int, shouldCache: Bool = true, context: Any? = nil) { + open func remove(at index: Int, shouldCache: Bool = true, context: Any? = nil) { var updatedData = data updatedData.remove(at: index) dataHolder.setData(updatedData, changeTime: ChangeTime()) @@ -349,7 +349,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B */ open static func insert(_ newData: [T], at index: @escaping (([T])->Int), cacheKey: String, dataModelManager: DataModelManager, context: Any? = nil, completion: ((NSError?)->())? = nil) { let collectionDataProvider = CollectionDataProvider(dataModelManager: dataModelManager) - collectionDataProvider.fetchDataFromCache(cacheKey: cacheKey) { cachedData, error in + collectionDataProvider.fetchDataFromCache(withCacheKey: cacheKey) { cachedData, error in if let cachedData = cachedData { collectionDataProvider.insert(newData, at: index(cachedData), context: context) } @@ -372,7 +372,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B */ open static func append(_ newData: [T], cacheKey: String, dataModelManager: DataModelManager, context: Any? = nil, completion: ((NSError?)->())? = nil) { let collectionDataProvider = CollectionDataProvider(dataModelManager: dataModelManager) - collectionDataProvider.fetchDataFromCache(cacheKey: cacheKey) { cachedData, error in + collectionDataProvider.fetchDataFromCache(withCacheKey: cacheKey) { cachedData, error in collectionDataProvider.append(newData, context: context) completion?(error) } @@ -395,7 +395,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B */ open static func update(_ element: T, at index: @escaping (([T])->Int), cacheKey: String, dataModelManager: DataModelManager, context: Any? = nil, completion: ((NSError?)->())? = nil) { let collectionDataProvider = CollectionDataProvider(dataModelManager: dataModelManager) - collectionDataProvider.fetchDataFromCache(cacheKey: cacheKey) { cachedData, error in + collectionDataProvider.fetchDataFromCache(withCacheKey: cacheKey) { cachedData, error in if let cachedData = cachedData { collectionDataProvider.update(element, at: index(cachedData), context: context) } @@ -419,9 +419,9 @@ open class CollectionDataProvider: ConsistencyManagerListener, B */ open static func removeAtIndex(_ index: @escaping (([T])->Int), cacheKey: String, dataModelManager: DataModelManager, context: Any? = nil, completion: ((NSError?)->())? = nil) { let collectionDataProvider = CollectionDataProvider(dataModelManager: dataModelManager) - collectionDataProvider.fetchDataFromCache(cacheKey: cacheKey) { cachedData, error in + collectionDataProvider.fetchDataFromCache(withCacheKey: cacheKey) { cachedData, error in if let cachedData = cachedData { - collectionDataProvider.removeAtIndex(index(cachedData), context: context) + collectionDataProvider.remove(at: index(cachedData), context: context) } completion?(error) } @@ -515,7 +515,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B */ private func updateAndListenToNewModelsInConsistencyManager(context: Any?, shouldListen: Bool = true) { let batchModel = batchModelFromModels(data, cacheKey: cacheKey) - dataModelManager.consistencyManager.updateWithNewModel(batchModel, context: ConsistencyContextWrapper(context: context)) + dataModelManager.consistencyManager.updateModel(batchModel, context: ConsistencyContextWrapper(context: context)) if shouldListen { listenForUpdates(model: batchModel) } @@ -569,9 +569,9 @@ open class CollectionDataProvider: ConsistencyManagerListener, B } } else { if let model = model { - dataModelManager.consistencyManager.listenForUpdates(self, onModel: model) + dataModelManager.consistencyManager.addListener(self, to: model) } else { - dataModelManager.consistencyManager.listenForUpdates(self) + dataModelManager.consistencyManager.addListener(self) } } } diff --git a/RocketData/DataModelManager.swift b/RocketData/DataModelManager.swift index ba02647..87ac9d6 100644 --- a/RocketData/DataModelManager.swift +++ b/RocketData/DataModelManager.swift @@ -53,7 +53,7 @@ open class DataModelManager { - parameter context: This context will be passed back to data provider delegates if this causes an update. */ open func updateModel(_ model: T, updateCache: Bool = true, context: Any? = nil) { - consistencyManager.updateWithNewModel(model, context: ConsistencyContextWrapper(context: context)) + consistencyManager.updateModel(model, context: ConsistencyContextWrapper(context: context)) if updateCache, let cacheKey = model.modelIdentifier { cacheModel(model, forKey: cacheKey, context: context) } @@ -70,7 +70,7 @@ open class DataModelManager { */ open func updateModels(_ models: [T], updateCache: Bool = true, context: Any? = nil) { let batchModel = BatchUpdateModel(models: models.map { $0 as ConsistencyManagerModel }) - consistencyManager.updateWithNewModel(batchModel, context: ConsistencyContextWrapper(context: context)) + consistencyManager.updateModel(batchModel, context: ConsistencyContextWrapper(context: context)) if updateCache { externalDispatchQueue.async { models.forEach { model in diff --git a/RocketData/DataProvider.swift b/RocketData/DataProvider.swift index 9f7b789..ba5e0da 100644 --- a/RocketData/DataProvider.swift +++ b/RocketData/DataProvider.swift @@ -40,16 +40,16 @@ open class DataProvider: ConsistencyManagerListener, BatchListen When you resume listening to changes (setting paused to false), if there have been changes since the data provider was paused, the DataProviderDelegate will be called and the model will be updated. */ - open var paused: Bool { + open var isPaused: Bool { get { - return dataModelManager.consistencyManager.isPaused(self) + return dataModelManager.consistencyManager.isListenerPaused(self) } set { Log.sharedInstance.assert(batchListener == nil, "You should not manually set paused if you are using a batch listener. Instead, you should use the paused variable on batch listener.") if newValue { - dataModelManager.consistencyManager.pauseListeningForUpdates(self) + dataModelManager.consistencyManager.pauseListener(self) } else { - dataModelManager.consistencyManager.resumeListeningForUpdates(self) + dataModelManager.consistencyManager.resumeListener(self) } } } @@ -92,11 +92,11 @@ open class DataProvider: ConsistencyManagerListener, BatchListen dataModelManager.cacheModel(data, forKey: cacheKey, context: context) } // These need to be called every time the model changes - dataModelManager.consistencyManager.updateWithNewModel(data, context: ConsistencyContextWrapper(context: context)) + dataModelManager.consistencyManager.updateModel(data, context: ConsistencyContextWrapper(context: context)) if let batchListener = batchListener { batchListener.listenerHasUpdatedModel(self) } else { - dataModelManager.consistencyManager.listenForUpdates(self) + dataModelManager.consistencyManager.addListener(self) } } } @@ -112,7 +112,7 @@ open class DataProvider: ConsistencyManagerListener, BatchListen At this point, the data provider will already have new data, so there's no need to call setData. This completion block will always be called exactly once, even if no data was updated. */ - open func fetchDataFromCache(cacheKey: String?, context: Any? = nil, completion: @escaping (T?, NSError?)->()) { + open func fetchDataFromCache(withCacheKey cacheKey: String?, context: Any? = nil, completion: @escaping (T?, NSError?)->()) { if cacheKey != nil && cacheKey == data?.modelIdentifier { // If the cacheKey is the same as what we currently have, there's no point in fetching again from the cache diff --git a/RocketData/Model.swift b/RocketData/Model.swift index e44744e..769bc5d 100644 --- a/RocketData/Model.swift +++ b/RocketData/Model.swift @@ -27,7 +27,7 @@ public protocol SimpleModel: ConsistencyManagerModel { If your model is Equatable, you do not need to implement this method (it will be implemented automatically using ==). */ - func isEqualToModel(_ model: SimpleModel) -> Bool + func isEqual(to model: SimpleModel) -> Bool } /** @@ -43,7 +43,7 @@ public protocol Model: SimpleModel { If your model is Equatable, you do not need to implement this method (it will be implemented automatically using ==). */ - func isEqualToModel(_ model: Model) -> Bool + func isEqual(to model: Model) -> Bool /** This method should run a map function on each child model and return a new version of self. @@ -81,7 +81,7 @@ public protocol Model: SimpleModel { - parameter model: The model which should be merged into the current model. - Returns: A model of type Self which contains the merged field from model. */ - func mergeModel(_ model: Model) -> Model + func merge(_ model: Model) -> Model } // MARK: - Extensions @@ -90,7 +90,7 @@ public protocol Model: SimpleModel { This extension automatically implements isEqualToModel whenever the SimpleModel is equatable. */ extension SimpleModel where Self: Equatable { - public func isEqualToModel(_ model: SimpleModel) -> Bool { + public func isEqual(to model: SimpleModel) -> Bool { if let model = model as? Self { return model == self } else { @@ -103,7 +103,7 @@ extension SimpleModel where Self: Equatable { This extension automatically implements isEqualToModel whenever the Model is equatable. */ extension Model where Self: Equatable { - public func isEqualToModel(_ model: Model) -> Bool { + public func isEqual(to model: Model) -> Bool { if let model = model as? Self { return model == self } else { @@ -119,7 +119,7 @@ with top level models. With this extension, you only need to implement two metho extension SimpleModel { public func isEqualToModel(_ model: ConsistencyManagerModel) -> Bool { if let model = model as? Model { - return isEqualToModel(model) + return isEqual(to: model) } else { return false } @@ -141,7 +141,7 @@ This extension implements the consistency manager model protocol and the simple The methods are the same, but the type signatures are slightly different. This runs all the appropriate casts. */ extension Model { - public func isEqualToModel(_ model: SimpleModel) -> Bool { + public func isEqual(to model: SimpleModel) -> Bool { if let model = model as? Model { return isEqualToModel(model) } else { @@ -151,7 +151,7 @@ extension Model { public func isEqualToModel(_ model: ConsistencyManagerModel) -> Bool { if let model = model as? Model { - return isEqualToModel(model) + return isEqual(to: model) } else { return false } @@ -177,7 +177,7 @@ extension Model { It also implements the default version of `mergeModel` which should just return the other model (since it will be the same class). */ extension Model { - public func mergeModel(_ model: Model) -> Model { + public func merge(_ model: Model) -> Model { // This cast should always succeed. if let model = model as? Self { return model @@ -189,7 +189,7 @@ extension Model { public func mergeModel(_ model: ConsistencyManagerModel) -> ConsistencyManagerModel { if let model = model as? Model { - return mergeModel(model) + return merge(model) } else { Log.sharedInstance.assert(false, "Model detected that doesn't implement Model. If you want to use projections, all models should implement the Model protocol.") return model diff --git a/RocketData/SharedCollectionManager.swift b/RocketData/SharedCollectionManager.swift index 5363b30..3db41b9 100644 --- a/RocketData/SharedCollectionManager.swift +++ b/RocketData/SharedCollectionManager.swift @@ -177,7 +177,7 @@ extension CollectionDataProvider: SharedCollection { let batchModel = BatchUpdateModel(models: consistencyManagerModels) listenForUpdates(model: batchModel) - if !paused { + if !isPaused { dataHolder.setData(newData, changeTime: ChangeTime()) updateDelegatesWithChange(.reset, context: context) } else { @@ -196,7 +196,7 @@ extension CollectionDataProvider: SharedCollection { let batchModel = BatchUpdateModel(models: consistencyManagerModels) listenForUpdates(model: batchModel) - if !paused { + if !isPaused { // Index must be within range // data.count is ok because it will insert at the end if index > data.count || index < 0 { @@ -229,7 +229,7 @@ extension CollectionDataProvider: SharedCollection { listenForUpdates(model: element) - if !paused { + if !isPaused { if index >= data.count || index < 0 { Log.sharedInstance.assert(false, "Index out of bounds on shared collection. This means something has gotten out of sync and something has gone wrong. Make sure you are only accessing CollectionDataProviders on the main thread. If you cannot find the problem, please file a bug.") return @@ -246,7 +246,7 @@ extension CollectionDataProvider: SharedCollection { } func removeAnyAtIndex(_ index: Int, context: Any?) { - if !paused { + if !isPaused { if index >= data.count || index < 0 { Log.sharedInstance.assert(false, "Index out of bounds on shared collection. This means something has gotten out of sync and something has gone wrong. Make sure you are only accessing CollectionDataProviders on the main thread. If you cannot find the problem, please file a bug.") return diff --git a/RocketDataTests/BatchListenerTests.swift b/RocketDataTests/BatchListenerTests.swift index 0f6f6f9..264a9a6 100644 --- a/RocketDataTests/BatchListenerTests.swift +++ b/RocketDataTests/BatchListenerTests.swift @@ -381,9 +381,9 @@ class BatchListenerTests: RocketDataTestCase { } collectionDataProvider.delegate = collectionProviderDelegate - XCTAssertFalse(batchDataProviderListener.paused) - batchDataProviderListener.paused = true - XCTAssertTrue(batchDataProviderListener.paused) + XCTAssertFalse(batchDataProviderListener.isPaused) + batchDataProviderListener.isPaused = true + XCTAssertTrue(batchDataProviderListener.isPaused) let otherDataProvider = DataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache) otherDataProvider.setData(ParentModel(id: 0, name: "new", requiredChild: ChildModel(id: 1, name: "child"), otherChildren: []), context: "first") @@ -404,8 +404,8 @@ class BatchListenerTests: RocketDataTestCase { XCTAssertEqual(calledDataProviderDelegate, 0) XCTAssertEqual(calledCollectionDelegate, 0) - batchDataProviderListener.paused = false - XCTAssertFalse(batchDataProviderListener.paused) + batchDataProviderListener.isPaused = false + XCTAssertFalse(batchDataProviderListener.isPaused) waitForConsistencyManagerToFlush(DataModelManager.sharedDataManagerNoCache.consistencyManager) diff --git a/RocketDataTests/CollectionDataProviderTests/ConsistencyCollectionDataProviderTests.swift b/RocketDataTests/CollectionDataProviderTests/ConsistencyCollectionDataProviderTests.swift index 3f8e974..8e2fc35 100644 --- a/RocketDataTests/CollectionDataProviderTests/ConsistencyCollectionDataProviderTests.swift +++ b/RocketDataTests/CollectionDataProviderTests/ConsistencyCollectionDataProviderTests.swift @@ -701,7 +701,7 @@ class ConsistencyCollectionDataProviderTests: RocketDataTestCase { dataProvider.setData([initialModel], cacheKey: nil, context: "wrong") // This uses a date before the setData, so should be a no-op - DataModelManager.sharedDataManagerNoCache.consistencyManager.updateWithNewModel(newModel, context: contextWrapper) + DataModelManager.sharedDataManagerNoCache.consistencyManager.updateModel(newModel, context: contextWrapper) waitForConsistencyManagerToFlush(DataModelManager.sharedDataManagerNoCache.consistencyManager) } diff --git a/RocketDataTests/CollectionDataProviderTests/PauseCollectionDataProviderTests.swift b/RocketDataTests/CollectionDataProviderTests/PauseCollectionDataProviderTests.swift index 8456e96..d3f440c 100644 --- a/RocketDataTests/CollectionDataProviderTests/PauseCollectionDataProviderTests.swift +++ b/RocketDataTests/CollectionDataProviderTests/PauseCollectionDataProviderTests.swift @@ -50,9 +50,9 @@ class PauseCollectionDataProviderTests: SharedCollectionTests { if initialCollectionPaused { // This should have no effect on the test either way, so let's test both ways - XCTAssertFalse(dataProvider1.paused) - dataProvider1.paused = true - XCTAssertTrue(dataProvider1.paused) + XCTAssertFalse(dataProvider1.isPaused) + dataProvider1.isPaused = true + XCTAssertTrue(dataProvider1.isPaused) } let batchDelegate = ClosureBatchListenerDelegate() { listeners, context in @@ -65,12 +65,12 @@ class PauseCollectionDataProviderTests: SharedCollectionTests { let batchListener = BatchDataProviderListener(dataProviders: [dataProvider3], dataModelManager: dataModelManager) batchListener.delegate = batchDelegate - XCTAssertFalse(dataProvider2.paused) - dataProvider2.paused = true - XCTAssertTrue(dataProvider2.paused) - XCTAssertFalse(batchListener.paused) - batchListener.paused = true - XCTAssertTrue(batchListener.paused) + XCTAssertFalse(dataProvider2.isPaused) + dataProvider2.isPaused = true + XCTAssertTrue(dataProvider2.isPaused) + XCTAssertFalse(batchListener.isPaused) + batchListener.isPaused = true + XCTAssertTrue(batchListener.isPaused) let newModel = ParentModel(id: 1) @@ -94,15 +94,15 @@ class PauseCollectionDataProviderTests: SharedCollectionTests { XCTAssertEqual(dataProvider2.data, [ParentModel(id: 0)]) XCTAssertEqual(dataProvider3.data, [ParentModel(id: 0)]) - dataProvider1.removeAtIndex(1, context: "context") + dataProvider1.remove(at: 1, context: "context") XCTAssertEqual(delegatesCalled, 0) XCTAssertEqual(dataProvider2.data, [ParentModel(id: 0)]) XCTAssertEqual(dataProvider3.data, [ParentModel(id: 0)]) - dataProvider2.paused = false - XCTAssertFalse(dataProvider2.paused) - batchListener.paused = false - XCTAssertFalse(batchListener.paused) + dataProvider2.isPaused = false + XCTAssertFalse(dataProvider2.isPaused) + batchListener.isPaused = false + XCTAssertFalse(batchListener.isPaused) // Now we should have correct data dataProviders.forEach { dataProvider in @@ -123,7 +123,7 @@ class PauseCollectionDataProviderTests: SharedCollectionTests { } batchListener.delegate = nil - dataProvider1.paused = false + dataProvider1.isPaused = false let otherDataProvider = DataProvider(dataModelManager: dataModelManager) otherDataProvider.setData(ParentModel(id: 4, name: "new", requiredChild: ChildModel(), otherChildren: [])) @@ -171,9 +171,9 @@ class PauseCollectionDataProviderTests: SharedCollectionTests { if initialCollectionPaused { // This should have no effect on the test either way, so let's test both ways - XCTAssertFalse(dataProvider1.paused) - dataProvider1.paused = true - XCTAssertTrue(dataProvider1.paused) + XCTAssertFalse(dataProvider1.isPaused) + dataProvider1.isPaused = true + XCTAssertTrue(dataProvider1.isPaused) } let batchDelegate = ClosureBatchListenerDelegate() { listeners, context in @@ -183,12 +183,12 @@ class PauseCollectionDataProviderTests: SharedCollectionTests { let batchListener = BatchDataProviderListener(dataProviders: [dataProvider3], dataModelManager: dataModelManager) batchListener.delegate = batchDelegate - XCTAssertFalse(dataProvider2.paused) - dataProvider2.paused = true - XCTAssertTrue(dataProvider2.paused) - XCTAssertFalse(batchListener.paused) - batchListener.paused = true - XCTAssertTrue(batchListener.paused) + XCTAssertFalse(dataProvider2.isPaused) + dataProvider2.isPaused = true + XCTAssertTrue(dataProvider2.isPaused) + XCTAssertFalse(batchListener.isPaused) + batchListener.isPaused = true + XCTAssertTrue(batchListener.isPaused) let newModel = ParentModel(id: 1) @@ -208,11 +208,11 @@ class PauseCollectionDataProviderTests: SharedCollectionTests { XCTAssertEqual(dataProvider2.data, [ParentModel(id: 0)]) XCTAssertEqual(dataProvider3.data, [ParentModel(id: 0)]) - dataProvider1.removeAtIndex(1, context: "context") + dataProvider1.remove(at: 1, context: "context") XCTAssertEqual(dataProvider2.data, [ParentModel(id: 0)]) XCTAssertEqual(dataProvider3.data, [ParentModel(id: 0)]) - dataProvider1.removeAtIndex(1, context: "context") + dataProvider1.remove(at: 1, context: "context") XCTAssertEqual(dataProvider2.data, [ParentModel(id: 0)]) XCTAssertEqual(dataProvider3.data, [ParentModel(id: 0)]) @@ -222,10 +222,10 @@ class PauseCollectionDataProviderTests: SharedCollectionTests { // We should now be back at the start with just one thing in the array - ParentModel(id: 0) - dataProvider2.paused = false - XCTAssertFalse(dataProvider2.paused) - batchListener.paused = false - XCTAssertFalse(batchListener.paused) + dataProvider2.isPaused = false + XCTAssertFalse(dataProvider2.isPaused) + batchListener.isPaused = false + XCTAssertFalse(batchListener.isPaused) // Now we should have correct data dataProviders.forEach { dataProvider in @@ -296,12 +296,12 @@ class PauseCollectionDataProviderTests: SharedCollectionTests { let dataProvider1 = sharedCollectionDataProvider(delegate1) weakDataProvider1 = dataProvider1 - XCTAssertFalse(dataProvider2.paused) - dataProvider2.paused = true - XCTAssertTrue(dataProvider2.paused) - XCTAssertFalse(batchListener.paused) - batchListener.paused = true - XCTAssertTrue(batchListener.paused) + XCTAssertFalse(dataProvider2.isPaused) + dataProvider2.isPaused = true + XCTAssertTrue(dataProvider2.isPaused) + XCTAssertFalse(batchListener.isPaused) + batchListener.isPaused = true + XCTAssertTrue(batchListener.isPaused) let newModel = ParentModel(id: 1) @@ -325,7 +325,7 @@ class PauseCollectionDataProviderTests: SharedCollectionTests { XCTAssertEqual(dataProvider2.data, [ParentModel(id: 0)]) XCTAssertEqual(dataProvider3.data, [ParentModel(id: 0)]) - dataProvider1.removeAtIndex(1, context: "context") + dataProvider1.remove(at: 1, context: "context") XCTAssertEqual(delegatesCalled, 0) XCTAssertEqual(dataProvider2.data, [ParentModel(id: 0)]) XCTAssertEqual(dataProvider3.data, [ParentModel(id: 0)]) @@ -338,10 +338,10 @@ class PauseCollectionDataProviderTests: SharedCollectionTests { XCTAssertNil(weakDataProvider1) - dataProvider2.paused = false - XCTAssertFalse(dataProvider2.paused) - batchListener.paused = false - XCTAssertFalse(batchListener.paused) + dataProvider2.isPaused = false + XCTAssertFalse(dataProvider2.isPaused) + batchListener.isPaused = false + XCTAssertFalse(batchListener.isPaused) // Since in this case, our update is coming from the consistency manager, we need to wait here waitForConsistencyManagerToFlush(dataModelManager.consistencyManager) @@ -386,9 +386,9 @@ class PauseCollectionDataProviderTests: SharedCollectionTests { let dataProvider2 = sharedCollectionDataProvider(nil) let dataProvider3 = sharedCollectionDataProvider(nil) - dataProvider1.paused = true - dataProvider2.paused = true - dataProvider3.paused = true + dataProvider1.isPaused = true + dataProvider2.isPaused = true + dataProvider3.isPaused = true var data: DataHolder<[ParentModel]>? = dataModelManager.sharedCollectionManager.dataFromProviders(cacheKey: "cacheKey") // Before we do anything, data should return 0 since all data providers have this value diff --git a/RocketDataTests/CollectionDataProviderTests/SharedCollectionDataProviderTests.swift b/RocketDataTests/CollectionDataProviderTests/SharedCollectionDataProviderTests.swift index 0178647..270f494 100644 --- a/RocketDataTests/CollectionDataProviderTests/SharedCollectionDataProviderTests.swift +++ b/RocketDataTests/CollectionDataProviderTests/SharedCollectionDataProviderTests.swift @@ -673,7 +673,7 @@ class SharedCollectionDataProviderTests: SharedCollectionTests { let batchListener = BatchDataProviderListener(dataProviders: [dataProvider3], dataModelManager: dataModelManager) batchListener.delegate = batchDelegate - dataProvider1.removeAtIndex(0, context: "context") + dataProvider1.remove(at: 0, context: "context") dataProviders.forEach { dataProvider in XCTAssertEqual(dataProvider.count, 0) } @@ -752,7 +752,7 @@ class SharedCollectionDataProviderTests: SharedCollectionTests { let expectation = self.expectation(description: "waitForCache") // Fetching from the cache will set the cacheKey - otherDataProvider.fetchDataFromCache(cacheKey: "otherCacheKey", context: "cacheContext") { (_, _) in + otherDataProvider.fetchDataFromCache(withCacheKey: "otherCacheKey", context: "cacheContext") { (_, _) in expectation.fulfill() } waitForExpectations(timeout: 10, handler: nil) @@ -761,7 +761,7 @@ class SharedCollectionDataProviderTests: SharedCollectionTests { let model = ParentModel(id: 1) sharedDataProvider.update(model, at: 0, context: "context") sharedDataProvider.setData([model, model], cacheKey: "cacheKey", context: "context") - sharedDataProvider.removeAtIndex(1, context: "context") + sharedDataProvider.remove(at: 1, context: "context") sharedDataProvider.insert([model], at: 1, context: "context") // Shouldn't have changed the other data provider @@ -806,7 +806,7 @@ class SharedCollectionDataProviderTests: SharedCollectionTests { var dataProviderLoadFinished = {} // Start loading from the cache - dataProvider.fetchDataFromCache(cacheKey: "cacheKey", context: "cacheContext") { _, _ in + dataProvider.fetchDataFromCache(withCacheKey: "cacheKey", context: "cacheContext") { _, _ in dataProviderLoadFinished() } @@ -861,7 +861,7 @@ class SharedCollectionDataProviderTests: SharedCollectionTests { } XCTAssertNil(weakDataProvider2) - dataProvider1.removeAtIndex(0, context: "context") + dataProvider1.remove(at: 0, context: "context") waitForCacheToFinish(dataModelManager) XCTAssertEqual(cacheUpdates, 1) diff --git a/RocketDataTests/CollectionDataProviderTests/SharedCollectionTests.swift b/RocketDataTests/CollectionDataProviderTests/SharedCollectionTests.swift index 7489763..b25d4e8 100644 --- a/RocketDataTests/CollectionDataProviderTests/SharedCollectionTests.swift +++ b/RocketDataTests/CollectionDataProviderTests/SharedCollectionTests.swift @@ -53,7 +53,7 @@ class SharedCollectionTests: RocketDataTestCase { dataProvider.delegate = delegate let expectation = self.expectation(description: "waitForCache") // Fetching from the cache will set the cacheKey - dataProvider.fetchDataFromCache(cacheKey: "cacheKey", context: "cacheContext") { _, _ in + dataProvider.fetchDataFromCache(withCacheKey: "cacheKey", context: "cacheContext") { _, _ in expectation.fulfill() } waitForExpectations(timeout: 10, handler: nil) diff --git a/RocketDataTests/CollectionDataProviderTests/SimpleCollectionDataProviderTests.swift b/RocketDataTests/CollectionDataProviderTests/SimpleCollectionDataProviderTests.swift index afdd56c..147f5c5 100644 --- a/RocketDataTests/CollectionDataProviderTests/SimpleCollectionDataProviderTests.swift +++ b/RocketDataTests/CollectionDataProviderTests/SimpleCollectionDataProviderTests.swift @@ -67,7 +67,7 @@ class SimpleCollectionDataProviderTests: RocketDataTestCase { } let expectation = self.expectation(description: "Wait for delegate") - dataProvider.fetchDataFromCache(cacheKey: "cacheKey", context: "context") { collection, error in + dataProvider.fetchDataFromCache(withCacheKey: "cacheKey", context: "context") { collection, error in XCTAssertEqual(collection?[0].id, 1) XCTAssertNil(error) expectation.fulfill() @@ -91,7 +91,7 @@ class SimpleCollectionDataProviderTests: RocketDataTestCase { } let expectation = self.expectation(description: "Wait for delegate") - dataProvider.fetchDataFromCache(cacheKey: "cacheKey", context: "context") { collection, error in + dataProvider.fetchDataFromCache(withCacheKey: "cacheKey", context: "context") { collection, error in XCTAssertNil(collection) XCTAssertTrue(error === expectedError) expectation.fulfill() @@ -236,7 +236,7 @@ class SimpleCollectionDataProviderTests: RocketDataTestCase { expectation.fulfill() } - dataProvider.removeAtIndex(1, context: "context") + dataProvider.remove(at: 1, context: "context") XCTAssertEqual(dataProvider.count, 1) XCTAssertEqual(dataProvider[0].name, "initial") @@ -259,7 +259,7 @@ class SimpleCollectionDataProviderTests: RocketDataTestCase { } var expectation = self.expectation(description: "Wait for delegate") - dataProvider.fetchDataFromCache(cacheKey: "cacheKey", context: "context") { collection, error in + dataProvider.fetchDataFromCache(withCacheKey: "cacheKey", context: "context") { collection, error in XCTAssertEqual(collection?[0].id, 1) XCTAssertNil(error) expectation.fulfill() @@ -271,7 +271,7 @@ class SimpleCollectionDataProviderTests: RocketDataTestCase { XCTAssertEqual(dataModelManager.collectionFromCacheCalled, 1) expectation = self.expectation(description: "Wait for delegate 2") - dataProvider.fetchDataFromCache(cacheKey: "cacheKey", context: "context") { collection, error in + dataProvider.fetchDataFromCache(withCacheKey: "cacheKey", context: "context") { collection, error in XCTAssertEqual(collection?[0].id, 1) XCTAssertNil(error) expectation.fulfill() @@ -302,7 +302,7 @@ class SimpleCollectionDataProviderTests: RocketDataTestCase { XCTAssertEqual(dataModelManager.collectionFromCacheCalled, 0) let expectation = self.expectation(description: "Wait for delegate") - dataProvider.fetchDataFromCache(cacheKey: "cacheKey", context: "context") { collection, error in + dataProvider.fetchDataFromCache(withCacheKey: "cacheKey", context: "context") { collection, error in XCTAssertEqual(collection?[0].id, 1) XCTAssertNil(error) expectation.fulfill() @@ -325,7 +325,7 @@ class SimpleCollectionDataProviderTests: RocketDataTestCase { } var expectation = self.expectation(description: "Wait for delegate") - dataProvider.fetchDataFromCache(cacheKey: "cacheKey", context: "context") { collection, error in + dataProvider.fetchDataFromCache(withCacheKey: "cacheKey", context: "context") { collection, error in XCTAssertNil(collection) XCTAssertNotNil(error) expectation.fulfill() @@ -345,7 +345,7 @@ class SimpleCollectionDataProviderTests: RocketDataTestCase { } expectation = self.expectation(description: "Wait for delegate 2") - dataProvider.fetchDataFromCache(cacheKey: "cacheKey", context: "context") { collection, error in + dataProvider.fetchDataFromCache(withCacheKey: "cacheKey", context: "context") { collection, error in XCTAssertEqual(collection?[0].id, 1) XCTAssertNil(error) expectation.fulfill() diff --git a/RocketDataTests/DataProviderTests/ConsistencyDataProviderTests.swift b/RocketDataTests/DataProviderTests/ConsistencyDataProviderTests.swift index 6f7b987..c0f44e0 100644 --- a/RocketDataTests/DataProviderTests/ConsistencyDataProviderTests.swift +++ b/RocketDataTests/DataProviderTests/ConsistencyDataProviderTests.swift @@ -214,7 +214,7 @@ class ConsistencyDataProviderTests: RocketDataTestCase { dataProvider.setData(initialModel, updateCache: false, context: "wrong") // This uses a date before the setData, so should be a no-op - DataModelManager.sharedDataManagerNoCache.consistencyManager.updateWithNewModel(newModel, context: contextWrapper) + DataModelManager.sharedDataManagerNoCache.consistencyManager.updateModel(newModel, context: contextWrapper) waitForConsistencyManagerToFlush(DataModelManager.sharedDataManagerNoCache.consistencyManager) } diff --git a/RocketDataTests/DataProviderTests/PauseDataProviderTests.swift b/RocketDataTests/DataProviderTests/PauseDataProviderTests.swift index 04ca31c..c50a549 100644 --- a/RocketDataTests/DataProviderTests/PauseDataProviderTests.swift +++ b/RocketDataTests/DataProviderTests/PauseDataProviderTests.swift @@ -27,9 +27,9 @@ class PauseDataProviderTests: RocketDataTestCase { let initialModel = ParentModel(id: 0, name: "initial", requiredChild: ChildModel(id: 1, name: "child"), otherChildren: []) dataProvider.setData(initialModel) - XCTAssertFalse(dataProvider.paused) - dataProvider.paused = true - XCTAssertTrue(dataProvider.paused) + XCTAssertFalse(dataProvider.isPaused) + dataProvider.isPaused = true + XCTAssertTrue(dataProvider.isPaused) let otherDataProvider = DataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache) otherDataProvider.setData(ParentModel(id: 0, name: "new", requiredChild: ChildModel(id: 1, name: "child"), otherChildren: []), context: "first") @@ -44,8 +44,8 @@ class PauseDataProviderTests: RocketDataTestCase { XCTAssertEqual(dataProvider.data, initialModel) XCTAssertEqual(numberOfTimesCalled, 0) - dataProvider.paused = false - XCTAssertFalse(dataProvider.paused) + dataProvider.isPaused = false + XCTAssertFalse(dataProvider.isPaused) waitForConsistencyManagerToFlush(DataModelManager.sharedDataManagerNoCache.consistencyManager) diff --git a/RocketDataTests/DataProviderTests/SimpleDataProviderTests.swift b/RocketDataTests/DataProviderTests/SimpleDataProviderTests.swift index 5aa6b6e..769a28c 100644 --- a/RocketDataTests/DataProviderTests/SimpleDataProviderTests.swift +++ b/RocketDataTests/DataProviderTests/SimpleDataProviderTests.swift @@ -63,7 +63,7 @@ class SimpleDataProviderTests: RocketDataTestCase { } let expectation = self.expectation(description: "") - dataProvider.fetchDataFromCache(cacheKey: "ParentModel:1", context: "context") { (model, error) -> () in + dataProvider.fetchDataFromCache(withCacheKey: "ParentModel:1", context: "context") { (model, error) -> () in XCTAssertEqual(model?.id, 1) XCTAssertNil(error) expectation.fulfill() @@ -87,7 +87,7 @@ class SimpleDataProviderTests: RocketDataTestCase { } let expectation = self.expectation(description: "") - dataProvider.fetchDataFromCache(cacheKey: "ParentModel:1", context: "context") { (model, error) -> () in + dataProvider.fetchDataFromCache(withCacheKey: "ParentModel:1", context: "context") { (model, error) -> () in XCTAssertNil(model) XCTAssertTrue(error === expectedError) expectation.fulfill() @@ -113,7 +113,7 @@ class SimpleDataProviderTests: RocketDataTestCase { } var expectation = self.expectation(description: "waitForCache1") - dataProvider.fetchDataFromCache(cacheKey: "ParentModel:1", context: "context") { (model, error) -> () in + dataProvider.fetchDataFromCache(withCacheKey: "ParentModel:1", context: "context") { (model, error) -> () in XCTAssertEqual(model?.id, 1) XCTAssertNil(error) expectation.fulfill() @@ -126,7 +126,7 @@ class SimpleDataProviderTests: RocketDataTestCase { // Now, let's load from the cache again. This should effectively be a no-op expectation = self.expectation(description: "waitForCache2") - dataProvider.fetchDataFromCache(cacheKey: "ParentModel:1", context: "context") { (model, error) -> () in + dataProvider.fetchDataFromCache(withCacheKey: "ParentModel:1", context: "context") { (model, error) -> () in // We still expect to get success back XCTAssertEqual(model?.id, 1) XCTAssertNil(error) @@ -151,7 +151,7 @@ class SimpleDataProviderTests: RocketDataTestCase { } var expectation = self.expectation(description: "waitForCache1") - dataProvider.fetchDataFromCache(cacheKey: "ParentModel:1", context: "context") { (model, error) -> () in + dataProvider.fetchDataFromCache(withCacheKey: "ParentModel:1", context: "context") { (model, error) -> () in XCTAssertNil(model) XCTAssertNotNil(error) expectation.fulfill() @@ -172,7 +172,7 @@ class SimpleDataProviderTests: RocketDataTestCase { // Now, let's load from the cache again. This should actually hit the cache again since we failed first time. expectation = self.expectation(description: "waitForCache2") - dataProvider.fetchDataFromCache(cacheKey: "ParentModel:1", context: "context") { (model, error) -> () in + dataProvider.fetchDataFromCache(withCacheKey: "ParentModel:1", context: "context") { (model, error) -> () in XCTAssertEqual(model?.id, 1) XCTAssertNil(error) expectation.fulfill() @@ -203,7 +203,7 @@ class SimpleDataProviderTests: RocketDataTestCase { // Now, let's load from the cache again. This should effectively be a no-op let expectation = self.expectation(description: "waitForCache") - dataProvider.fetchDataFromCache(cacheKey: "ParentModel:1", context: "context") { (model, error) -> () in + dataProvider.fetchDataFromCache(withCacheKey: "ParentModel:1", context: "context") { (model, error) -> () in // We still expect to get success back XCTAssertEqual(model?.id, 1) XCTAssertNil(error) @@ -232,7 +232,7 @@ class SimpleDataProviderTests: RocketDataTestCase { // Let's load from the cache with a nil cacheKey // We should still fetch using the context let expectation = self.expectation(description: "waitForCache") - dataProvider.fetchDataFromCache(cacheKey: nil, context: "context") { (model, error) -> () in + dataProvider.fetchDataFromCache(withCacheKey: nil, context: "context") { (model, error) -> () in // We still expect to get success back XCTAssertEqual(model?.id, 1) XCTAssertNil(error) diff --git a/RocketDataTests/ParsingHelpersTests.swift b/RocketDataTests/ParsingHelpersTests.swift index c425736..e0a5841 100644 --- a/RocketDataTests/ParsingHelpersTests.swift +++ b/RocketDataTests/ParsingHelpersTests.swift @@ -26,7 +26,7 @@ class ParsingHelpersTests: RocketDataTestCase { return nil } - func isEqualToModel(_ model: SimpleModel) -> Bool { + func isEqual(to model: SimpleModel) -> Bool { return false } } diff --git a/RocketDataTests/TestModels/ChildModel.swift b/RocketDataTests/TestModels/ChildModel.swift index 33c1eac..e8ff45a 100644 --- a/RocketDataTests/TestModels/ChildModel.swift +++ b/RocketDataTests/TestModels/ChildModel.swift @@ -44,7 +44,7 @@ final class ChildModel: Model, Equatable { /** This method allows this model to be merged with FullChildModel. */ - func mergeModel(_ model: Model) -> Model { + func merge(_ model: Model) -> Model { if let model = model as? ChildModel { return model } else if let model = model as? FullChildModel { diff --git a/RocketDataTests/TestModels/FullChildModel.swift b/RocketDataTests/TestModels/FullChildModel.swift index 5ae43f1..9c00cf7 100644 --- a/RocketDataTests/TestModels/FullChildModel.swift +++ b/RocketDataTests/TestModels/FullChildModel.swift @@ -46,7 +46,7 @@ final class FullChildModel: Model, Equatable { func forEach(_ visit: (Model) -> Void) { } - func mergeModel(_ model: Model) -> Model { + func merge(_ model: Model) -> Model { if let model = model as? FullChildModel { // If the other model is the same class, we can just do a replacement return model diff --git a/RocketDataTests/TestModels/SmallModels.swift b/RocketDataTests/TestModels/SmallModels.swift index 24a4c52..b814dad 100644 --- a/RocketDataTests/TestModels/SmallModels.swift +++ b/RocketDataTests/TestModels/SmallModels.swift @@ -21,7 +21,7 @@ class SmallSimpleModel: SimpleModel { return nil } - func isEqualToModel(_ model: SimpleModel) -> Bool { + func isEqual(to model: SimpleModel) -> Bool { return true } } @@ -31,7 +31,7 @@ class SmallModel: Model { return nil } - func isEqualToModel(_ model: Model) -> Bool { + func isEqual(to model: Model) -> Bool { return true } diff --git a/SampleApp/Podfile.lock b/SampleApp/Podfile.lock index 2831c2b..9c713b1 100644 --- a/SampleApp/Podfile.lock +++ b/SampleApp/Podfile.lock @@ -1,8 +1,8 @@ PODS: - - ConsistencyManager (3.0.0) + - ConsistencyManager (4.0.0) - PINCache (2.3) - RocketData (2.0.0): - - ConsistencyManager (~> 3.0.0) + - ConsistencyManager (~> 4.0.0) DEPENDENCIES: - PINCache (from `https://github.com/pinterest/PINCache.git`, commit `58635e4ff8d00fcd25084259a625c0615e9d071a`) @@ -21,10 +21,10 @@ CHECKOUT OPTIONS: :git: https://github.com/pinterest/PINCache.git SPEC CHECKSUMS: - ConsistencyManager: 2312b687bbd3875ae5b40a220239e969448d2191 + ConsistencyManager: 323ee466a5c933973529dfa5baa5cbc238633a67 PINCache: ce36ed282031b92fc7733ffe831f474ff80fddc2 - RocketData: 92f32f3f97d05977a7e6c4d8de436173cae436f7 + RocketData: ac8290ea0e65f422f0a259cf5b4940cafec9b462 -PODFILE CHECKSUM: 1a2d7d25a3d2afae79d244ca3bbe9766df7e092a +PODFILE CHECKSUM: b5eb42e36b4847085a928ca720bb30354bb63d2e -COCOAPODS: 1.1.0.rc.2 +COCOAPODS: 1.0.1 diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift index 6252297..0991ae7 100644 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift @@ -30,17 +30,17 @@ import Foundation The two important APIs that you will mainly use in this class are: - `listenForUpdates(listener: ConsistencyManagerListener)` - `updateWithNewModel(model: ConsistencyManagerModel, context: Any? = nil)` + `addListener(listener: ConsistencyManagerListener)` + `updateModel(model: ConsistencyManagerModel, context: Any? = nil)` These APIs allow you to start listening for updates on a model and register new updates. - Anytime you change a model locally, you should call updateWithNewModel to propegate these changes. + Anytime you change a model locally, you should call updateModel to propegate these changes. Additionally you have the following APIs to use if you choose to have your listener temporarily pause (and later resume) listening to updates: - `pauseListeningForUpdates(listener: ConsistencyManagerListener)` - `resumeListeningForUpdates(listener: ConsistencyManagerListener)` + `pauseListener(listener: ConsistencyManagerListener)` + `resumeListener(listener: ConsistencyManagerListener)` #### Removing Listeners @@ -140,23 +140,23 @@ open class ConsistencyManager { Note that calling this method on a paused listener will not unpause it. - parameter listener: The consistency manager listener that is listening to a model */ - open func listenForUpdates(_ listener: ConsistencyManagerListener) { + open func addListener(_ listener: ConsistencyManagerListener) { let model = listener.currentModel() if let model = model { - listenForUpdates(listener, onModel: model) + addListener(listener, to: model) } // Else they are listening to nothing. Let's not remove them though, since we are on a different thread, so timing issues could cause bugs. } /** - Call this method if you want to listen to a specific model. Usually, this is unnecssary and you should just use listenForUpdates(listener). + Call this method if you want to listen to a specific model. Usually, this is unnecssary and you should just use `addListener(listener)`. This is necessary if you manually update a model and change only part of it. Note that calling this method on a paused listener will not unpause it. For a performance optimization, you may only want to add yourself as a listener for this new change (and not the whole model again). - parameter listener: the consistency manager - - parameter onModel: the model you want to listen to with this listener + - parameter model: the model you want to listen to with this listener */ - open func listenForUpdates(_ listener: ConsistencyManagerListener, onModel model: ConsistencyManagerModel) { + open func addListener(_ listener: ConsistencyManagerListener, to model: ConsistencyManagerModel) { dispatchTask { _ in self.addListener(listener, recursivelyToChildModels: model) } @@ -198,7 +198,7 @@ open class ConsistencyManager { // MARK: Pausing and Resuming Listening to Updates /** - Temporarily ignore any updates on the current model. Use removeListener(listener: ConsistencyManagerListener) instead if you + Temporarily ignore any updates on the current model. Use `removeListener(listener: ConsistencyManagerListener)` instead if you know that you will not ever need to resume listening to updates. Once you start listening again, you will get all the changes that you missed via the modelUpdated delegate method with the most updated model at that point, and you will get the most recent context (only) as well. @@ -211,8 +211,8 @@ open class ConsistencyManager { This should only be called on the main thread. - parameter listener: The consistency manager listener that is currently listening to a model */ - open func pauseListeningForUpdates(_ listener: ConsistencyManagerListener) { - if !isPaused(listener) { + open func pauseListener(_ listener: ConsistencyManagerListener) { + if !isListenerPaused(listener) { let pausedListener = PausedListener(listener: listener, updatedModel: listener.currentModel(), mostRecentContext: nil, modelUpdates: ModelUpdates(changedModelIds: [], deletedModelIds: [])) pausedListeners.append(pausedListener) } @@ -226,9 +226,9 @@ open class ConsistencyManager { This should only be called on the main thread. - parameter listener: The consistency manager listener that is currently not listening - (i.e. has most recently called the pauseListeningForUpdates method) to a model + (i.e. has most recently called the pauseListener method) to a model */ - open func resumeListeningForUpdates(_ listener: ConsistencyManagerListener) { + open func resumeListener(_ listener: ConsistencyManagerListener) { guard let index = pausedListeners.index(where: { listener === $0.listener }) else { return } @@ -295,7 +295,7 @@ open class ConsistencyManager { - parameter listener: The listener to query the paused state of. */ - open func isPaused(_ listener: ConsistencyManagerListener) -> Bool { + open func isListenerPaused(_ listener: ConsistencyManagerListener) -> Bool { return pausedListeners.contains { listener === $0.listener } } @@ -308,7 +308,7 @@ open class ConsistencyManager { - parameter model: the model with which you want to update the consistency manager - parameter context: any context parameter, to be passed on to each listener in the delegate method */ - open func updateWithNewModel(_ model: ConsistencyManagerModel, context: Any? = nil) { + open func updateModel(_ model: ConsistencyManagerModel, context: Any? = nil) { dispatchTask { cancelled in let tuple = self.childrenAndListenersForModel(model) let optionalModelUpdates = CollectionHelpers.optionalValueDictionaryFromDictionary(tuple.modelUpdates) diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift index c042848..2bacf3a 100644 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift @@ -21,7 +21,7 @@ import Foundation ### SETUP - You should NOT call listenForUpdates on any of the listeners that you pass into this class. Instead, you should call it directly on the instance of this class. + You should NOT call addListener on any of the listeners that you pass into this class. Instead, you should call it directly on the instance of this class. This causes the instance of this class to listen to each of the models of the listeners. Any time you manually change a model on one of the listeners, you need to call listenerHasUpdatedModel. */ @@ -35,15 +35,15 @@ open class BatchListener: ConsistencyManagerListener { /// Listening to all models occurs immediately upon initialization of the BatchListener object public init(listeners: [ConsistencyManagerListener], consistencyManager: ConsistencyManager) { self.listeners = listeners - listenForUpdates(consistencyManager) + addListener(consistencyManager) } /** - Instead of calling listenForUpdates on each of the child listeners, you should call this method. + Instead of calling addListener on each of the child listeners, you should call this method. You should also call it whenever you manually change any of the sublisteners. */ - open func listenForUpdates(_ consistencyManager: ConsistencyManager) { - consistencyManager.listenForUpdates(self) + open func addListener(_ consistencyManager: ConsistencyManager) { + consistencyManager.addListener(self) } /** @@ -51,7 +51,7 @@ open class BatchListener: ConsistencyManagerListener { */ open func listenerHasUpdatedModel(_ listener: ConsistencyManagerListener, consistencyManager: ConsistencyManager) { if let model = listener.currentModel() { - consistencyManager.listenForUpdates(self, onModel: model) + consistencyManager.addListener(self, to: model) } // else the model nil, so we don't have to listen to anything new. } @@ -63,7 +63,7 @@ open class BatchListener: ConsistencyManagerListener { - parameter consistencyManager: The consistency manager you are using to listen to these changes. */ open func listenerHasUpdatedModel(_ model: ConsistencyManagerModel, consistencyManager: ConsistencyManager) { - consistencyManager.listenForUpdates(self, onModel: model) + consistencyManager.addListener(self, to: model) } // MARK: Consistency Manager Implementation diff --git a/SampleApp/Pods/ConsistencyManager/README.md b/SampleApp/Pods/ConsistencyManager/README.md index 2025cd0..67264ac 100644 --- a/SampleApp/Pods/ConsistencyManager/README.md +++ b/SampleApp/Pods/ConsistencyManager/README.md @@ -59,3 +59,17 @@ To get started, you should take a look at the docs: https://linkedin.github.io/ConsistencyManager-iOS +## Swift Version + +We are currently not maintaining separate branches for different Swift versions. You can use an older and stable version of the Consistency Manager for older versions of Swift though. HEAD currently supports Swift 3. + +| Swift Version | Consistency Manager Version | +|---------------|------------------------------| +| 1 | Not supported | +| 2.0 - 2.1 | 2.x.x (untested) | +| 2.2 - 2.3 | 2.x.x | +| 3 (Easy migration API) | 3.x.x | +| 3 (Better API) | 4.x.x | + +NOTE: If you are migrating to Swift 3, consider using version 3.0.0 first, then migrating to 4.x.x. 3.0.0 migrates the code to the new syntax without making any API changes. 4.x.x introduces a better API which is more consistent with the new Swift 3 API guidelines. + diff --git a/SampleApp/Pods/Local Podspecs/RocketData.podspec.json b/SampleApp/Pods/Local Podspecs/RocketData.podspec.json index 9c404cf..1ed763b 100644 --- a/SampleApp/Pods/Local Podspecs/RocketData.podspec.json +++ b/SampleApp/Pods/Local Podspecs/RocketData.podspec.json @@ -18,7 +18,7 @@ "frameworks": "Foundation", "dependencies": { "ConsistencyManager": [ - "~> 3.0.0" + "~> 4.0.0" ] } } diff --git a/SampleApp/Pods/Manifest.lock b/SampleApp/Pods/Manifest.lock index 2831c2b..9c713b1 100644 --- a/SampleApp/Pods/Manifest.lock +++ b/SampleApp/Pods/Manifest.lock @@ -1,8 +1,8 @@ PODS: - - ConsistencyManager (3.0.0) + - ConsistencyManager (4.0.0) - PINCache (2.3) - RocketData (2.0.0): - - ConsistencyManager (~> 3.0.0) + - ConsistencyManager (~> 4.0.0) DEPENDENCIES: - PINCache (from `https://github.com/pinterest/PINCache.git`, commit `58635e4ff8d00fcd25084259a625c0615e9d071a`) @@ -21,10 +21,10 @@ CHECKOUT OPTIONS: :git: https://github.com/pinterest/PINCache.git SPEC CHECKSUMS: - ConsistencyManager: 2312b687bbd3875ae5b40a220239e969448d2191 + ConsistencyManager: 323ee466a5c933973529dfa5baa5cbc238633a67 PINCache: ce36ed282031b92fc7733ffe831f474ff80fddc2 - RocketData: 92f32f3f97d05977a7e6c4d8de436173cae436f7 + RocketData: ac8290ea0e65f422f0a259cf5b4940cafec9b462 -PODFILE CHECKSUM: 1a2d7d25a3d2afae79d244ca3bbe9766df7e092a +PODFILE CHECKSUM: b5eb42e36b4847085a928ca720bb30354bb63d2e -COCOAPODS: 1.1.0.rc.2 +COCOAPODS: 1.0.1 diff --git a/SampleApp/Pods/Pods.xcodeproj/project.pbxproj b/SampleApp/Pods/Pods.xcodeproj/project.pbxproj index e98f290..833829c 100644 --- a/SampleApp/Pods/Pods.xcodeproj/project.pbxproj +++ b/SampleApp/Pods/Pods.xcodeproj/project.pbxproj @@ -628,7 +628,38 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 13E96A645A77DAD1FD4F541F18F5DDBF /* Debug */ = { + 087C0E07E694E836BA805FE795DB2A3E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7C803C8144FD5B9CFFC45BE93D7E10CE /* ConsistencyManager.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ConsistencyManager/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = ConsistencyManager; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 3FA451D268613890FA8A5A03801E11D5 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -646,18 +677,13 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - ENABLE_TESTABILITY = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", + "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -665,22 +691,19 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 9.3; - ONLY_ACTIVE_ARCH = YES; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; STRIP_INSTALLED_PRODUCT = NO; SYMROOT = "${SRCROOT}/../build"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 20405E1F17DA8745C2D7DFC1637D7585 /* Release */ = { + 44D9132EEDBE16387E8E57418009595A /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = E97958A09AFE83E5E1258ACBDBEF9E13 /* PINCache.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -693,7 +716,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/PINCache/PINCache.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_NAME = PINCache; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -702,17 +725,15 @@ VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 6F3E919C2D457E0799B4644A633F1766 /* Debug */ = { + 5369554F1BFF9BABF425882B8B7B9060 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = E97958A09AFE83E5E1258ACBDBEF9E13 /* PINCache.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -725,7 +746,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/PINCache/PINCache.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_NAME = PINCache; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -734,17 +755,15 @@ VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 7492D528FEDCA4E49E96A7723C51F482 /* Debug */ = { + 545D8A2EE88FE5B282E244BA127039A1 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7C803C8144FD5B9CFFC45BE93D7E10CE /* ConsistencyManager.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -757,41 +776,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = ConsistencyManager; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 7764579AF786E7CF3D72EC5CF423D54C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A64A481DC6C53B266328C55771CD3AF2 /* RocketData.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/RocketData/RocketData-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/RocketData/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/RocketData/RocketData.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = RocketData; + PRODUCT_NAME = ConsistencyManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_VERSION = 3.0; @@ -801,7 +787,7 @@ }; name = Release; }; - 862AF3139CD84E18D34FAF2F43CD0DA6 /* Release */ = { + 5E62115DE8C09934BF8D2FE5D15FED1E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -819,14 +805,17 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; + COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", "$(inherited)", ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -834,93 +823,78 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 9.3; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + ONLY_ACTIVE_ARCH = YES; STRIP_INSTALLED_PRODUCT = NO; SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - B1844625D99FFD39BBA09B8647C18DDA /* Release */ = { + 6E02A72A5916D02C6648B49A8F7469A6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C66F570C57AF0FDDB797FC88CB838DF2 /* Pods-SampleApp.release.xcconfig */; + baseConfigurationReference = A64A481DC6C53B266328C55771CD3AF2 /* RocketData.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-SampleApp/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/RocketData/RocketData-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/RocketData/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-SampleApp/Pods-SampleApp.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_SampleApp; + MODULEMAP_FILE = "Target Support Files/RocketData/RocketData.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = RocketData; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - D3F8A641A3C5230D99374F2D5B68FEA9 /* Debug */ = { + 99352E3E7AC1C42591ED7E7DB00C10DE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 977E19306D119D7023F94AC3AE17E4DE /* Pods-SampleApp.debug.xcconfig */; + baseConfigurationReference = A64A481DC6C53B266328C55771CD3AF2 /* RocketData.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - INFOPLIST_FILE = "Target Support Files/Pods-SampleApp/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/RocketData/RocketData-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/RocketData/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-SampleApp/Pods-SampleApp.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_SampleApp; + MODULEMAP_FILE = "Target Support Files/RocketData/RocketData.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = RocketData; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - DADE78EE9F187306B1A7CFD1189BC2B8 /* Release */ = { + ACBC122A5CF53DDE3FDE7F797B6C8A38 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C803C8144FD5B9CFFC45BE93D7E10CE /* ConsistencyManager.xcconfig */; + baseConfigurationReference = C66F570C57AF0FDDB797FC88CB838DF2 /* Pods-SampleApp.release.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; @@ -929,14 +903,18 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ConsistencyManager/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-SampleApp/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SampleApp/Pods-SampleApp.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = ConsistencyManager; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_SampleApp; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_VERSION = 3.0; @@ -946,13 +924,11 @@ }; name = Release; }; - E8407493AEDB1E44A7FD1647B710F6D3 /* Debug */ = { + C28F9DE32778CC9B90D46C3FECF7A958 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A64A481DC6C53B266328C55771CD3AF2 /* RocketData.xcconfig */; + baseConfigurationReference = 977E19306D119D7023F94AC3AE17E4DE /* Pods-SampleApp.debug.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; @@ -961,14 +937,18 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_NO_COMMON_BLOCKS = YES; - GCC_PREFIX_HEADER = "Target Support Files/RocketData/RocketData-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/RocketData/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-SampleApp/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/RocketData/RocketData.modulemap"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SampleApp/Pods-SampleApp.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = RocketData; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_SampleApp; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -985,8 +965,8 @@ 06C6C62FF59F9B1876B43787AE05BBDB /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */ = { isa = XCConfigurationList; buildConfigurations = ( - D3F8A641A3C5230D99374F2D5B68FEA9 /* Debug */, - B1844625D99FFD39BBA09B8647C18DDA /* Release */, + C28F9DE32778CC9B90D46C3FECF7A958 /* Debug */, + ACBC122A5CF53DDE3FDE7F797B6C8A38 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -994,8 +974,8 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 13E96A645A77DAD1FD4F541F18F5DDBF /* Debug */, - 862AF3139CD84E18D34FAF2F43CD0DA6 /* Release */, + 5E62115DE8C09934BF8D2FE5D15FED1E /* Debug */, + 3FA451D268613890FA8A5A03801E11D5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1003,8 +983,8 @@ ADADAE9FE27DDC723F1609E84052A924 /* Build configuration list for PBXNativeTarget "RocketData" */ = { isa = XCConfigurationList; buildConfigurations = ( - E8407493AEDB1E44A7FD1647B710F6D3 /* Debug */, - 7764579AF786E7CF3D72EC5CF423D54C /* Release */, + 6E02A72A5916D02C6648B49A8F7469A6 /* Debug */, + 99352E3E7AC1C42591ED7E7DB00C10DE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1012,8 +992,8 @@ D4860273489427FA3BC8FD45AEB05BD3 /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7492D528FEDCA4E49E96A7723C51F482 /* Debug */, - DADE78EE9F187306B1A7CFD1189BC2B8 /* Release */, + 087C0E07E694E836BA805FE795DB2A3E /* Debug */, + 545D8A2EE88FE5B282E244BA127039A1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1021,8 +1001,8 @@ EEC88EFEE538B8E091D1CD1A93DA96E8 /* Build configuration list for PBXNativeTarget "PINCache" */ = { isa = XCConfigurationList; buildConfigurations = ( - 6F3E919C2D457E0799B4644A633F1766 /* Debug */, - 20405E1F17DA8745C2D7DFC1637D7585 /* Release */, + 44D9132EEDBE16387E8E57418009595A /* Debug */, + 5369554F1BFF9BABF425882B8B7B9060 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/SampleApp/Pods/Target Support Files/ConsistencyManager/Info.plist b/SampleApp/Pods/Target Support Files/ConsistencyManager/Info.plist index 4522675..3424ca6 100644 --- a/SampleApp/Pods/Target Support Files/ConsistencyManager/Info.plist +++ b/SampleApp/Pods/Target Support Files/ConsistencyManager/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 3.0.0 + 4.0.0 CFBundleSignature ???? CFBundleVersion diff --git a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-acknowledgements.plist b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-acknowledgements.plist index bb67759..21a07b5 100644 --- a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-acknowledgements.plist +++ b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-acknowledgements.plist @@ -218,8 +218,6 @@ limitations under the License. - License - Apache License, Version 2.0 Title ConsistencyManager Type @@ -429,8 +427,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - License - Apache 2.0 Title PINCache Type @@ -642,8 +638,6 @@ limitations under the License. limitations under the License. - License - Apache License, Version 2.0 Title RocketData Type diff --git a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp.debug.xcconfig b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp.debug.xcconfig index bf366d5..5042300 100644 --- a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp.debug.xcconfig +++ b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp.debug.xcconfig @@ -1,4 +1,3 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES EMBEDDED_CONTENT_CONTAINS_SWIFT = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager" "$PODS_CONFIGURATION_BUILD_DIR/PINCache" "$PODS_CONFIGURATION_BUILD_DIR/RocketData" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 diff --git a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp.release.xcconfig b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp.release.xcconfig index bf366d5..5042300 100644 --- a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp.release.xcconfig +++ b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp.release.xcconfig @@ -1,4 +1,3 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES EMBEDDED_CONTENT_CONTAINS_SWIFT = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager" "$PODS_CONFIGURATION_BUILD_DIR/PINCache" "$PODS_CONFIGURATION_BUILD_DIR/RocketData" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 diff --git a/SampleApp/SampleApp.xcodeproj/project.pbxproj b/SampleApp/SampleApp.xcodeproj/project.pbxproj index e03b828..c6aab01 100644 --- a/SampleApp/SampleApp.xcodeproj/project.pbxproj +++ b/SampleApp/SampleApp.xcodeproj/project.pbxproj @@ -246,7 +246,7 @@ ); 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"; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; B600ADE6AABE1F257B77E3F6 /* [CP] Embed Pods Frameworks */ = { diff --git a/SampleApp/SampleApp/ViewControllers/ChatsViewController.swift b/SampleApp/SampleApp/ViewControllers/ChatsViewController.swift index 7d47aaa..c9ccea2 100644 --- a/SampleApp/SampleApp/ViewControllers/ChatsViewController.swift +++ b/SampleApp/SampleApp/ViewControllers/ChatsViewController.swift @@ -45,7 +45,7 @@ class ChatsViewController: UIViewController, CollectionDataProviderDelegate, UIT // In parallel, we're going to fetch from the cache and fetch from the network // There's no chance of a race condition here, because it's handled by RocketData - dataProvider.fetchDataFromCache(cacheKey: cacheKey) { (_, _) in + dataProvider.fetchDataFromCache(withCacheKey: cacheKey) { (_, _) in self.tableView.reloadData() } diff --git a/SampleApp/SampleApp/ViewControllers/MessagesViewController.swift b/SampleApp/SampleApp/ViewControllers/MessagesViewController.swift index 92d1f6e..e5ad163 100644 --- a/SampleApp/SampleApp/ViewControllers/MessagesViewController.swift +++ b/SampleApp/SampleApp/ViewControllers/MessagesViewController.swift @@ -55,7 +55,7 @@ class MessagesViewController: UIViewController, CollectionDataProviderDelegate, // We're going to do two things in parallel - access the cache and the network. // RocketData ensures there is no race condition here. If the cache returns after the network, the cache result is automatically discarded. - dataProvider.fetchDataFromCache(cacheKey: cacheKey) { (_, _) in + dataProvider.fetchDataFromCache(withCacheKey: cacheKey) { (_, _) in self.tableView.reloadData() }