From b1ca5daae99e309bbca1ec92b27990880c40c219 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Tue, 8 Nov 2016 08:31:00 -0800 Subject: [PATCH 01/33] Updating the pod spec and bumping pods in the Sample App --- RocketData.podspec | 2 +- SampleApp/Podfile.lock | 6 +- .../Local Podspecs/RocketData.podspec.json | 4 +- SampleApp/Pods/Manifest.lock | 6 +- SampleApp/Pods/Pods.xcodeproj/project.pbxproj | 412 +++++++++--------- .../ConsistencyManager-umbrella.h | 2 + .../PINCache/PINCache-umbrella.h | 2 + .../Pods-SampleApp-acknowledgements.plist | 6 + .../Pods-SampleApp-resources.sh | 10 +- .../Pods-SampleApp/Pods-SampleApp-umbrella.h | 2 + .../Pods-SampleApp.debug.xcconfig | 1 + .../Pods-SampleApp.release.xcconfig | 1 + .../RocketData/Info.plist | 2 +- .../RocketData/RocketData-umbrella.h | 2 + SampleApp/SampleApp.xcodeproj/project.pbxproj | 2 +- .../SampleApp/Network/NetworkManager.swift | 6 +- 16 files changed, 248 insertions(+), 218 deletions(-) diff --git a/RocketData.podspec b/RocketData.podspec index 9619cbe..a3e8249 100644 --- a/RocketData.podspec +++ b/RocketData.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'RocketData' - spec.version = '4.0.0' + spec.version = '4.0.1' spec.license = { :type => 'Apache License, Version 2.0' } spec.homepage = 'https://linkedin.github.io/RocketData' spec.authors = 'LinkedIn' diff --git a/SampleApp/Podfile.lock b/SampleApp/Podfile.lock index 9c713b1..5985f8b 100644 --- a/SampleApp/Podfile.lock +++ b/SampleApp/Podfile.lock @@ -1,7 +1,7 @@ PODS: - ConsistencyManager (4.0.0) - PINCache (2.3) - - RocketData (2.0.0): + - RocketData (4.0.1): - ConsistencyManager (~> 4.0.0) DEPENDENCIES: @@ -23,8 +23,8 @@ CHECKOUT OPTIONS: SPEC CHECKSUMS: ConsistencyManager: 323ee466a5c933973529dfa5baa5cbc238633a67 PINCache: ce36ed282031b92fc7733ffe831f474ff80fddc2 - RocketData: ac8290ea0e65f422f0a259cf5b4940cafec9b462 + RocketData: a661f6e75dd8741dbe95856ca84f5e16ab3b377e PODFILE CHECKSUM: b5eb42e36b4847085a928ca720bb30354bb63d2e -COCOAPODS: 1.0.1 +COCOAPODS: 1.1.0.rc.3 diff --git a/SampleApp/Pods/Local Podspecs/RocketData.podspec.json b/SampleApp/Pods/Local Podspecs/RocketData.podspec.json index 1ed763b..4bf3a6e 100644 --- a/SampleApp/Pods/Local Podspecs/RocketData.podspec.json +++ b/SampleApp/Pods/Local Podspecs/RocketData.podspec.json @@ -1,6 +1,6 @@ { "name": "RocketData", - "version": "2.0.0", + "version": "4.0.1", "license": { "type": "Apache License, Version 2.0" }, @@ -9,7 +9,7 @@ "summary": "A non-blocking CoreData replacement which uses immutable models.", "source": { "git": "https://github.com/linkedin/RocketData.git", - "tag": "2.0.0" + "tag": "4.0.1" }, "source_files": "RocketData/**/*.swift", "platforms": { diff --git a/SampleApp/Pods/Manifest.lock b/SampleApp/Pods/Manifest.lock index 9c713b1..5985f8b 100644 --- a/SampleApp/Pods/Manifest.lock +++ b/SampleApp/Pods/Manifest.lock @@ -1,7 +1,7 @@ PODS: - ConsistencyManager (4.0.0) - PINCache (2.3) - - RocketData (2.0.0): + - RocketData (4.0.1): - ConsistencyManager (~> 4.0.0) DEPENDENCIES: @@ -23,8 +23,8 @@ CHECKOUT OPTIONS: SPEC CHECKSUMS: ConsistencyManager: 323ee466a5c933973529dfa5baa5cbc238633a67 PINCache: ce36ed282031b92fc7733ffe831f474ff80fddc2 - RocketData: ac8290ea0e65f422f0a259cf5b4940cafec9b462 + RocketData: a661f6e75dd8741dbe95856ca84f5e16ab3b377e PODFILE CHECKSUM: b5eb42e36b4847085a928ca720bb30354bb63d2e -COCOAPODS: 1.0.1 +COCOAPODS: 1.1.0.rc.3 diff --git a/SampleApp/Pods/Pods.xcodeproj/project.pbxproj b/SampleApp/Pods/Pods.xcodeproj/project.pbxproj index 833829c..b93fb20 100644 --- a/SampleApp/Pods/Pods.xcodeproj/project.pbxproj +++ b/SampleApp/Pods/Pods.xcodeproj/project.pbxproj @@ -7,54 +7,54 @@ objects = { /* Begin PBXBuildFile section */ - 04E4465ED8E979E33657ECF598BA485D /* DataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = C58C9722E3CE3C10CE2A8D1525841591 /* DataProvider.swift */; }; + 069BFF79A45A3E7A57AD2C615841D723 /* DataHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59BB953DC512C0BD404C05A9001EC3CA /* DataHolder.swift */; }; 098F2AE94644893938E8673F13F5EF8D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 868955D6D1E041DE85370C32EE9AA086 /* Foundation.framework */; }; - 0F3B2813E248A7638AD4F7976690A59E /* CollectionDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E62C01BFCC9B862B747C241BCEC31B7 /* CollectionDataProvider.swift */; }; - 14FC605D115F0801721F33EA71AE0DDF /* SharedCollectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2D8003AF6E916119020EA3208AD8DC0 /* SharedCollectionManager.swift */; }; - 160ACF77D202C4ADE024B04BEFE6422D /* DataHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5FB5AC613AE730A99A8CFC5EB740EF2 /* DataHolder.swift */; }; + 12530DC94BD2D6013638A5E6EBD6911E /* RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 175BD63046EFF0C2DB8AAF533A42700C /* RocketData-dummy.m */; }; 1906A7F598DC1209C1539185AC70123B /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA1BEFBEC0818C2AD3D5B84104827F3E /* WeakArray.swift */; }; + 217D4F1ACCE68D99B85B533098C96E48 /* WeakSharedCollectionArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86F1DECBFDC2E2D4A8AF2A821B091E98 /* WeakSharedCollectionArray.swift */; }; 22F81B5D194CF29A901A2A6399AF7EB3 /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A14A903829834CAE3F976761FD58E04A /* BatchUpdateModel.swift */; }; - 2A1E39CB03470D3BCDBE7A26DBE9D61C /* RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 175BD63046EFF0C2DB8AAF533A42700C /* RocketData-dummy.m */; }; 2A51D87889023F52D63559B9624B15D6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 868955D6D1E041DE85370C32EE9AA086 /* Foundation.framework */; }; 2CE93941851BA6564027344639ADE240 /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FCE25907FA94C35C68634BABC9DCE42 /* CollectionHelpers.swift */; }; - 312069CD1519D57C5AA77688228F25DA /* CacheDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0786CE4EBA620C56B1363ABDBBD43836 /* CacheDelegate.swift */; }; 319C3C4CFA8B9C8B1CFEE20C8EDBE57C /* PINMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C78E40DB693DF276E9CC31D5FD1B6D71 /* PINMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3D1B88E27DAAE39EDA07E9DF82B0A70E /* ConsistencyManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D49C9E86A88F4A4E6F5F6B112E0A8035 /* ConsistencyManager.framework */; }; + 3EB1AD1433F8D4E20986BC4CAAF7F92B /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91930E982EAD3E95BF285C67843936A8 /* Model.swift */; }; 43C917738FE2EFA599B2F1138FF30CDA /* PINMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D88FF5AF93C00B6573CAC929BCDCBF0 /* PINMemoryCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; 466D55718EE2E044090AA5304AFB7427 /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4863ED80051B69536E6669672EC37123 /* BatchListener.swift */; }; 4730C9E6B24511A1B0843848D99D6DB1 /* RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 82CB51FE97E0C32F229C68895E5B203F /* RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4839811DF1BEEDBEECD5B9DF09E75F63 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26AC7ACF33AE0278FC1DA3ADDBE1946E /* ModelUpdates.swift */; }; 49B743734DBB42D13DE2E4C95D728258 /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA404BAC8D35044E3535E7BDC2581BD1 /* ConsistencyManagerModel.swift */; }; 4B2BE5EF5BCC75C085AF6FB3DFB73BF7 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D19EDC50B553488E7E6D0D0E249B4A4 /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4B7572978A83D2197DDD4EF9BEFB3D91 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = F930128D8627D7BF34B173297C35E8CC /* Logger.swift */; }; 4D150612A8A5242A297C0F776BE02D66 /* PINCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B7E5721391A164872C34EFD770F2EF /* PINCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 55C6D5C705A0634BB06B827CC14E4652 /* DataModelManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D26FA5F575A34BF38D224D31613683E5 /* DataModelManager.swift */; }; + 565A0FE43DDCA7726C273E819F97D885 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF2D8D32EFBF7BBFFB1F757B9086A44B /* Errors.swift */; }; 672297C4F990022D1768B5D6DEC88A1B /* Nullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F973E49A1699B4703854B2945A3EDB8 /* Nullability.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 67D63338B4F2CF06CA29FD96F4ADCC7B /* BatchDataProviderListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11B6413CEC29D99B66714989A7F72350 /* BatchDataProviderListener.swift */; }; 6A52EA1AB9E49BAF9D979C953CBA94C5 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8257092B7ED57EBC33FDE506F8E31295 /* ErrorManager.swift */; }; - 7341D11CC7A12744D9BEDD8F1C6FC1A0 /* WeakSharedCollectionArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 151FBD677F73EA2DC5835775E9D615F8 /* WeakSharedCollectionArray.swift */; }; 79F0359EDE2A2DE6C858B37522B08417 /* WeakListenerArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA60ED55EC2BCF98CC3AF0B067BFCE39 /* WeakListenerArray.swift */; }; - 7AE8EC241EF0E4149E7D456A3677D178 /* ChangeClock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9816DD5CA1A8586A083A53455FC9294E /* ChangeClock.swift */; }; 8265AE9D9D400DF1E9B06A3955F85942 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEFEC0AE433459ED42699544630C74D8 /* UIKit.framework */; }; + 84EFA9F0C67525C9F7714C61587C8E69 /* ParsingHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F08D82A3614A5E6B38AF975CDBE0ECE4 /* ParsingHelpers.swift */; }; + 87C90EFFD8F4CFCD1E9A3DA726878AC4 /* ChangeTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A62B6016399D0F24BE7D6161893C920 /* ChangeTime.swift */; }; 8C80D9F9BFBF9147A4AEA6C21755E51C /* PINCache-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 54092D960EFBF6703B6DFCE5EDF9C997 /* PINCache-dummy.m */; }; 92E4CF92DEF26530B4633401C42CE37D /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1385E3B9A19CA4025CE6C0CFC3737371 /* ConsistencyManager-dummy.m */; }; + 96E0627D7A861A73FADE5875E471A4CC /* CollectionChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8887DDD3FE1C82BA0444592E5CDF368 /* CollectionChange.swift */; }; + 9E3B3B6A7AA5DEE492754BCF1422A913 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 216C1E264C9A7C46AFFDE72DFA87FA2B /* Logger.swift */; }; 9E7CDDB3DBC6BD36B268726BD3C96ECF /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9270F1B51422C45FE34685C07D8AB61 /* ConsistencyManagerDelegate.swift */; }; 9E84BBB31CBC9FD61F463DD5F011D61B /* PINCacheObjectSubscripting.h in Headers */ = {isa = PBXBuildFile; fileRef = 978E615592A6D8B74F7482647FCF1B91 /* PINCacheObjectSubscripting.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A719976A746590C76BA27723793C4E2A /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51EF3B9BEB38472B54D9D14BF6030E7 /* Model.swift */; }; A9D68ECF9982B5DD662C003BF240CB6E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 868955D6D1E041DE85370C32EE9AA086 /* Foundation.framework */; }; ACFD5574A7471D02B64084A57F94EDB3 /* PINDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C8B57021B136859AC65EE1347E2409C3 /* PINDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B43671986A02A7145AE34792632B5380 /* CacheDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 819A3793DAA2A1FFCD0966BADCC1604D /* CacheDelegate.swift */; }; B5A43386E07922DDA1F0197F44654CCA /* Pods-SampleApp-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FAFDE20BDDFF0E8A40FBD159EB86BE41 /* Pods-SampleApp-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B6E38A58EF75061995F8BBAE83A21AD5 /* ParsingHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FF807463CB6188E349A6B29C4DF7EB8 /* ParsingHelpers.swift */; }; BD436656590B87187BA25C062EFA52EC /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F3B7E24602ABC7F74FB51E33994131 /* ConsistencyManagerListener.swift */; }; BD9A2265EA812BA9CEAB70FAA192C223 /* PINDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 49FB3EC4989DC5445D43B64C392E20F7 /* PINDiskCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - CA64E185897D9EF73A60A6699F988EAF /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85B880EE845E98AA01558D4F1AAF8F5E /* Errors.swift */; }; + C59A3E20C223DEF828D8802D28D50B42 /* SharedCollectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7A65CB30635204C8D74620348E8C90 /* SharedCollectionManager.swift */; }; + CA319689F019A564EF90862F41E1A139 /* DataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A391879DCAFC3865398B8E9B53B71CE3 /* DataProvider.swift */; }; + CC32AA29A7978CB842B06C84C981B990 /* ConsistencyContextWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8650ED307478EEA858EA4BB75703106B /* ConsistencyContextWrapper.swift */; }; CDF207AA6AD86A1B61CB48F6690B2913 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 868955D6D1E041DE85370C32EE9AA086 /* Foundation.framework */; }; E157D9CFB459204CC8E5D49F988A0782 /* PINCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 09E77D08D8F150543DE24A2035D6213C /* PINCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; E6E7ED38E1CDCE71C37187A17927D8D2 /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C05C21EB217624E7B979169288827FF /* ConsistencyManager.swift */; }; + EC0F4B7D126DB104E521A8367459E498 /* DataModelManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CAC8396B5643E82F0D0DF2EEC20FF31 /* DataModelManager.swift */; }; + EDCFF9CC3BB11DA0A100E797217A2ADB /* CollectionDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD82FA5EE81D438BDF67704DBDA319A2 /* CollectionDataProvider.swift */; }; F18E7E3631150CB050F049B3C23FD713 /* PINCache-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D0843965231C593C52D572CE2665D55B /* PINCache-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; F5FA11EBF964FAA61FBE85C891249165 /* Pods-SampleApp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 03134C79E14CFE0BBC83A3961C22A4A2 /* Pods-SampleApp-dummy.m */; }; - F75B7502ABFB711CE23F124B65F0B20F /* CollectionChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = B90354EE62CF78C67A3BA5CA2FFC7D18 /* CollectionChange.swift */; }; - F8951C7530B5A98EEEE90F6833E7483D /* BatchDataProviderListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 137FFE2FEE4BD9BAE94E3FDD46AED5A1 /* BatchDataProviderListener.swift */; }; - FD897E5EE9B3BD62FE9C0FD48A26742C /* ConsistencyContextWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8AF2FE6DB07C0BE6F8792B8FA2C8D9E /* ConsistencyContextWrapper.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -90,17 +90,16 @@ /* Begin PBXFileReference section */ 03134C79E14CFE0BBC83A3961C22A4A2 /* Pods-SampleApp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SampleApp-dummy.m"; sourceTree = ""; }; - 0786CE4EBA620C56B1363ABDBBD43836 /* CacheDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CacheDelegate.swift; sourceTree = ""; }; 09E77D08D8F150543DE24A2035D6213C /* PINCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCache.h; path = PINCache/PINCache.h; sourceTree = ""; }; + 0A62B6016399D0F24BE7D6161893C920 /* ChangeTime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChangeTime.swift; sourceTree = ""; }; 0FCE25907FA94C35C68634BABC9DCE42 /* CollectionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionHelpers.swift; path = ConsistencyManager/Helpers/CollectionHelpers.swift; sourceTree = ""; }; 106F5AA8B24AC58F9705F3FA7459B833 /* RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RocketData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 137FFE2FEE4BD9BAE94E3FDD46AED5A1 /* BatchDataProviderListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BatchDataProviderListener.swift; sourceTree = ""; }; + 11B6413CEC29D99B66714989A7F72350 /* BatchDataProviderListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BatchDataProviderListener.swift; sourceTree = ""; }; 1385E3B9A19CA4025CE6C0CFC3737371 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; 13B7E5721391A164872C34EFD770F2EF /* PINCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINCache.m; path = PINCache/PINCache.m; sourceTree = ""; }; - 151FBD677F73EA2DC5835775E9D615F8 /* WeakSharedCollectionArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = WeakSharedCollectionArray.swift; sourceTree = ""; }; 175BD63046EFF0C2DB8AAF533A42700C /* RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RocketData-dummy.m"; sourceTree = ""; }; 1B7AE4DA3F40BE0485A9E9EA03AEC5E0 /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = ConsistencyManager.modulemap; sourceTree = ""; }; - 1FF807463CB6188E349A6B29C4DF7EB8 /* ParsingHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ParsingHelpers.swift; sourceTree = ""; }; + 216C1E264C9A7C46AFFDE72DFA87FA2B /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = ""; }; 26AC7ACF33AE0278FC1DA3ADDBE1946E /* ModelUpdates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelUpdates.swift; path = ConsistencyManager/DataStructures/ModelUpdates.swift; sourceTree = ""; }; 2FA683888CD1CAD23827B845F6A83CA3 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 33A6C0BCFB81B520023849987C74522C /* PINCache.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = PINCache.modulemap; sourceTree = ""; }; @@ -113,41 +112,42 @@ 4D88FF5AF93C00B6573CAC929BCDCBF0 /* PINMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINMemoryCache.m; path = PINCache/PINMemoryCache.m; sourceTree = ""; }; 4FFA9C7C1FB7653BA1B5C4CE05C4C0E6 /* PINCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINCache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 54092D960EFBF6703B6DFCE5EDF9C997 /* PINCache-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PINCache-dummy.m"; sourceTree = ""; }; + 59BB953DC512C0BD404C05A9001EC3CA /* DataHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataHolder.swift; sourceTree = ""; }; 5C05C21EB217624E7B979169288827FF /* ConsistencyManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManager.swift; path = ConsistencyManager/ConsistencyManager.swift; sourceTree = ""; }; + 5E7A65CB30635204C8D74620348E8C90 /* SharedCollectionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SharedCollectionManager.swift; sourceTree = ""; }; + 6CAC8396B5643E82F0D0DF2EEC20FF31 /* DataModelManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataModelManager.swift; sourceTree = ""; }; 7C803C8144FD5B9CFFC45BE93D7E10CE /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; 7D19EDC50B553488E7E6D0D0E249B4A4 /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; 7D40CBEF202563E3FFB38A7077356EA2 /* Pods-SampleApp.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SampleApp.modulemap"; sourceTree = ""; }; - 7E62C01BFCC9B862B747C241BCEC31B7 /* CollectionDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionDataProvider.swift; sourceTree = ""; }; 7F973E49A1699B4703854B2945A3EDB8 /* Nullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nullability.h; path = PINCache/Nullability.h; sourceTree = ""; }; + 819A3793DAA2A1FFCD0966BADCC1604D /* CacheDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CacheDelegate.swift; sourceTree = ""; }; 8257092B7ED57EBC33FDE506F8E31295 /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; 82CB51FE97E0C32F229C68895E5B203F /* RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RocketData-umbrella.h"; sourceTree = ""; }; - 85B880EE845E98AA01558D4F1AAF8F5E /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = ""; }; + 8650ED307478EEA858EA4BB75703106B /* ConsistencyContextWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConsistencyContextWrapper.swift; sourceTree = ""; }; 868955D6D1E041DE85370C32EE9AA086 /* 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; }; + 86F1DECBFDC2E2D4A8AF2A821B091E98 /* WeakSharedCollectionArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = WeakSharedCollectionArray.swift; sourceTree = ""; }; 915175ED60BB324459FB3541E22F7259 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 91930E982EAD3E95BF285C67843936A8 /* Model.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Model.swift; sourceTree = ""; }; 91B47F2C6762232C70D4BDA548192320 /* Pods-SampleApp-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SampleApp-acknowledgements.markdown"; sourceTree = ""; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 977E19306D119D7023F94AC3AE17E4DE /* Pods-SampleApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp.debug.xcconfig"; sourceTree = ""; }; 978E615592A6D8B74F7482647FCF1B91 /* PINCacheObjectSubscripting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCacheObjectSubscripting.h; path = PINCache/PINCacheObjectSubscripting.h; sourceTree = ""; }; - 9816DD5CA1A8586A083A53455FC9294E /* ChangeClock.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChangeClock.swift; sourceTree = ""; }; 99EC2D3F6E0AA3D387164D1E15C93A31 /* Pods_SampleApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SampleApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A14A903829834CAE3F976761FD58E04A /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; sourceTree = ""; }; + A391879DCAFC3865398B8E9B53B71CE3 /* DataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataProvider.swift; sourceTree = ""; }; A64A481DC6C53B266328C55771CD3AF2 /* RocketData.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RocketData.xcconfig; sourceTree = ""; }; - A8AF2FE6DB07C0BE6F8792B8FA2C8D9E /* ConsistencyContextWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConsistencyContextWrapper.swift; sourceTree = ""; }; + A8887DDD3FE1C82BA0444592E5CDF368 /* CollectionChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionChange.swift; sourceTree = ""; }; + AF2D8D32EFBF7BBFFB1F757B9086A44B /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = ""; }; B2149B3A4BDF277435FE83E7B88410BC /* RocketData-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RocketData-prefix.pch"; sourceTree = ""; }; - B51EF3B9BEB38472B54D9D14BF6030E7 /* Model.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Model.swift; sourceTree = ""; }; - B90354EE62CF78C67A3BA5CA2FFC7D18 /* CollectionChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionChange.swift; sourceTree = ""; }; BDC61426957E156F643F337042983479 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C2D8003AF6E916119020EA3208AD8DC0 /* SharedCollectionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SharedCollectionManager.swift; sourceTree = ""; }; - C58C9722E3CE3C10CE2A8D1525841591 /* DataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataProvider.swift; sourceTree = ""; }; - C5FB5AC613AE730A99A8CFC5EB740EF2 /* DataHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataHolder.swift; sourceTree = ""; }; C66F570C57AF0FDDB797FC88CB838DF2 /* Pods-SampleApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp.release.xcconfig"; sourceTree = ""; }; C78E40DB693DF276E9CC31D5FD1B6D71 /* PINMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINMemoryCache.h; path = PINCache/PINMemoryCache.h; sourceTree = ""; }; C8B57021B136859AC65EE1347E2409C3 /* PINDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINDiskCache.h; path = PINCache/PINDiskCache.h; sourceTree = ""; }; C9F3B7E24602ABC7F74FB51E33994131 /* ConsistencyManagerListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerListener.swift; sourceTree = ""; }; CA60ED55EC2BCF98CC3AF0B067BFCE39 /* WeakListenerArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakListenerArray.swift; path = ConsistencyManager/DataStructures/WeakListenerArray.swift; sourceTree = ""; }; CBA97F5884387AA14AB8EFA066145363 /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CD82FA5EE81D438BDF67704DBDA319A2 /* CollectionDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionDataProvider.swift; sourceTree = ""; }; D0843965231C593C52D572CE2665D55B /* PINCache-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINCache-umbrella.h"; sourceTree = ""; }; - D26FA5F575A34BF38D224D31613683E5 /* DataModelManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataModelManager.swift; sourceTree = ""; }; D3BBC8FA3A1650C24A8C05EF23A85804 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; D49C9E86A88F4A4E6F5F6B112E0A8035 /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DA1BEFBEC0818C2AD3D5B84104827F3E /* WeakArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakArray.swift; path = ConsistencyManager/DataStructures/WeakArray.swift; sourceTree = ""; }; @@ -157,7 +157,7 @@ E9270F1B51422C45FE34685C07D8AB61 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; E97958A09AFE83E5E1258ACBDBEF9E13 /* PINCache.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PINCache.xcconfig; sourceTree = ""; }; EA404BAC8D35044E3535E7BDC2581BD1 /* ConsistencyManagerModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerModel.swift; path = ConsistencyManager/Protocols/ConsistencyManagerModel.swift; sourceTree = ""; }; - F930128D8627D7BF34B173297C35E8CC /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = ""; }; + F08D82A3614A5E6B38AF975CDBE0ECE4 /* ParsingHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ParsingHelpers.swift; sourceTree = ""; }; FAFDE20BDDFF0E8A40FBD159EB86BE41 /* Pods-SampleApp-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SampleApp-umbrella.h"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -222,6 +222,28 @@ path = "SampleApp/Pods/Target Support Files/RocketData"; sourceTree = ""; }; + 2BF60A306645A9BB9C6974C3384E39B4 /* RocketData */ = { + isa = PBXGroup; + children = ( + 11B6413CEC29D99B66714989A7F72350 /* BatchDataProviderListener.swift */, + 819A3793DAA2A1FFCD0966BADCC1604D /* CacheDelegate.swift */, + 0A62B6016399D0F24BE7D6161893C920 /* ChangeTime.swift */, + A8887DDD3FE1C82BA0444592E5CDF368 /* CollectionChange.swift */, + CD82FA5EE81D438BDF67704DBDA319A2 /* CollectionDataProvider.swift */, + 8650ED307478EEA858EA4BB75703106B /* ConsistencyContextWrapper.swift */, + 59BB953DC512C0BD404C05A9001EC3CA /* DataHolder.swift */, + 6CAC8396B5643E82F0D0DF2EEC20FF31 /* DataModelManager.swift */, + A391879DCAFC3865398B8E9B53B71CE3 /* DataProvider.swift */, + AF2D8D32EFBF7BBFFB1F757B9086A44B /* Errors.swift */, + 216C1E264C9A7C46AFFDE72DFA87FA2B /* Logger.swift */, + 91930E982EAD3E95BF285C67843936A8 /* Model.swift */, + F08D82A3614A5E6B38AF975CDBE0ECE4 /* ParsingHelpers.swift */, + 5E7A65CB30635204C8D74620348E8C90 /* SharedCollectionManager.swift */, + 86F1DECBFDC2E2D4A8AF2A821B091E98 /* WeakSharedCollectionArray.swift */, + ); + path = RocketData; + sourceTree = ""; + }; 3D38DD4AFCE429A93844A67994A1F277 /* Targets Support Files */ = { isa = PBXGroup; children = ( @@ -341,28 +363,6 @@ path = "../Target Support Files/ConsistencyManager"; sourceTree = ""; }; - DF210BF608E829781147A7E146561099 /* RocketData */ = { - isa = PBXGroup; - children = ( - 137FFE2FEE4BD9BAE94E3FDD46AED5A1 /* BatchDataProviderListener.swift */, - 0786CE4EBA620C56B1363ABDBBD43836 /* CacheDelegate.swift */, - 9816DD5CA1A8586A083A53455FC9294E /* ChangeClock.swift */, - B90354EE62CF78C67A3BA5CA2FFC7D18 /* CollectionChange.swift */, - 7E62C01BFCC9B862B747C241BCEC31B7 /* CollectionDataProvider.swift */, - A8AF2FE6DB07C0BE6F8792B8FA2C8D9E /* ConsistencyContextWrapper.swift */, - C5FB5AC613AE730A99A8CFC5EB740EF2 /* DataHolder.swift */, - D26FA5F575A34BF38D224D31613683E5 /* DataModelManager.swift */, - C58C9722E3CE3C10CE2A8D1525841591 /* DataProvider.swift */, - 85B880EE845E98AA01558D4F1AAF8F5E /* Errors.swift */, - F930128D8627D7BF34B173297C35E8CC /* Logger.swift */, - B51EF3B9BEB38472B54D9D14BF6030E7 /* Model.swift */, - 1FF807463CB6188E349A6B29C4DF7EB8 /* ParsingHelpers.swift */, - C2D8003AF6E916119020EA3208AD8DC0 /* SharedCollectionManager.swift */, - 151FBD677F73EA2DC5835775E9D615F8 /* WeakSharedCollectionArray.swift */, - ); - path = RocketData; - sourceTree = ""; - }; FAEAB263AAB1804EE34C859BAF9FA6D7 /* ConsistencyManager */ = { isa = PBXGroup; children = ( @@ -385,7 +385,7 @@ FD2CEE1577A8B8F71D80789AB9F21617 /* RocketData */ = { isa = PBXGroup; children = ( - DF210BF608E829781147A7E146561099 /* RocketData */, + 2BF60A306645A9BB9C6974C3384E39B4 /* RocketData */, 0B41BA4D42EE870C2E8EFFAF1BAD81BE /* Support Files */, ); name = RocketData; @@ -493,7 +493,7 @@ isa = PBXNativeTarget; buildConfigurationList = ADADAE9FE27DDC723F1609E84052A924 /* Build configuration list for PBXNativeTarget "RocketData" */; buildPhases = ( - 2044DEE77B99F0B36D7594596B8F46CD /* Sources */, + EF020E249EA87F821FE9E6868B60E9BF /* Sources */, BC0A371B59768CECFAB2F207E62193A7 /* Frameworks */, 60A5D22B5D79003AE350A4C56ECA2B33 /* Headers */, ); @@ -537,29 +537,6 @@ /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 2044DEE77B99F0B36D7594596B8F46CD /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F8951C7530B5A98EEEE90F6833E7483D /* BatchDataProviderListener.swift in Sources */, - 312069CD1519D57C5AA77688228F25DA /* CacheDelegate.swift in Sources */, - 7AE8EC241EF0E4149E7D456A3677D178 /* ChangeClock.swift in Sources */, - F75B7502ABFB711CE23F124B65F0B20F /* CollectionChange.swift in Sources */, - 0F3B2813E248A7638AD4F7976690A59E /* CollectionDataProvider.swift in Sources */, - FD897E5EE9B3BD62FE9C0FD48A26742C /* ConsistencyContextWrapper.swift in Sources */, - 160ACF77D202C4ADE024B04BEFE6422D /* DataHolder.swift in Sources */, - 55C6D5C705A0634BB06B827CC14E4652 /* DataModelManager.swift in Sources */, - 04E4465ED8E979E33657ECF598BA485D /* DataProvider.swift in Sources */, - CA64E185897D9EF73A60A6699F988EAF /* Errors.swift in Sources */, - 4B7572978A83D2197DDD4EF9BEFB3D91 /* Logger.swift in Sources */, - A719976A746590C76BA27723793C4E2A /* Model.swift in Sources */, - B6E38A58EF75061995F8BBAE83A21AD5 /* ParsingHelpers.swift in Sources */, - 2A1E39CB03470D3BCDBE7A26DBE9D61C /* RocketData-dummy.m in Sources */, - 14FC605D115F0801721F33EA71AE0DDF /* SharedCollectionManager.swift in Sources */, - 7341D11CC7A12744D9BEDD8F1C6FC1A0 /* WeakSharedCollectionArray.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 48F6A56E7BE771FCEF7CB6E468DFE456 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -598,6 +575,29 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EF020E249EA87F821FE9E6868B60E9BF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 67D63338B4F2CF06CA29FD96F4ADCC7B /* BatchDataProviderListener.swift in Sources */, + B43671986A02A7145AE34792632B5380 /* CacheDelegate.swift in Sources */, + 87C90EFFD8F4CFCD1E9A3DA726878AC4 /* ChangeTime.swift in Sources */, + 96E0627D7A861A73FADE5875E471A4CC /* CollectionChange.swift in Sources */, + EDCFF9CC3BB11DA0A100E797217A2ADB /* CollectionDataProvider.swift in Sources */, + CC32AA29A7978CB842B06C84C981B990 /* ConsistencyContextWrapper.swift in Sources */, + 069BFF79A45A3E7A57AD2C615841D723 /* DataHolder.swift in Sources */, + EC0F4B7D126DB104E521A8367459E498 /* DataModelManager.swift in Sources */, + CA319689F019A564EF90862F41E1A139 /* DataProvider.swift in Sources */, + 565A0FE43DDCA7726C273E819F97D885 /* Errors.swift in Sources */, + 9E3B3B6A7AA5DEE492754BCF1422A913 /* Logger.swift in Sources */, + 3EB1AD1433F8D4E20986BC4CAAF7F92B /* Model.swift in Sources */, + 84EFA9F0C67525C9F7714C61587C8E69 /* ParsingHelpers.swift in Sources */, + 12530DC94BD2D6013638A5E6EBD6911E /* RocketData-dummy.m in Sources */, + C59A3E20C223DEF828D8802D28D50B42 /* SharedCollectionManager.swift in Sources */, + 217D4F1ACCE68D99B85B533098C96E48 /* WeakSharedCollectionArray.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -628,38 +628,7 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 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 */ = { + 13E96A645A77DAD1FD4F541F18F5DDBF /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -677,13 +646,18 @@ 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; + 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_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; @@ -691,19 +665,22 @@ 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 = Release; + name = Debug; }; - 44D9132EEDBE16387E8E57418009595A /* Debug */ = { + 20405E1F17DA8745C2D7DFC1637D7585 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = E97958A09AFE83E5E1258ACBDBEF9E13 /* PINCache.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 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; @@ -716,7 +693,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; @@ -725,15 +702,17 @@ VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 5369554F1BFF9BABF425882B8B7B9060 /* Release */ = { + 6F3E919C2D457E0799B4644A633F1766 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = E97958A09AFE83E5E1258ACBDBEF9E13 /* PINCache.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "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"; + DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -746,7 +725,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; @@ -755,15 +734,17 @@ VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 545D8A2EE88FE5B282E244BA127039A1 /* Release */ = { + 7492D528FEDCA4E49E96A7723C51F482 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7C803C8144FD5B9CFFC45BE93D7E10CE /* ConsistencyManager.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "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"; + DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -776,10 +757,43 @@ 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; + 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; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; @@ -787,7 +801,7 @@ }; name = Release; }; - 5E62115DE8C09934BF8D2FE5D15FED1E /* Debug */ = { + 862AF3139CD84E18D34FAF2F43CD0DA6 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -805,17 +819,14 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_TESTABILITY = YES; + CODE_SIGNING_REQUIRED = NO; + 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; @@ -823,78 +834,93 @@ 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; }; - 6E02A72A5916D02C6648B49A8F7469A6 /* Debug */ = { + B1844625D99FFD39BBA09B8647C18DDA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A64A481DC6C53B266328C55771CD3AF2 /* RocketData.xcconfig */; + baseConfigurationReference = C66F570C57AF0FDDB797FC88CB838DF2 /* Pods-SampleApp.release.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 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; - 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"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = RocketData; + 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; 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; }; - 99352E3E7AC1C42591ED7E7DB00C10DE /* Release */ = { + D3F8A641A3C5230D99374F2D5B68FEA9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A64A481DC6C53B266328C55771CD3AF2 /* RocketData.xcconfig */; + baseConfigurationReference = 977E19306D119D7023F94AC3AE17E4DE /* Pods-SampleApp.debug.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "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"; + 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/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"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = RocketData; + 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; 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; }; - ACBC122A5CF53DDE3FDE7F797B6C8A38 /* Release */ = { + DADE78EE9F187306B1A7CFD1189BC2B8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C66F570C57AF0FDDB797FC88CB838DF2 /* Pods-SampleApp.release.xcconfig */; + baseConfigurationReference = 7C803C8144FD5B9CFFC45BE93D7E10CE /* ConsistencyManager.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "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; @@ -903,18 +929,14 @@ 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/ConsistencyManager/ConsistencyManager-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ConsistencyManager/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"; + MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.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; + PRODUCT_NAME = ConsistencyManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_VERSION = 3.0; @@ -924,11 +946,13 @@ }; name = Release; }; - C28F9DE32778CC9B90D46C3FECF7A958 /* Debug */ = { + E8407493AEDB1E44A7FD1647B710F6D3 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 977E19306D119D7023F94AC3AE17E4DE /* Pods-SampleApp.debug.xcconfig */; + baseConfigurationReference = A64A481DC6C53B266328C55771CD3AF2 /* RocketData.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; @@ -937,18 +961,14 @@ 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"; + MODULEMAP_FILE = "Target Support Files/RocketData/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_SampleApp; + PRODUCT_NAME = RocketData; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -965,8 +985,8 @@ 06C6C62FF59F9B1876B43787AE05BBDB /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */ = { isa = XCConfigurationList; buildConfigurations = ( - C28F9DE32778CC9B90D46C3FECF7A958 /* Debug */, - ACBC122A5CF53DDE3FDE7F797B6C8A38 /* Release */, + D3F8A641A3C5230D99374F2D5B68FEA9 /* Debug */, + B1844625D99FFD39BBA09B8647C18DDA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -974,8 +994,8 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 5E62115DE8C09934BF8D2FE5D15FED1E /* Debug */, - 3FA451D268613890FA8A5A03801E11D5 /* Release */, + 13E96A645A77DAD1FD4F541F18F5DDBF /* Debug */, + 862AF3139CD84E18D34FAF2F43CD0DA6 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -983,8 +1003,8 @@ ADADAE9FE27DDC723F1609E84052A924 /* Build configuration list for PBXNativeTarget "RocketData" */ = { isa = XCConfigurationList; buildConfigurations = ( - 6E02A72A5916D02C6648B49A8F7469A6 /* Debug */, - 99352E3E7AC1C42591ED7E7DB00C10DE /* Release */, + E8407493AEDB1E44A7FD1647B710F6D3 /* Debug */, + 7764579AF786E7CF3D72EC5CF423D54C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -992,8 +1012,8 @@ D4860273489427FA3BC8FD45AEB05BD3 /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 087C0E07E694E836BA805FE795DB2A3E /* Debug */, - 545D8A2EE88FE5B282E244BA127039A1 /* Release */, + 7492D528FEDCA4E49E96A7723C51F482 /* Debug */, + DADE78EE9F187306B1A7CFD1189BC2B8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1001,8 +1021,8 @@ EEC88EFEE538B8E091D1CD1A93DA96E8 /* Build configuration list for PBXNativeTarget "PINCache" */ = { isa = XCConfigurationList; buildConfigurations = ( - 44D9132EEDBE16387E8E57418009595A /* Debug */, - 5369554F1BFF9BABF425882B8B7B9060 /* Release */, + 6F3E919C2D457E0799B4644A633F1766 /* Debug */, + 20405E1F17DA8745C2D7DFC1637D7585 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h b/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h index 9f2439b..b87136c 100644 --- a/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h +++ b/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h @@ -1,4 +1,6 @@ +#ifdef __OBJC__ #import +#endif FOUNDATION_EXPORT double ConsistencyManagerVersionNumber; diff --git a/SampleApp/Pods/Target Support Files/PINCache/PINCache-umbrella.h b/SampleApp/Pods/Target Support Files/PINCache/PINCache-umbrella.h index 7bd39a9..9d87866 100644 --- a/SampleApp/Pods/Target Support Files/PINCache/PINCache-umbrella.h +++ b/SampleApp/Pods/Target Support Files/PINCache/PINCache-umbrella.h @@ -1,4 +1,6 @@ +#ifdef __OBJC__ #import +#endif #import "Nullability.h" #import "PINCache.h" 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 21a07b5..bb67759 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,6 +218,8 @@ limitations under the License. + License + Apache License, Version 2.0 Title ConsistencyManager Type @@ -427,6 +429,8 @@ 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 @@ -638,6 +642,8 @@ 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-resources.sh b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-resources.sh index 0a15615..25e9d37 100755 --- a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-resources.sh +++ b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-resources.sh @@ -23,12 +23,6 @@ case "${TARGETED_DEVICE_FAMILY}" in ;; esac -realpath() { - DIRECTORY="$(cd "${1%/*}" && pwd)" - FILENAME="${1##*/}" - echo "$DIRECTORY/$FILENAME" -} - install_resource() { if [[ "$1" = /* ]] ; then @@ -70,7 +64,7 @@ EOM xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") + ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) @@ -93,7 +87,7 @@ then # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) while read line; do - if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + if [[ $line != "${PODS_ROOT}*" ]]; then XCASSET_FILES+=("$line") fi done <<<"$OTHER_XCASSETS" diff --git a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-umbrella.h b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-umbrella.h index d412270..8c6d3be 100644 --- a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-umbrella.h +++ b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-umbrella.h @@ -1,4 +1,6 @@ +#ifdef __OBJC__ #import +#endif FOUNDATION_EXPORT double Pods_SampleAppVersionNumber; 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 5042300..bf366d5 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,3 +1,4 @@ +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 5042300..bf366d5 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,3 +1,4 @@ +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/RocketData/Info.plist b/SampleApp/Pods/Target Support Files/RocketData/Info.plist index 0a12077..b672cd7 100644 --- a/SampleApp/Pods/Target Support Files/RocketData/Info.plist +++ b/SampleApp/Pods/Target Support Files/RocketData/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.0.0 + 4.0.1 CFBundleSignature ???? CFBundleVersion diff --git a/SampleApp/Pods/Target Support Files/RocketData/RocketData-umbrella.h b/SampleApp/Pods/Target Support Files/RocketData/RocketData-umbrella.h index 4c11bc3..6c51a62 100644 --- a/SampleApp/Pods/Target Support Files/RocketData/RocketData-umbrella.h +++ b/SampleApp/Pods/Target Support Files/RocketData/RocketData-umbrella.h @@ -1,4 +1,6 @@ +#ifdef __OBJC__ #import +#endif FOUNDATION_EXPORT double RocketDataVersionNumber; diff --git a/SampleApp/SampleApp.xcodeproj/project.pbxproj b/SampleApp/SampleApp.xcodeproj/project.pbxproj index c6aab01..e03b828 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 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"; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; B600ADE6AABE1F257B77E3F6 /* [CP] Embed Pods Frameworks */ = { diff --git a/SampleApp/SampleApp/Network/NetworkManager.swift b/SampleApp/SampleApp/Network/NetworkManager.swift index a6be746..d5fcb21 100644 --- a/SampleApp/SampleApp/Network/NetworkManager.swift +++ b/SampleApp/SampleApp/Network/NetworkManager.swift @@ -20,7 +20,7 @@ class NetworkManager { static func fetchChats(_ completion: @escaping ([UserModel], NSError?)->Void) { let delay = 1.5 - let delayTime = DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC) + let delayTime = DispatchTime.now() + delay DispatchQueue.main.asyncAfter(deadline: delayTime) { let chats = [ UserModel(id: 1, name: "Nick", online: true), @@ -63,7 +63,7 @@ class NetworkManager { fileprivate static func startRandomUserOnlineNotifications() { let delay = Double(arc4random_uniform(4) + 2) - let delayTime = DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC) + let delayTime = DispatchTime.now() + delay DispatchQueue.main.asyncAfter(deadline: delayTime) { let userId = Int(arc4random_uniform(2) + 1) let online = arc4random_uniform(2) == 0 @@ -80,7 +80,7 @@ class NetworkManager { fileprivate static func startRandomNewMessagesNotifications() { let delay = Double(arc4random_uniform(10) + 2) - let delayTime = DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC) + let delayTime = DispatchTime.now() + delay DispatchQueue.main.asyncAfter(deadline: delayTime) { let userId = Int(arc4random_uniform(2) + 1) let username = userId == 1 ? "Nick" : "Nitesh" From 43952dddf84515c90ceca9be34507009f6be81a2 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Wed, 4 Jan 2017 10:40:26 -0800 Subject: [PATCH 02/33] Updates the ConsistencyManager to 5.0.0 (#54) Replaces the WeakSharedCollectionArray implementation with the new typealias --- Podfile | 4 +- Podfile.lock | 10 +- .../ConsistencyManager.swift | 115 ++- .../DataStructures/Array+Weak.swift | 99 +++ .../DataStructures/ModelChange.swift | 44 ++ .../TypeErasedWeakHolders.swift | 38 + .../DataStructures/WeakArray.swift | 118 +-- .../DataStructures/WeakBox.swift | 23 + .../DataStructures/WeakHolder.swift | 45 ++ .../DataStructures/WeakListenerArray.swift | 152 ---- .../Helpers/CollectionHelpers.swift | 13 - .../Protocols/ConsistencyManagerModel.swift | 6 +- .../ConsistencyManagerUpdatesListener.swift | 36 + Pods/Manifest.lock | 10 +- Pods/Pods.xcodeproj/project.pbxproj | 699 +++++++++--------- .../ConsistencyManager-umbrella.h | 2 + .../ConsistencyManager/Info.plist | 2 +- .../Pods-RocketData-acknowledgements.plist | 2 + .../Pods-RocketData-frameworks.sh | 91 --- .../Pods-RocketData-resources.sh | 10 +- .../Pods-RocketData-umbrella.h | 2 + .../Pods-RocketData.debug.xcconfig | 2 +- .../Pods-RocketData.release.xcconfig | 2 +- ...ods-RocketDataTests-acknowledgements.plist | 2 + .../Pods-RocketDataTests-resources.sh | 10 +- .../Pods-RocketDataTests-umbrella.h | 2 + .../Pods-RocketDataTests.debug.xcconfig | 1 + .../Pods-RocketDataTests.release.xcconfig | 1 + RocketData.podspec | 2 +- RocketData.xcodeproj/project.pbxproj | 4 +- RocketData/WeakSharedCollectionArray.swift | 162 +--- 31 files changed, 851 insertions(+), 858 deletions(-) create mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift create mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelChange.swift create mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift create mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakBox.swift create mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakHolder.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakListenerArray.swift create mode 100644 Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift delete mode 100755 Pods/Target Support Files/Pods-RocketData/Pods-RocketData-frameworks.sh diff --git a/Podfile b/Podfile index 1a6d40e..1fc45a5 100644 --- a/Podfile +++ b/Podfile @@ -3,11 +3,11 @@ use_frameworks! target :'RocketData' do - pod 'ConsistencyManager', '~> 4.0.0' + pod 'ConsistencyManager', '~> 5.0.0' end target :'RocketDataTests' do - pod 'ConsistencyManager', '~> 4.0.0' + pod 'ConsistencyManager', '~> 5.0.0' end # This is necessary to convert the target to swift 3.0 diff --git a/Podfile.lock b/Podfile.lock index 8afd8bc..2ef74fe 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,12 +1,12 @@ PODS: - - ConsistencyManager (4.0.0) + - ConsistencyManager (5.0.0) DEPENDENCIES: - - ConsistencyManager (~> 4.0.0) + - ConsistencyManager (~> 5.0.0) SPEC CHECKSUMS: - ConsistencyManager: 323ee466a5c933973529dfa5baa5cbc238633a67 + ConsistencyManager: 9ef5dbdb10a90d6c5799da67bb6a6a803ac4426f -PODFILE CHECKSUM: 965fc2d0fcedbb7cfd5acaa4e86a619f1085e99e +PODFILE CHECKSUM: d8d2259c702b74fab70a710147bf02a03932374d -COCOAPODS: 1.0.1 +COCOAPODS: 1.1.1 diff --git a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift index 0991ae7..78457e9 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift @@ -94,6 +94,13 @@ open class ConsistencyManager { */ var listeners = [String: WeakListenerArray]() + /** + This is an array of all the model update listeners. + These will get notified whenever anything changes in the Consistency Manager. + See `addModelUpdatesListener(_:)` for more info. + */ + var modelUpdatesListeners = WeakUpdatesListenerArray() + /** We expect fast lookup (regardless of O(n) searches) because listeners are typically view controllers and most apps will not have too many. @@ -179,17 +186,15 @@ open class ConsistencyManager { } dispatchTask { _ in for (key, listenerArray) in self.listeners { - // Let's map the listener array so that we remove any occurance of the listener - var newListeners = listenerArray.map { element in + let newListeners = listenerArray.filter { element in if let element = element { - if element === listener { - return nil - } + // Keep the element if it is not the current listener + return element !== listener + } else { + // Drop all nil values + return false } - return element } - // Do some cleanup - _ = newListeners.prune() self.listeners[key] = newListeners } } @@ -310,9 +315,13 @@ open class ConsistencyManager { */ open func updateModel(_ model: ConsistencyManagerModel, context: Any? = nil) { dispatchTask { cancelled in - let tuple = self.childrenAndListenersForModel(model) - let optionalModelUpdates = CollectionHelpers.optionalValueDictionaryFromDictionary(tuple.modelUpdates) - self.updateListeners(tuple.listeners, withUpdatedModels: optionalModelUpdates, context: context, cancelled: cancelled) + let (modelUpdates, listeners) = self.childrenAndListenersForModel(model) + self.updateListeners( + listeners, + with: modelUpdates, + context: context, + originalModel: model, + cancelled: cancelled) } } @@ -346,8 +355,13 @@ open class ConsistencyManager { }() // A simple update dictionary. We're just deleting a model with this id. Nothing else. - let updatesDictionary: [String: [ConsistencyManagerModel]?] = [ id: nil ] - self.updateListeners(listenersArray, withUpdatedModels: updatesDictionary, context: context, cancelled: cancelled) + let updatesDictionary = [id: ModelChange.deleted] + self.updateListeners( + listenersArray, + with: updatesDictionary, + context: context, + originalModel: model, + cancelled: cancelled) } else { DispatchQueue.main.async { self.delegate?.consistencyManager(self, failedWithCriticalError: CriticalError.DeleteIDFailure.rawValue) @@ -382,6 +396,38 @@ open class ConsistencyManager { } } + /** + Adds an update listener to the consistency manager. + This listener will get notified of ALL changes posted to the consistency manager. + This method must be called on the main thread. + + ## Use Case + + This is useful if you want to filter on changes to the consistency manager. For instance, you may want to listen to all added models of a certain class. + If a model is added, you could add it to an existing array (similar to predicates). + Or if you have an ID for a model that isn't in the system yet, you can listen to changes on it. + + ## Performance + + The `ConsistencyManagerUpdatesListener` methods are called on the **main thread** for every model updated in the system. + It's recommended to do as minimal processing as possible here so you don't block the main thread. + It's also recommended to have a small number of global listeners. + */ + open func addModelUpdatesListener(_ updatesListener: ConsistencyManagerUpdatesListener) { + modelUpdatesListeners.append(updatesListener) + } + + /** + Removes an update listener to the consistency manager. + This method must be called on the main thread. + You shouldn't need to call this in general since listeners are removed whenever the object is deallocated. + */ + open func removeModelUpdatesListener(_ updatesListener: ConsistencyManagerUpdatesListener) { + modelUpdatesListeners = modelUpdatesListeners.filter { currentListener in + currentListener !== updatesListener + } + } + /** This will remove any unnecessary memory held by the consistency manager. This is called automatically whenever there is a memory warning, so usually you should not need to ever call this method. @@ -489,8 +535,8 @@ open class ConsistencyManager { If the application is not using projections, it will always just contain one model. It also has an array of listeners that need to be updated because of this model change. */ - private func childrenAndListenersForModel(_ model: ConsistencyManagerModel) -> (modelUpdates: [String: [ConsistencyManagerModel]], listeners: [ConsistencyManagerListener]) { - let updates = DictionaryHolder() + private func childrenAndListenersForModel(_ model: ConsistencyManagerModel) -> (modelUpdates: [String: ModelChange], listeners: [ConsistencyManagerListener]) { + let updates = DictionaryHolder() let listenersArray = ArrayHolder() childrenAndListenersForModel(model, modelUpdates: updates, listenersArray: listenersArray) return (updates.dictionary, listenersArray.array) @@ -502,14 +548,14 @@ open class ConsistencyManager { I tried doing this with inout instead of making it truly functional, but turns out that inout doesn't work very well. Changing to inout helped me about 10%, but after changing to a DictionaryHolder and ArrayHolder, performance was improved ~50x. */ - private func childrenAndListenersForModel(_ model: ConsistencyManagerModel, modelUpdates: DictionaryHolder, listenersArray: ArrayHolder) { + private func childrenAndListenersForModel(_ model: ConsistencyManagerModel, modelUpdates: DictionaryHolder, listenersArray: ArrayHolder) { if let id = model.modelIdentifier { // Here, we want to store a list of all the projections for a model // Normally, this will just be one element as all models with the same id have the same projection // However, if we have multiple versions of the same model, we want to make sure they are all used to merge a new model let projections: [ConsistencyManagerModel] - if var currentUpdates = modelUpdates.dictionary[id] { + if let currentChanges = modelUpdates.dictionary[id], case .updated(var currentUpdates) = currentChanges { let alreadyContainsProjection = currentUpdates.contains { currentProjection in return currentProjection.projectionIdentifier == model.projectionIdentifier } @@ -522,7 +568,7 @@ open class ConsistencyManager { // If we don't have any models from this ID yet, we should just add the new model projections = [model] } - modelUpdates.dictionary[id] = projections + modelUpdates.dictionary[id] = .updated(projections) // Here, we're going to take all the listeners to this model and add it to our listeners array // We're not going to prune the listeners array because of performance reasons (we want updates to go fast) @@ -569,10 +615,14 @@ open class ConsistencyManager { In the case of this listener being in a paused state, the function updates the listener's PausedListener struct accordingly, without notifying the delegate. */ - private func updateListeners(_ listeners: [ConsistencyManagerListener], withUpdatedModels updatedModels: [String: [ConsistencyManagerModel]?], context: Any?, cancelled: ()->Bool) { + private func updateListeners(_ listeners: [ConsistencyManagerListener], + with updatedModels: [String: ModelChange], + context: Any?, + originalModel: ConsistencyManagerModel, + cancelled: () -> Bool) { var currentModels: [(listener: ConsistencyManagerListener, currentModel: ConsistencyManagerModel?)] = [] - + // In one dispatch_sync, we'll get all of the current models for each listener DispatchQueue.main.sync { currentModels = listeners.map { listener in @@ -632,6 +682,13 @@ open class ConsistencyManager { listener.modelUpdated(newModel, updates: modelUpdates, context: context) } } + self.modelUpdatesListeners.forEach { updatesListener in + updatesListener?.consistencyManager( + self, + updatedModel: originalModel, + changes: updatedModels, + context: context) + } } } @@ -641,16 +698,15 @@ open class ConsistencyManager { This function uses the map functionality of the models to generate a new model given a list of modelUpdates. It returns a new model, a list of changes (ModelUpdates) and a list of any new models which were not contained in the old model. */ - private func updatedModelFromOriginalModel(_ model: ConsistencyManagerModel, updatedModels: [String: [ConsistencyManagerModel]?], context: Any?) -> (model: ConsistencyManagerModel?, updates: ModelUpdates, newModels: [ConsistencyManagerModel]) { + private func updatedModelFromOriginalModel(_ model: ConsistencyManagerModel, updatedModels: [String: ModelChange], context: Any?) -> (model: ConsistencyManagerModel?, updates: ModelUpdates, newModels: [ConsistencyManagerModel]) { if let id = model.modelIdentifier { - if let replacementModel = updatedModels[id] { + if let modelChange = updatedModels[id] { // The id matches, so we should replace this model with a different model - // Important: replacementModel could actually be nil here. This is because modelUpdates[id] is actually type: ConsistencyManagerModel??. - // So, the let statement only unwraps it once. This is a good thing since if it is nil, we want to delete the model. // At the point, we know that this is an id we care about. Let's see if it's an update or a delete. - if let replacementModel = replacementModel { + switch modelChange { + case .updated(let replacementModels): // It's an update. Let's apply the changes. - let mergedReplacementModel = mergedModelFromModel(model, withUpdates: replacementModel) + let mergedReplacementModel = mergedModelFromModel(model, withUpdates: replacementModels) if !mergedReplacementModel.isEqualToModel(model) { // We've found something to replace, and there's actually an update delegate?.consistencyManager(self, willReplaceModel: model, withModel: mergedReplacementModel, context: context) @@ -662,7 +718,7 @@ open class ConsistencyManager { // We've found there's an update here, but there's no actual change. So let's short curcuit here so we don't waste time recursing. return (model, ModelUpdates(changedModelIds: [], deletedModelIds: []), []) } - } else { + case .deleted: // It was a delete. // nil was an update, so returning it in updates return (nil, ModelUpdates(changedModelIds: [], deletedModelIds: [id]), []) @@ -709,14 +765,13 @@ open class ConsistencyManager { It does not include models which have been deleted. It's useful for detecting the full set of updates for an UpdateModel. */ - private func changedSubmodelIdsFromModel(_ model: ConsistencyManagerModel, modelUpdates: [String: [ConsistencyManagerModel]?]) -> Set { + private func changedSubmodelIdsFromModel(_ model: ConsistencyManagerModel, modelUpdates: [String: ModelChange]) -> Set { var changedModels = Set() model.forEach { child in if let id = child.modelIdentifier, let update = modelUpdates[id] { - // Update is still an optional because the value of model updates is optional // We can ignore deletes because we are only looking for updated models. // Here, we should merge and check for equality to see if anything has actually changed. - if let update = update, !self.mergedModelFromModel(child, withUpdates: update).isEqualToModel(child) { + if case .updated(let models) = update, !self.mergedModelFromModel(child, withUpdates: models).isEqualToModel(child) { // There's another update here changedModels.insert(id) } diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift new file mode 100644 index 0000000..70f6d79 --- /dev/null +++ b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift @@ -0,0 +1,99 @@ +// © 2016 LinkedIn Corp. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +import Foundation + +extension Array where Element: WeakHolder { + /** + This method iterates through the array and removes any element which is nil. + It also returns an array of nonoptional values for convenience. + + This method runs in O(n), so you should only call this method every time you need it. You should only call it once. + */ + public mutating func prune() -> [Element.Element] { + var nonOptionalElements: [Element.Element] = [] + self = self.filter { (element: Element.Element?) in + if let element = element { + nonOptionalElements.append(element) + return true + } else { + return false + } + } + return nonOptionalElements + } + + /** + This defines a map function which returns an array of WeakHolder. + However, the `transform` function converts the inner elements (instead of the outer elements). + This allows you to write code like: + ``` + var array = [WeakStruct(element: UIViewController())]() + let viewArray: [WeakStruct] = array.map { (viewController: UIViewController?) in + return viewController?.view + } + ``` + + Note how you need to specify the types of the map so it doesn't conflict with the default map. + It will not prune out nil values so the resulting array will always maintain count. + */ + public func map(_ transform: (Element.Element?) throws -> T?) rethrows -> [U] where U.Element == T { + return try map { (weakHolder: Element) in + let newElement = try transform(weakHolder.element) + return U.init(element: newElement) + } + } + + /** + This defines a flatMap function which returns an array of WeakHolder. + However, the `transform` function converts the inner elements (instead of the outer elements). + + IMPORTANT: This function automatically runs a `prune()` as it goes as you may expect with `flatMap`. + It will call the transform function on any inner element (including nil), but will filter out all nils in the final result. + + This allows you to write code like: + ``` + var array = [WeakStruct(element: UIViewController())]() + let viewArray: [WeakStruct] = array.flatMap { (viewController: UIViewController) in + if viewController?.view.alpha == 0 { + return nil + } + return viewController?.view + } + ``` + + Note how you need to specify the types of the flatMap so it doesn't conflict with the default flatMap. + */ + public func flatMap(_ transform: (Element.Element?) throws -> T?) rethrows -> [U] where U.Element == T { + return try flatMap { (weakHolder: Element) in + let newElement = try transform(weakHolder.element) + return newElement.flatMap(U.init) + } + } + + /** + This defines a filter function which returns an array of WeakHolder. + However, the `isIncluded` function converts the inner elements (instead of the outer elements). + + This allows you to write code like: + ``` + var array = [WeakStruct(element: UIViewController())]() + let viewArray: [WeakStruct] = array.filter { (viewController: UIViewController?) in + return (viewController?.view.alpha == 0) ?? false + } + ``` + + Note how you need to specify the types of the flatMap so it doesn't conflict with the default flatMap. + */ + public func filter(_ isIncluded: (Element.Element?) throws -> Bool) rethrows -> [Element] { + return try filter { (weakHolder: Element) in + return try isIncluded(weakHolder.element) + } + } +} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelChange.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelChange.swift new file mode 100644 index 0000000..665a57e --- /dev/null +++ b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelChange.swift @@ -0,0 +1,44 @@ +// © 2016 LinkedIn Corp. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +import Foundation + +/** + This class is used to show which child models have changed. This object is usually in a dictionary: `[String: ModelChange]`. + The strings represent IDs and it shows what's changed in this ID. Either the ID has been deleted or updated. + If it's been updated, there are potentially several models that have updated if you are using projections. + */ +public enum ModelChange: Equatable { + /** + This indicates a model has been updated and lists the new models. + If you are using projections, there may be multiple models that represent this change. + Otherwise, there will just be one model here. + */ + case updated([ConsistencyManagerModel]) + /** + This indicates a model has been deleted. + */ + case deleted + + public static func ==(lhs: ModelChange, rhs: ModelChange) -> Bool { + switch (lhs, rhs) { + case (.updated(let l), .updated(let r)): + guard l.count == r.count else { + return false + } + return zip(l, r).reduce(true) { isEqual, tuple in + return isEqual && tuple.0.isEqualToModel(tuple.1) + } + case (.deleted, .deleted): + return true + default: + return false + } + } +} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift new file mode 100644 index 0000000..b70bd03 --- /dev/null +++ b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift @@ -0,0 +1,38 @@ +// © 2016 LinkedIn Corp. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +import Foundation + +/** + This defines a WeakHolder which specifically holds a ConsistencyManagerListener. + This is useful because WeakBox is illegal in Swift. You need a concrete type like this one. + */ +public struct WeakListenerBox: WeakHolder { + + // Sadly, we need to declare this because by default, it's internal + public init(element: ConsistencyManagerListener?) { + self.element = element + } + + public weak var element: ConsistencyManagerListener? +} + +/** + This defines a WeakHolder which specifically holds a ConsistencyManagerUpdatesListener. + This is useful because WeakBox is illegal in Swift. You need a concrete type like this one. + */ +public struct WeakUpdatesListenerBox: WeakHolder { + + // Sadly, we need to declare this because by default, it's internal + public init(element: ConsistencyManagerUpdatesListener?) { + self.element = element + } + + public weak var element: ConsistencyManagerUpdatesListener? +} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakArray.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakArray.swift index 7708e0f..8d4e151 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakArray.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakArray.swift @@ -9,24 +9,42 @@ import Foundation +/** + This typealias allows you to create a `WeakArray` with any class type. + e.g. + `var weakArray = WeakArray()` + */ +public typealias WeakArray = AnyWeakArray> + +/** + This typealias allows you to create a `WeakArray` with ConsistencyManagerListener. + */ +public typealias WeakListenerArray = AnyWeakArray + +/** + This typealias allows you to create a `WeakArray` with ConsistencyManagerUpdatesListener. + */ +public typealias WeakUpdatesListenerArray = AnyWeakArray /** - This class defines an array which doesn't hold strong references to its elements. If an element in the array gets dealloced at some point, accessing that element will just return nil. + This class defines an array which doesn't hold strong references to its elements. + If an element in the array gets dealloced at some point, accessing that element will just return nil. + It takes advantage of out Array+Weak extension, so all the functions here are just pass throughs to the Array class. You cannot put structs into the WeakArray because structs cannot be declared with weak. You can only put classes into the array. KNOWN BUGS You can't create a WeakArray. This is because of an Apple bug: https://bugs.swift.org/browse/SR-1176. + So, instead of this, it's recommended to create your own wrapper class and create a typealias (as seen above). */ -// Here I want to do this: WeakArray, but that doesn't work. So this is a decent work around. -public struct WeakArray: ExpressibleByArrayLiteral { +public struct AnyWeakArray: ExpressibleByArrayLiteral { // MARK: Internal /// The internal data is an array of closures which return weak T's - fileprivate var data: [() -> T?] + fileprivate var data: [T] // MARK: Initializers @@ -41,21 +59,25 @@ public struct WeakArray: ExpressibleByArrayLiteral { Creates an array with a certain capacity. All elements in the array will be nil. */ public init(count: Int) { - data = Array<() -> T?>(repeating: { - return nil - }, count: count) + data = Array(repeating: T(element: nil), count: count) } /** Array literal initializer. Allows you to initialize a WeakArray with array notation. */ - public init(arrayLiteral elements: T?...) { - data = [] - for element in elements { - data.append(weakClosureWithValue(element)) + public init(arrayLiteral elements: T.Element?...) { + data = elements.map { element in + return T.init(element: element) } } + /** + Creates an array with the inner type `[T]` where T is a WeakHolder. + */ + public init(_ data: [T]) { + self.data = data + } + // MARK: Public Properties /// How many elements the array stores @@ -68,8 +90,8 @@ public struct WeakArray: ExpressibleByArrayLiteral { /** Append an element to the array. */ - public mutating func append(_ element: T?) { - data.append(weakClosureWithValue(element)) + public mutating func append(_ element: T.Element?) { + data.append(T.init(element: element)) } /** @@ -77,79 +99,75 @@ public struct WeakArray: ExpressibleByArrayLiteral { It also returns an array of nonoptional values for convenience. This method runs in O(n), so you should only call this method every time you need it. You should only call it once. - i.e. Don't do this: - for _ in array.prune() */ - public mutating func prune() -> [T] { - var nonOptionalElements = [T]() - data = data.filter { closure in - let value = closure() - if let value = value { - nonOptionalElements.append(value) - return true - } else { - return false - } - } - return nonOptionalElements + public mutating func prune() -> [T.Element] { + return data.prune() } /** - This function is similar to the map function on Array. It takes a function that maps T to U and returns a WeakArray of the same length with this function applied to each element. + This function is similar to the map function on Array. + It takes a function that maps T to U and returns a WeakArray of the same length with this function applied to each element. + It does not prune any nil elements as part of this map so the resulting count will be equal to the current count. */ - public func map(_ function: (T?) -> U?) -> WeakArray { - var newArray = WeakArray() - for value in self { - let newValue = function(value) - newArray.append(newValue) - } - return newArray + public func map(_ transform: (T.Element?) throws -> U.Element?) rethrows -> AnyWeakArray { + let newArray: [U] = try data.map(transform) + return AnyWeakArray(newArray) } - // MARK: Private Methods + /** + This function is similar to the flatMap function on Array. + It takes a function that maps T to U? and returns a WeakArray with this function applied to each element. + It automatically prunes any nil elements as part of this flatMap and removes them. + */ + public func flatMap(_ transform: (T.Element?) throws -> U.Element?) rethrows -> AnyWeakArray { + let newArray: [U] = try data.flatMap(transform) + return AnyWeakArray(newArray) + } - fileprivate func weakClosureWithValue(_ object: T?) -> () -> T? { - return { [weak object] in - return object - } + /** + This function is similar to the filter function on Array. + The `isIncluded` closure simply returns whether you want the element in the array. + */ + public func filter(_ isIncluded: (T.Element?) throws -> Bool) rethrows -> AnyWeakArray { + let newArray: [T] = try data.filter(isIncluded) + return AnyWeakArray(newArray) } } // MARK: MutableCollectionType Implementation -extension WeakArray: MutableCollection { +extension AnyWeakArray: MutableCollection { // Required by SequenceType - public func makeIterator() -> IndexingIterator> { + public func makeIterator() -> IndexingIterator> { // Rather than implement our own generator, let's take advantage of the generator provided by IndexingGenerator - return IndexingIterator>(_elements: self) + return IndexingIterator>(_elements: self) } // Required by _CollectionType public func index(after i: Int) -> Int { - return i + 1 + return data.index(after: i) } // Required by _CollectionType public var endIndex: Int { - return self.count + return data.endIndex } // Required by _CollectionType public var startIndex: Int { - return 0 + return data.startIndex } /** Getter and setter array */ - public subscript(index: Int) -> T? { + public subscript(index: Int) -> T.Element? { get { - let closure = data[index] - return closure() + return data[index].element } set { - data[index] = weakClosureWithValue(newValue) + data[index] = T.init(element: newValue) } } } diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakBox.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakBox.swift new file mode 100644 index 0000000..8753665 --- /dev/null +++ b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakBox.swift @@ -0,0 +1,23 @@ +// © 2016 LinkedIn Corp. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +import Foundation + +/** + This is a generic implementation of `WeakHolder` which we use the in `WeakArray` class. + */ +public struct WeakBox: WeakHolder { + + // Sadly, we need to declare this because by default, it's internal + public init(element: T?) { + self.element = element + } + + public weak var element: T? +} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakHolder.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakHolder.swift new file mode 100644 index 0000000..6ef79d1 --- /dev/null +++ b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakHolder.swift @@ -0,0 +1,45 @@ +// © 2016 LinkedIn Corp. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +import Foundation + +/** + This protocol defines a box for an element. + It's useful because we can declare both generic types (e.g. `WeakBox`) and concrete types (e.g. `WeakProtocolBox`). + */ +public protocol WeakHolder { + + associatedtype Element + + /** + A getter for the inner element. Likely, this var will be labeled as weak in your implementation. + */ + var element: Element? { get } + + /** + An initializer for the `WeakHolder`. + This is useful to implement `map`. + */ + init(element: Element?) + + /** + A map function which returns another `WeakHolder`. This allows us to treat `WeakHolder` as a monad and create other `WeakHolders` from the current one. + You do not need to implement this as it is implemented in the extension. + */ + func map(_ transform: (Element) throws -> T) rethrows -> U where U.Element == T +} + +extension WeakHolder { + public func map(_ transform: (Element) throws -> T) rethrows -> U where U.Element == T { + // First, we want to create a new element from the current element using the transform function provided + let newElement = try element.flatMap(transform) + // Then, we simply initialzed U with the new element. + return U.init(element: newElement) + } +} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakListenerArray.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakListenerArray.swift deleted file mode 100644 index 54020dc..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakListenerArray.swift +++ /dev/null @@ -1,152 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - - -/** - This is a temporary workaround to an Apple bug. We can't specify a WeakArray, so I have to copy-paste it for a specific type. - - https://bugs.swift.org/browse/SR-1176 - */ -public struct WeakListenerArray: ExpressibleByArrayLiteral { - - // MARK: Internal - - /// The internal data is an array of closures which return weak T's - fileprivate var data: [() -> ConsistencyManagerListener?] - - // MARK: Initializers - - /** - Creates an empty array - */ - public init() { - data = [] - } - - /** - Creates an array with a certain capacity. All elements in the array will be nil. - */ - public init(count: Int) { - data = Array<() -> ConsistencyManagerListener?>(repeating: { - return nil - }, count: count) - } - - /** - Array literal initializer. Allows you to initialize a WeakArray with array notation. - */ - public init(arrayLiteral elements: ConsistencyManagerListener?...) { - data = [] - for element in elements { - data.append(weakClosureWithValue(element)) - } - } - - // MARK: Public Properties - - /// How many elements the Array stores - public var count: Int { - return data.count - } - - // MARK: Public Methods - - /** - Append an element to the array. - */ - public mutating func append(_ element: ConsistencyManagerListener?) { - data.append(weakClosureWithValue(element)) - } - - /** - This method iterates through the array and removes any element which is nil. - It also returns an array of nonoptional values for convenience. - - This method runs in O(n), so you should only call this method every time you need it. You should only call it once. - i.e. Don't do this: - for _ in array.prune() - */ - public mutating func prune() -> [ConsistencyManagerListener] { - var nonOptionalElements = [ConsistencyManagerListener]() - data = data.filter { closure in - let value = closure() - if let value = value { - nonOptionalElements.append(value) - return true - } else { - return false - } - } - return nonOptionalElements - } - - public func map(_ function: (ConsistencyManagerListener?) -> ConsistencyManagerListener?) -> WeakListenerArray { - var newArray = WeakListenerArray() - // TODO: Fix this once apple fixes their bug - // This currently crashes with EXC_BAD_ACCESS - // for value in self { - // let newValue = function(value) - // newArray.append(newValue) - // } - for closure in data { - let newValue = function(closure()) - newArray.append(newValue) - } - return newArray - } - - // MARK: Private Methods - - fileprivate func weakClosureWithValue(_ object: ConsistencyManagerListener?) -> () -> ConsistencyManagerListener? { - return { [weak object] in - return object - } - } -} - -// MARK: MutableCollectionType Implementation - -extension WeakListenerArray: MutableCollection { - - // Required by SequenceType - public func makeIterator() -> IndexingIterator { - // Rather than implement our own generator, let's take advantage of the generator provided by IndexingGenerator - return IndexingIterator(_elements: self) - } - - // Required by _CollectionType - public func index(after i: Int) -> Int { - return i + 1 - } - - // Required by _CollectionType - public var endIndex: Int { - return self.count - } - - // Required by _CollectionType - public var startIndex: Int { - return 0 - } - - /** - Getter and setter array - */ - public subscript(index: Int) -> ConsistencyManagerListener? { - get { - let closure = data[index] - return closure() - } - set { - data[index] = weakClosureWithValue(newValue) - } - } -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/Helpers/CollectionHelpers.swift b/Pods/ConsistencyManager/ConsistencyManager/Helpers/CollectionHelpers.swift index d2dc5bd..7ceebfa 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/Helpers/CollectionHelpers.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/Helpers/CollectionHelpers.swift @@ -9,19 +9,6 @@ import Foundation -class CollectionHelpers { - /** - This function essentially does a cast, but this cast isn't allowed in swift so we have to manually create a new dictionary. - */ - class func optionalValueDictionaryFromDictionary(_ dictionary: [A: B]) -> [A: B?] { - var newDictionary = [A: B?]() - for (key, value) in dictionary { - newDictionary[key] = value - } - return newDictionary - } -} - /** This class creates a reference counted dictionary instead of doing structs. It's used for a specific part of the consistency manager for performance reasons. diff --git a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift b/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift index 41000a8..921a3ce 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift @@ -41,7 +41,7 @@ class Person: ConsistencyManagerModel { return Person(id: id, name: name, currentLocation: newCurrentLocation, homeTown: newHomeTown!) } - func forEach(function: ConsistencyManagerModel -> ()) { + func forEach(function: ConsistencyManagerModel -> Void) { if let currentLocation = currentLocation { function(currentLocation) } @@ -77,7 +77,7 @@ class Location: ConsistencyManagerModel { return self } - func forEach(function: ConsistencyManagerModel -> ()) { + func forEach(function: ConsistencyManagerModel -> Void) { // Do nothing. Nothing to iterate over. } @@ -140,7 +140,7 @@ public protocol ConsistencyManagerModel { For instance: extension ConsistencyManagerModel { - func forEach(function: ConsistencyManagerModel -> ()) { + func forEach(function: ConsistencyManagerModel -> Void) { _ = map() { model in function(model) return model diff --git a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift b/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift new file mode 100644 index 0000000..507a379 --- /dev/null +++ b/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift @@ -0,0 +1,36 @@ +// © 2016 LinkedIn Corp. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +import Foundation + +/** + This protocol allows a class to listen to ALL changes to the consistency manager. + */ +public protocol ConsistencyManagerUpdatesListener: class { + /** + Called whenever there is any change to the consistency manager. + This method is run on the main thread. If you have any extensive processing, it's highly recommended to do this on a background thread + since this will be called for every single consistency update. + + This method passes back a list of all the updates made as a result of this change. + It is a dictionary of `[modelIdentifier: change]`. All of the model's children will be in this dictionary if it was an update. + + - parameter consistencyManager: The consistency manager which has received the change. + - parameter model: The model which has been updated (NOTE: This model may have been deleted). + To check if it has been deleted, check `changes[model.modelIdentifier] == .deleted`. + - parameter changes: This is a flattened representation of all the children of the model that was updated. + It is a dictionary from ID to model. If it is nil, it has been deleted. + The value is an array because multiple models with the same ID may have been updated. This only applies if you're using projections. + - parameter context: The context passed in with this update + */ + func consistencyManager(_ consistencyManager: ConsistencyManager, + updatedModel model: ConsistencyManagerModel, + changes: [String: ModelChange], + context: Any?) +} diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 8afd8bc..2ef74fe 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,12 +1,12 @@ PODS: - - ConsistencyManager (4.0.0) + - ConsistencyManager (5.0.0) DEPENDENCIES: - - ConsistencyManager (~> 4.0.0) + - ConsistencyManager (~> 5.0.0) SPEC CHECKSUMS: - ConsistencyManager: 323ee466a5c933973529dfa5baa5cbc238633a67 + ConsistencyManager: 9ef5dbdb10a90d6c5799da67bb6a6a803ac4426f -PODFILE CHECKSUM: 965fc2d0fcedbb7cfd5acaa4e86a619f1085e99e +PODFILE CHECKSUM: d8d2259c702b74fab70a710147bf02a03932374d -COCOAPODS: 1.0.1 +COCOAPODS: 1.1.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index c6d715a..2fdf2fb 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,173 +7,202 @@ objects = { /* Begin PBXBuildFile section */ - 1906A7F598DC1209C1539185AC70123B /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFAF7A3F70884178FAD542B42E9C7374 /* WeakArray.swift */; }; - 203138B52471F3320B39E0A0F5F74916 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A2A6FF208CEC4C2861F1E9D42D651453 /* Foundation.framework */; }; - 22F81B5D194CF29A901A2A6399AF7EB3 /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 304980AC492579B69D4827369DCA19F3 /* BatchUpdateModel.swift */; }; - 2A51D87889023F52D63559B9624B15D6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A2A6FF208CEC4C2861F1E9D42D651453 /* Foundation.framework */; }; - 2CE93941851BA6564027344639ADE240 /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1F4E101C4FF06BAE52D4EB7710E9CB0 /* CollectionHelpers.swift */; }; - 466D55718EE2E044090AA5304AFB7427 /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF2897E86ACFC66B482A811F822B961 /* BatchListener.swift */; }; - 4839811DF1BEEDBEECD5B9DF09E75F63 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437143A8805F028E09A65AB320902072 /* ModelUpdates.swift */; }; - 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 = 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 = 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 = 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 */; }; + 001DCC828873428A98B99A0BC22CE1F2 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */; }; + 1BC7168C72400E3F7F28459197DD79FD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */; }; + 1D1C8F94417AB6BC3998EACC64C39007 /* Pods-RocketDataTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F57EB9142715F7D70F6B909F8A1CC5 /* Pods-RocketDataTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2616F72C653C085A30DD4BCDE48A75BC /* TypeErasedWeakHolders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */; }; + 263707EA21F73AFEB8A3CC633DB6997A /* WeakHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */; }; + 283A9AE0309CB9B25265B87DC9E6AD2B /* WeakBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */; }; + 36AC1E4F6E829EFF7EED533BA42B54DC /* Array+Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37F300E88B2CA90D3A3D10A6870FB9C6 /* Array+Weak.swift */; }; + 391F3198E7E11104DD405EC50F5B293F /* Pods-RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 271164874EA521DBF3A5E42882CA5E8C /* Pods-RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B69F7A493CC6D9BA7AAE82C3AB4EF09 /* ModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF654149B647AF0EFBE4E06EB29AE85D /* ModelChange.swift */; }; + 3BE1A1BCBAE94DAADADC1570D192E651 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */; }; + 3ECAC56FEBB145EFE4FE9C22AB3D8BB5 /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0B69CEEA4F9C2BE9B0D9A4D90F7A922 /* ConsistencyManager-dummy.m */; }; + 4479A3765D16BC2D340B5057405C9143 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9794326D85F76046482EA80D8AA39BB9 /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4B065B337B479561160E13B01EAEA0A1 /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */; }; + 631B06351A176767C9F4BFE43D20F9DF /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15CE41697344C2A35DFC834791C3786 /* ConsistencyManagerModel.swift */; }; + 7577D28FE99166790C3295B1D76CB27B /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05A0C2047B975238584455CCEB992E58 /* ConsistencyManagerListener.swift */; }; + 822307BE07734344679FA644970CF8CD /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = B05401DC4854691A4F1241428F9578FE /* BatchListener.swift */; }; + 825E2EC9D8B391C8787D9CFD444575BF /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */; }; + 9A0CD6C72C3C7D3CE1CE428C24690114 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9F2FE8BE50356D478F128EF00B1E04 /* ModelUpdates.swift */; }; + B71C08B6AADC997123138F3B1D2E614D /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4488732A640B0CA0563771E757B590F7 /* ConsistencyManagerDelegate.swift */; }; + B8DEFAF01FACCB06C95FE46DC24E5773 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EC994CDC2D681BA26389F78A7E4B325 /* UIKit.framework */; }; + C3727635DE8E2F171A85164EBD202BEB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */; }; + C4077D53936DFBC6E42745A1E9A70AC0 /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */; }; + D19F59FE7170377F2C74E93B2D99BFE2 /* ConsistencyManagerUpdatesListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F07F9958F8B878BAFFD46112074114F /* ConsistencyManagerUpdatesListener.swift */; }; + D76F64AC6718611B6D42CE69B17B2DB9 /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17F50305EFF1336458DB721E18C3AEC5 /* CollectionHelpers.swift */; }; + E11D211087E861CA3756E3F6C36C1F84 /* Pods-RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 089BD4D8DE576134661A5BBA93EC9964 /* Pods-RocketData-dummy.m */; }; + E665318A7006E2C694EC9A58B2306E0E /* Pods-RocketDataTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7735ED8DE53508944981B891E90C0EFE /* Pods-RocketDataTests-dummy.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0BDDB8CAD6B21B887AF0AF3366E4900F /* PBXContainerItemProxy */ = { + 7BCAA72880A6EA07AFCC7B1A07168399 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = BF143FCB0BDDCCE19A427004B80418A1; + remoteGlobalIDString = CD959F3131ECC7808D5179105D8A95E2; remoteInfo = ConsistencyManager; }; - 2E84C10D2FD7E7413907FC3F6A662112 /* PBXContainerItemProxy */ = { + B0AC03400DFBFBBE1BCAA238BD5EF07A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = BF143FCB0BDDCCE19A427004B80418A1; + remoteGlobalIDString = CD959F3131ECC7808D5179105D8A95E2; remoteInfo = ConsistencyManager; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 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 = ""; }; - 304980AC492579B69D4827369DCA19F3 /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; 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 = ""; }; - 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 = ""; }; - 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; }; - 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; }; - 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 = ""; }; - 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 = ""; }; + 05A0C2047B975238584455CCEB992E58 /* ConsistencyManagerListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerListener.swift; sourceTree = ""; }; + 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 = ""; }; + 1306A5E433D9AAC7FFC59697BD9C9DB4 /* Pods-RocketDataTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-acknowledgements.plist"; sourceTree = ""; }; + 17F50305EFF1336458DB721E18C3AEC5 /* CollectionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionHelpers.swift; path = ConsistencyManager/Helpers/CollectionHelpers.swift; 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 = ""; }; + 2F07F9958F8B878BAFFD46112074114F /* ConsistencyManagerUpdatesListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerUpdatesListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift; sourceTree = ""; }; + 34BC35DF87360F2E7CB7A5FF8B70C85D /* Pods-RocketDataTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.debug.xcconfig"; sourceTree = ""; }; + 37F300E88B2CA90D3A3D10A6870FB9C6 /* Array+Weak.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Weak.swift"; path = "ConsistencyManager/DataStructures/Array+Weak.swift"; sourceTree = ""; }; + 3DEFF9A7C7AEE462D1ECECF5565903F6 /* Pods-RocketData-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketData-acknowledgements.markdown"; sourceTree = ""; }; + 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; + 4488732A640B0CA0563771E757B590F7 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; + 5063F94E4E75CFA2BAE770E1AA393FBE /* Pods-RocketData.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.release.xcconfig"; sourceTree = ""; }; + 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; sourceTree = ""; }; + 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 66C2744F8A608DA03871DB23D72F53EB /* Pods-RocketDataTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-RocketDataTests.modulemap"; sourceTree = ""; }; + 6C7CAE382E5C46A01A4E6988A98B7E20 /* Pods-RocketDataTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-frameworks.sh"; sourceTree = ""; }; + 727B3E92C87FE914E054AD495E3BAFA8 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; 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 = ""; }; + 7EC994CDC2D681BA26389F78A7E4B325 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TypeErasedWeakHolders.swift; path = ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift; sourceTree = ""; }; + 82F57EB9142715F7D70F6B909F8A1CC5 /* Pods-RocketDataTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketDataTests-umbrella.h"; sourceTree = ""; }; + 85F646650D2CB8D60E0A9B610A5C3CDB /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ConsistencyManager.framework; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D42BDBAB374E100C005BBAD7ACEDF24 /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9794326D85F76046482EA80D8AA39BB9 /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; + 9E9F2FE8BE50356D478F128EF00B1E04 /* ModelUpdates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelUpdates.swift; path = ConsistencyManager/DataStructures/ModelUpdates.swift; sourceTree = ""; }; + 9ED23AF9DC693ED95F963C33D83DF07D /* Pods_RocketDataTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketDataTests.framework; 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 = ""; }; + A304558520339D84989A221FB4C054E0 /* Pods-RocketDataTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketDataTests-acknowledgements.markdown"; sourceTree = ""; }; + B05401DC4854691A4F1241428F9578FE /* BatchListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchListener.swift; path = ConsistencyManager/DataStructures/BatchListener.swift; sourceTree = ""; }; + B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; + B4486E390C3341A54D024676ADB7D077 /* Pods_RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketData.framework; path = "Pods-RocketData.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakHolder.swift; path = ConsistencyManager/DataStructures/WeakHolder.swift; sourceTree = ""; }; + C9FEDD3F8F7CA24AAC8E600FCB9CAD7F /* Pods-RocketDataTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.release.xcconfig"; sourceTree = ""; }; + D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakArray.swift; path = ConsistencyManager/DataStructures/WeakArray.swift; sourceTree = ""; }; + D0B69CEEA4F9C2BE9B0D9A4D90F7A922 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; + E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManager.swift; path = ConsistencyManager/ConsistencyManager.swift; sourceTree = ""; }; + EB487647543301DD5B39D50CF79D3EBC /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = ConsistencyManager.modulemap; sourceTree = ""; }; + EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakBox.swift; path = ConsistencyManager/DataStructures/WeakBox.swift; sourceTree = ""; }; + F15CE41697344C2A35DFC834791C3786 /* ConsistencyManagerModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerModel.swift; path = ConsistencyManager/Protocols/ConsistencyManagerModel.swift; sourceTree = ""; }; + F614F9737D9CB81A40DC9CC666DD13FA /* Pods-RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-RocketData.modulemap"; sourceTree = ""; }; + FB0413A3831A098D5DC5A692B8557436 /* Pods-RocketData-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketData-resources.sh"; sourceTree = ""; }; + FF654149B647AF0EFBE4E06EB29AE85D /* ModelChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelChange.swift; path = ConsistencyManager/DataStructures/ModelChange.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 1D5DBF02CDD80D16FC4CB573943C9860 /* Frameworks */ = { + 093C5A43E698E7D8C78DD6B8ECC3A755 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 203138B52471F3320B39E0A0F5F74916 /* Foundation.framework in Frameworks */, + C3727635DE8E2F171A85164EBD202BEB /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A70F4E6848BA3A43A46BE9BF209DB7A9 /* Frameworks */ = { + A6B7797C85794D7644B8D86897867FCD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F35A08C9B892520D731F0ADFCD665ECA /* Foundation.framework in Frameworks */, + 1BC7168C72400E3F7F28459197DD79FD /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B459A5D4048DD01BA939BB3FD857D8A4 /* Frameworks */ = { + F4C89EB621DA3443C7CC196FA7783897 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2A51D87889023F52D63559B9624B15D6 /* Foundation.framework in Frameworks */, - 8265AE9D9D400DF1E9B06A3955F85942 /* UIKit.framework in Frameworks */, + 3BE1A1BCBAE94DAADADC1570D192E651 /* Foundation.framework in Frameworks */, + B8DEFAF01FACCB06C95FE46DC24E5773 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 2B2388E493598820B8A0410D0D9BC66F /* Targets Support Files */ = { + 232BAA320B9B0D379D3851CE103EEC4C /* Pods-RocketData */ = { isa = PBXGroup; children = ( - AF83646799A11C0E65DB5B4E582A7685 /* Pods-RocketData */, - 2F36A7CBFBA36410A599A654AA491015 /* Pods-RocketDataTests */, + 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 */, + ); + name = "Pods-RocketData"; + path = "Target Support Files/Pods-RocketData"; + sourceTree = ""; + }; + 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { + isa = PBXGroup; + children = ( + E6EE98446B568159EE277B68FD442AF0 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 4C755ACC96D46765BA54509600A21819 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + 232BAA320B9B0D379D3851CE103EEC4C /* Pods-RocketData */, + 4E7E7762A195520FF247CE548D21DC69 /* Pods-RocketDataTests */, ); name = "Targets Support Files"; sourceTree = ""; }; - 2F36A7CBFBA36410A599A654AA491015 /* Pods-RocketDataTests */ = { + 4E7E7762A195520FF247CE548D21DC69 /* 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 */, + 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 = ""; }; - 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { + 71BED6FDBD7C528D21B3698590B28CAC /* Support Files */ = { isa = PBXGroup; children = ( - F302CD3B306AF1ED96B9AF31FCDBC26C /* iOS */, + EB487647543301DD5B39D50CF79D3EBC /* ConsistencyManager.modulemap */, + 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */, + D0B69CEEA4F9C2BE9B0D9A4D90F7A922 /* ConsistencyManager-dummy.m */, + 8D42BDBAB374E100C005BBAD7ACEDF24 /* ConsistencyManager-prefix.pch */, + 9794326D85F76046482EA80D8AA39BB9 /* ConsistencyManager-umbrella.h */, + 727B3E92C87FE914E054AD495E3BAFA8 /* Info.plist */, ); - name = Frameworks; + name = "Support Files"; + path = "../Target Support Files/ConsistencyManager"; sourceTree = ""; }; - 43FA96356D7D56170FC3D9FA34EA1CD0 /* ConsistencyManager */ = { + 76D721B535F72D6F714AFAB1A05514EA /* Pods */ = { isa = PBXGroup; children = ( - DBF2897E86ACFC66B482A811F822B961 /* BatchListener.swift */, - 304980AC492579B69D4827369DCA19F3 /* BatchUpdateModel.swift */, - F1F4E101C4FF06BAE52D4EB7710E9CB0 /* CollectionHelpers.swift */, - 3F8804F9D000318116CBFDE7B2BBB928 /* ConsistencyManager.swift */, - DC81E5E6745EF8D6F4DDEC7F19D26164 /* ConsistencyManagerDelegate.swift */, - 9C1E5D20AEA5F198AF025261DD2A188B /* ConsistencyManagerListener.swift */, - E97041D46547400C67C2349A305FFA8C /* ConsistencyManagerModel.swift */, - B59F67CC8F3BE06376FFAC7EA1A13CD9 /* ErrorManager.swift */, - 437143A8805F028E09A65AB320902072 /* ModelUpdates.swift */, - CFAF7A3F70884178FAD542B42E9C7374 /* WeakArray.swift */, - AEF5998704E241AD2FA83EACC216970C /* WeakListenerArray.swift */, - 83B23EB182FEA3F0CBD25B6D451D4876 /* Support Files */, + 9251B0A8965ECB686FEE0C60D7CC8E8B /* ConsistencyManager */, ); - path = ConsistencyManager; + name = Pods; sourceTree = ""; }; 7DB346D0F39D3F0E887471402A8071AB = { @@ -181,24 +210,35 @@ children = ( 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 433CD3331B6C3787F473C941B61FC68F /* Frameworks */, - CCE19C80C9B0F62EC444E2EEAC256C2F /* Pods */, + 76D721B535F72D6F714AFAB1A05514EA /* Pods */, A7FBE01DFB35645CFAE846405EBBF44C /* Products */, - 2B2388E493598820B8A0410D0D9BC66F /* Targets Support Files */, + 4C755ACC96D46765BA54509600A21819 /* Targets Support Files */, ); sourceTree = ""; }; - 83B23EB182FEA3F0CBD25B6D451D4876 /* Support Files */ = { + 9251B0A8965ECB686FEE0C60D7CC8E8B /* ConsistencyManager */ = { isa = PBXGroup; children = ( - C3B52A8ED6AD153CCDA1E4BB3122D69D /* ConsistencyManager.modulemap */, - A3E6B9393562E012FF3536A02C577E19 /* ConsistencyManager.xcconfig */, - AF6B0768E38C7114157A02217B66C9A2 /* ConsistencyManager-dummy.m */, - 10B991FFE0387E6039C11A061BA028BD /* ConsistencyManager-prefix.pch */, - 61D3DF36C8486F6664885AE7C411C92D /* ConsistencyManager-umbrella.h */, - 46A35328EBD6BC6926B514A28EE41C76 /* Info.plist */, + 37F300E88B2CA90D3A3D10A6870FB9C6 /* Array+Weak.swift */, + B05401DC4854691A4F1241428F9578FE /* BatchListener.swift */, + 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */, + 17F50305EFF1336458DB721E18C3AEC5 /* CollectionHelpers.swift */, + E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */, + 4488732A640B0CA0563771E757B590F7 /* ConsistencyManagerDelegate.swift */, + 05A0C2047B975238584455CCEB992E58 /* ConsistencyManagerListener.swift */, + F15CE41697344C2A35DFC834791C3786 /* ConsistencyManagerModel.swift */, + 2F07F9958F8B878BAFFD46112074114F /* ConsistencyManagerUpdatesListener.swift */, + B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */, + FF654149B647AF0EFBE4E06EB29AE85D /* ModelChange.swift */, + 9E9F2FE8BE50356D478F128EF00B1E04 /* ModelUpdates.swift */, + 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */, + D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */, + EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */, + BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */, + 71BED6FDBD7C528D21B3698590B28CAC /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/ConsistencyManager"; + name = ConsistencyManager; + path = ConsistencyManager; sourceTree = ""; }; A7FBE01DFB35645CFAE846405EBBF44C /* Products */ = { @@ -211,37 +251,11 @@ name = Products; sourceTree = ""; }; - AF83646799A11C0E65DB5B4E582A7685 /* Pods-RocketData */ = { + E6EE98446B568159EE277B68FD442AF0 /* iOS */ = { 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 = ( - 43FA96356D7D56170FC3D9FA34EA1CD0 /* ConsistencyManager */, - ); - name = Pods; - sourceTree = ""; - }; - F302CD3B306AF1ED96B9AF31FCDBC26C /* iOS */ = { - isa = PBXGroup; - children = ( - A2A6FF208CEC4C2861F1E9D42D651453 /* Foundation.framework */, - E86668F20F252C440D1015B816BE59C5 /* UIKit.framework */, + 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */, + 7EC994CDC2D681BA26389F78A7E4B325 /* UIKit.framework */, ); name = iOS; sourceTree = ""; @@ -249,84 +263,84 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - CC52059BEC70B517452CDFA876D48AD0 /* Headers */ = { + 251EED542950AD3534D3C8DB411E104A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4B2BE5EF5BCC75C085AF6FB3DFB73BF7 /* ConsistencyManager-umbrella.h in Headers */, + 4479A3765D16BC2D340B5057405C9143 /* ConsistencyManager-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - EFDF22A95B8D67B8EC9FF0A55B43C275 /* Headers */ = { + DCEE71D2156BE2A22E3D166DA9D133F3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 70768EA6EB9755E84BB7EC780F03F581 /* Pods-RocketData-umbrella.h in Headers */, + 391F3198E7E11104DD405EC50F5B293F /* Pods-RocketData-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - F29BF75F4E744ABECF782F78BF1ED4E5 /* Headers */ = { + F8D3177848AA0139E2898B221566EBC9 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - C8B2B67B37B8D53B63DF15B836D6A833 /* Pods-RocketDataTests-umbrella.h in Headers */, + 1D1C8F94417AB6BC3998EACC64C39007 /* Pods-RocketDataTests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 6939684F41CADCF23A7FB4F803AC6E0F /* Pods-RocketDataTests */ = { + 39C6FF70BB46CC2C60AA45D245142401 /* Pods-RocketData */ = { isa = PBXNativeTarget; - buildConfigurationList = A49A88E0757A7066CD2FE763AF4EA0F5 /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */; + buildConfigurationList = 435914460B92FF01EAA710E813152A3F /* Build configuration list for PBXNativeTarget "Pods-RocketData" */; buildPhases = ( - FE691D66E9E082F77695F8518A896163 /* Sources */, - A70F4E6848BA3A43A46BE9BF209DB7A9 /* Frameworks */, - F29BF75F4E744ABECF782F78BF1ED4E5 /* Headers */, + 70A47E0169C6B4BD0FEC55074AAB2794 /* Sources */, + 093C5A43E698E7D8C78DD6B8ECC3A755 /* Frameworks */, + DCEE71D2156BE2A22E3D166DA9D133F3 /* Headers */, ); buildRules = ( ); dependencies = ( - 0E75372A56430F6CFE71CE0257C25C96 /* PBXTargetDependency */, + CE6381E52994DCF6A323C7039ACDEF76 /* PBXTargetDependency */, ); - name = "Pods-RocketDataTests"; - productName = "Pods-RocketDataTests"; - productReference = 9ED23AF9DC693ED95F963C33D83DF07D /* Pods_RocketDataTests.framework */; + name = "Pods-RocketData"; + productName = "Pods-RocketData"; + productReference = B4486E390C3341A54D024676ADB7D077 /* Pods_RocketData.framework */; productType = "com.apple.product-type.framework"; }; - BF143FCB0BDDCCE19A427004B80418A1 /* ConsistencyManager */ = { + 87F9683EFDF83DDAC86926FBA4B669CE /* Pods-RocketDataTests */ = { isa = PBXNativeTarget; - buildConfigurationList = D4860273489427FA3BC8FD45AEB05BD3 /* Build configuration list for PBXNativeTarget "ConsistencyManager" */; + buildConfigurationList = A3B67548C5FDA3FA1AA7C2A8C53037FF /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */; buildPhases = ( - 7EAEF9F68995BA1B94C8487F29DF9C34 /* Sources */, - B459A5D4048DD01BA939BB3FD857D8A4 /* Frameworks */, - CC52059BEC70B517452CDFA876D48AD0 /* Headers */, + 3601AF1CCC4E6347E83CE2DDF0E1D7CF /* Sources */, + A6B7797C85794D7644B8D86897867FCD /* Frameworks */, + F8D3177848AA0139E2898B221566EBC9 /* Headers */, ); buildRules = ( ); dependencies = ( + 5A28733EA8708D092E27CC43AFA7D976 /* PBXTargetDependency */, ); - name = ConsistencyManager; - productName = ConsistencyManager; - productReference = 85F646650D2CB8D60E0A9B610A5C3CDB /* ConsistencyManager.framework */; + name = "Pods-RocketDataTests"; + productName = "Pods-RocketDataTests"; + productReference = 9ED23AF9DC693ED95F963C33D83DF07D /* Pods_RocketDataTests.framework */; productType = "com.apple.product-type.framework"; }; - F45C23078CB3C6468EB715EA150F57D0 /* Pods-RocketData */ = { + CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */ = { isa = PBXNativeTarget; - buildConfigurationList = A43C1FA3E003048B8DAE89D3918C3F25 /* Build configuration list for PBXNativeTarget "Pods-RocketData" */; + buildConfigurationList = 80400AB863598523A87EB65199C8BBFD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */; buildPhases = ( - 9DD3BE72F791409CE9D89D21A46AF109 /* Sources */, - 1D5DBF02CDD80D16FC4CB573943C9860 /* Frameworks */, - EFDF22A95B8D67B8EC9FF0A55B43C275 /* Headers */, + 24AA018C28F97A8058C45EEB3A292825 /* Sources */, + F4C89EB621DA3443C7CC196FA7783897 /* Frameworks */, + 251EED542950AD3534D3C8DB411E104A /* Headers */, ); buildRules = ( ); dependencies = ( - A9FFA43FFD87A9BAA48DC3F50C87759B /* PBXTargetDependency */, ); - name = "Pods-RocketData"; - productName = "Pods-RocketData"; - productReference = B4486E390C3341A54D024676ADB7D077 /* Pods_RocketData.framework */; + name = ConsistencyManager; + productName = ConsistencyManager; + productReference = 85F646650D2CB8D60E0A9B610A5C3CDB /* ConsistencyManager.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -350,72 +364,123 @@ projectDirPath = ""; projectRoot = ""; targets = ( - BF143FCB0BDDCCE19A427004B80418A1 /* ConsistencyManager */, - F45C23078CB3C6468EB715EA150F57D0 /* Pods-RocketData */, - 6939684F41CADCF23A7FB4F803AC6E0F /* Pods-RocketDataTests */, + CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */, + 39C6FF70BB46CC2C60AA45D245142401 /* Pods-RocketData */, + 87F9683EFDF83DDAC86926FBA4B669CE /* Pods-RocketDataTests */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 7EAEF9F68995BA1B94C8487F29DF9C34 /* Sources */ = { + 24AA018C28F97A8058C45EEB3A292825 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 466D55718EE2E044090AA5304AFB7427 /* BatchListener.swift in Sources */, - 22F81B5D194CF29A901A2A6399AF7EB3 /* BatchUpdateModel.swift in Sources */, - 2CE93941851BA6564027344639ADE240 /* CollectionHelpers.swift in Sources */, - 92E4CF92DEF26530B4633401C42CE37D /* ConsistencyManager-dummy.m in Sources */, - E6E7ED38E1CDCE71C37187A17927D8D2 /* ConsistencyManager.swift in Sources */, - 9E7CDDB3DBC6BD36B268726BD3C96ECF /* ConsistencyManagerDelegate.swift in Sources */, - BD436656590B87187BA25C062EFA52EC /* ConsistencyManagerListener.swift in Sources */, - 49B743734DBB42D13DE2E4C95D728258 /* ConsistencyManagerModel.swift in Sources */, - 6A52EA1AB9E49BAF9D979C953CBA94C5 /* ErrorManager.swift in Sources */, - 4839811DF1BEEDBEECD5B9DF09E75F63 /* ModelUpdates.swift in Sources */, - 1906A7F598DC1209C1539185AC70123B /* WeakArray.swift in Sources */, - 79F0359EDE2A2DE6C858B37522B08417 /* WeakListenerArray.swift in Sources */, + 36AC1E4F6E829EFF7EED533BA42B54DC /* Array+Weak.swift in Sources */, + 822307BE07734344679FA644970CF8CD /* BatchListener.swift in Sources */, + 4B065B337B479561160E13B01EAEA0A1 /* BatchUpdateModel.swift in Sources */, + D76F64AC6718611B6D42CE69B17B2DB9 /* CollectionHelpers.swift in Sources */, + 3ECAC56FEBB145EFE4FE9C22AB3D8BB5 /* ConsistencyManager-dummy.m in Sources */, + C4077D53936DFBC6E42745A1E9A70AC0 /* ConsistencyManager.swift in Sources */, + B71C08B6AADC997123138F3B1D2E614D /* ConsistencyManagerDelegate.swift in Sources */, + 7577D28FE99166790C3295B1D76CB27B /* ConsistencyManagerListener.swift in Sources */, + 631B06351A176767C9F4BFE43D20F9DF /* ConsistencyManagerModel.swift in Sources */, + D19F59FE7170377F2C74E93B2D99BFE2 /* ConsistencyManagerUpdatesListener.swift in Sources */, + 001DCC828873428A98B99A0BC22CE1F2 /* ErrorManager.swift in Sources */, + 3B69F7A493CC6D9BA7AAE82C3AB4EF09 /* ModelChange.swift in Sources */, + 9A0CD6C72C3C7D3CE1CE428C24690114 /* ModelUpdates.swift in Sources */, + 2616F72C653C085A30DD4BCDE48A75BC /* TypeErasedWeakHolders.swift in Sources */, + 825E2EC9D8B391C8787D9CFD444575BF /* WeakArray.swift in Sources */, + 283A9AE0309CB9B25265B87DC9E6AD2B /* WeakBox.swift in Sources */, + 263707EA21F73AFEB8A3CC633DB6997A /* WeakHolder.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9DD3BE72F791409CE9D89D21A46AF109 /* Sources */ = { + 3601AF1CCC4E6347E83CE2DDF0E1D7CF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D2BBBAD54A227C2138467762482F1801 /* Pods-RocketData-dummy.m in Sources */, + E665318A7006E2C694EC9A58B2306E0E /* Pods-RocketDataTests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - FE691D66E9E082F77695F8518A896163 /* Sources */ = { + 70A47E0169C6B4BD0FEC55074AAB2794 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - B2303CDA51DB0832BAB1788C6E7984EA /* Pods-RocketDataTests-dummy.m in Sources */, + E11D211087E861CA3756E3F6C36C1F84 /* Pods-RocketData-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 0E75372A56430F6CFE71CE0257C25C96 /* PBXTargetDependency */ = { + 5A28733EA8708D092E27CC43AFA7D976 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ConsistencyManager; - target = BF143FCB0BDDCCE19A427004B80418A1 /* ConsistencyManager */; - targetProxy = 2E84C10D2FD7E7413907FC3F6A662112 /* PBXContainerItemProxy */; + target = CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */; + targetProxy = 7BCAA72880A6EA07AFCC7B1A07168399 /* PBXContainerItemProxy */; }; - A9FFA43FFD87A9BAA48DC3F50C87759B /* PBXTargetDependency */ = { + CE6381E52994DCF6A323C7039ACDEF76 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ConsistencyManager; - target = BF143FCB0BDDCCE19A427004B80418A1 /* ConsistencyManager */; - targetProxy = 0BDDB8CAD6B21B887AF0AF3366E4900F /* PBXContainerItemProxy */; + target = CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */; + targetProxy = B0AC03400DFBFBBE1BCAA238BD5EF07A /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 087C0E07E694E836BA805FE795DB2A3E /* Debug */ = { + 015A368F878AC3E2CEAE21DDE8026304 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A3E6B9393562E012FF3536A02C577E19 /* ConsistencyManager.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + 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; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + ONLY_ACTIVE_ARCH = YES; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + 06E4231AEC439C4B2BB5FED496D5EDF5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 34BC35DF87360F2E7CB7A5FF8B70C85D /* Pods-RocketDataTests.debug.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; DEFINES_MODULE = YES; @@ -424,14 +489,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-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"; - MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = ConsistencyManager; + 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_OPTIMIZATION_LEVEL = "-Onone"; @@ -442,13 +511,15 @@ }; name = Debug; }; - 35051ADC04A8E3671155E53E25D158F4 /* Debug */ = { + 0994D717AD44142D7B59D0C2790E85E4 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EBB8D891F6044B06170C4C327B4D64DD /* Pods-RocketData.debug.xcconfig */; + baseConfigurationReference = 5063F94E4E75CFA2BAE770E1AA393FBE /* Pods-RocketData.release.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 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; @@ -461,7 +532,7 @@ 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; + MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -469,19 +540,20 @@ 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; + name = Release; }; - 3D2FC594F2B2BD161F45F7FC5726C815 /* Release */ = { + 3300A398113A5A2738A63D7138FCC91E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D2A28350FC686865DE4989C2C08BF94B /* Pods-RocketData.release.xcconfig */; + baseConfigurationReference = 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "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; @@ -490,13 +562,45 @@ 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"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 4323852FAB68DE7C0C36A2E3D810BDD7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A1ECCA60503B8A52C66D1701A61563B5 /* Pods-RocketData.debug.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; + 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 = NO; + MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -504,14 +608,15 @@ 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 = Release; + name = Debug; }; - 47BEF9D903506B003EA5C2B249729489 /* Debug */ = { + 44CDBB6D11DE06DB64D6268622BDC47E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -529,17 +634,14 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_TESTABILITY = YES; + CODE_SIGNING_REQUIRED = NO; + 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; @@ -547,49 +649,22 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - ONLY_ACTIVE_ARCH = YES; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; STRIP_INSTALLED_PRODUCT = NO; SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 545D8A2EE88FE5B282E244BA127039A1 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A3E6B9393562E012FF3536A02C577E19 /* ConsistencyManager.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - 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"; - VERSION_INFO_PREFIX = ""; + VALIDATE_PRODUCT = YES; }; name = Release; }; - 64135FF89D11D45C046F33E265CF084A /* Debug */ = { + A1BD4AE3312628DA9AF2ED875BAA75CD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8FA6F9E14CC2C3C25FA29B1113E5C7A1 /* Pods-RocketDataTests.debug.xcconfig */; + baseConfigurationReference = C9FEDD3F8F7CA24AAC8E600FCB9CAD7F /* Pods-RocketDataTests.release.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 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; @@ -602,7 +677,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)"; @@ -610,85 +685,45 @@ 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; + name = Release; }; - 6CE333249CF0131362A7666AEFB6C420 /* Release */ = { + A684C01C19A85587F8EA82FAF8BA674A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EFA112F5EE6AC2CF8DBF6AA8A8064B89 /* Pods-RocketDataTests.release.xcconfig */; + baseConfigurationReference = 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */; buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "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"; + 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-RocketDataTests/Info.plist"; + 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"; - 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; + 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 = Release; - }; - AAF678CED40D3499169D10F63CA0719E /* Release */ = { - isa = XCBuildConfiguration; - 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; - 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; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; - }; - name = Release; + name = Debug; }; /* End XCBuildConfiguration section */ @@ -696,35 +731,35 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 47BEF9D903506B003EA5C2B249729489 /* Debug */, - AAF678CED40D3499169D10F63CA0719E /* Release */, + 015A368F878AC3E2CEAE21DDE8026304 /* Debug */, + 44CDBB6D11DE06DB64D6268622BDC47E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A43C1FA3E003048B8DAE89D3918C3F25 /* Build configuration list for PBXNativeTarget "Pods-RocketData" */ = { + 435914460B92FF01EAA710E813152A3F /* Build configuration list for PBXNativeTarget "Pods-RocketData" */ = { isa = XCConfigurationList; buildConfigurations = ( - 35051ADC04A8E3671155E53E25D158F4 /* Debug */, - 3D2FC594F2B2BD161F45F7FC5726C815 /* Release */, + 4323852FAB68DE7C0C36A2E3D810BDD7 /* Debug */, + 0994D717AD44142D7B59D0C2790E85E4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A49A88E0757A7066CD2FE763AF4EA0F5 /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */ = { + 80400AB863598523A87EB65199C8BBFD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 64135FF89D11D45C046F33E265CF084A /* Debug */, - 6CE333249CF0131362A7666AEFB6C420 /* Release */, + A684C01C19A85587F8EA82FAF8BA674A /* Debug */, + 3300A398113A5A2738A63D7138FCC91E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D4860273489427FA3BC8FD45AEB05BD3 /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { + A3B67548C5FDA3FA1AA7C2A8C53037FF /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 087C0E07E694E836BA805FE795DB2A3E /* Debug */, - 545D8A2EE88FE5B282E244BA127039A1 /* Release */, + 06E4231AEC439C4B2BB5FED496D5EDF5 /* Debug */, + A1BD4AE3312628DA9AF2ED875BAA75CD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h index 9f2439b..b87136c 100644 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h +++ b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h @@ -1,4 +1,6 @@ +#ifdef __OBJC__ #import +#endif FOUNDATION_EXPORT double ConsistencyManagerVersionNumber; diff --git a/Pods/Target Support Files/ConsistencyManager/Info.plist b/Pods/Target Support Files/ConsistencyManager/Info.plist index 3424ca6..e2771ff 100644 --- a/Pods/Target Support Files/ConsistencyManager/Info.plist +++ b/Pods/Target Support Files/ConsistencyManager/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.0.0 + 5.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 9fa7002..adbf402 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist @@ -218,6 +218,8 @@ 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 deleted file mode 100755 index 4a523ee..0000000 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-frameworks.sh +++ /dev/null @@ -1,91 +0,0 @@ -#!/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-resources.sh b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-resources.sh index 0a15615..25e9d37 100755 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-resources.sh +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-resources.sh @@ -23,12 +23,6 @@ case "${TARGETED_DEVICE_FAMILY}" in ;; esac -realpath() { - DIRECTORY="$(cd "${1%/*}" && pwd)" - FILENAME="${1##*/}" - echo "$DIRECTORY/$FILENAME" -} - install_resource() { if [[ "$1" = /* ]] ; then @@ -70,7 +64,7 @@ EOM xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") + ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) @@ -93,7 +87,7 @@ then # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) while read line; do - if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + if [[ $line != "${PODS_ROOT}*" ]]; then XCASSET_FILES+=("$line") fi done <<<"$OTHER_XCASSETS" diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-umbrella.h b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-umbrella.h index 3948afa..ce675dc 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-umbrella.h +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-umbrella.h @@ -1,4 +1,6 @@ +#ifdef __OBJC__ #import +#endif FOUNDATION_EXPORT double Pods_RocketDataVersionNumber; 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 2733fc7..425d85a 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 @@ -EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 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 2733fc7..425d85a 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 @@ -EMBEDDED_CONTENT_CONTAINS_SWIFT = YES +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 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 9fa7002..adbf402 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist @@ -218,6 +218,8 @@ limitations under the License. + License + Apache License, Version 2.0 Title ConsistencyManager Type diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh index 0a15615..25e9d37 100755 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh @@ -23,12 +23,6 @@ case "${TARGETED_DEVICE_FAMILY}" in ;; esac -realpath() { - DIRECTORY="$(cd "${1%/*}" && pwd)" - FILENAME="${1##*/}" - echo "$DIRECTORY/$FILENAME" -} - install_resource() { if [[ "$1" = /* ]] ; then @@ -70,7 +64,7 @@ EOM xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "$RESOURCE_PATH") + ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) @@ -93,7 +87,7 @@ then # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) while read line; do - if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + if [[ $line != "${PODS_ROOT}*" ]]; then XCASSET_FILES+=("$line") fi done <<<"$OTHER_XCASSETS" diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-umbrella.h b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-umbrella.h index 7545468..108c647 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-umbrella.h +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-umbrella.h @@ -1,4 +1,6 @@ +#ifdef __OBJC__ #import +#endif FOUNDATION_EXPORT double Pods_RocketDataTestsVersionNumber; 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 2733fc7..89417bb 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig @@ -1,3 +1,4 @@ +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 2733fc7..89417bb 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig @@ -1,3 +1,4 @@ +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 a3e8249..eb1a242 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', '~> 4.0.0' + spec.dependency 'ConsistencyManager', '~> 5.0.0' end diff --git a/RocketData.xcodeproj/project.pbxproj b/RocketData.xcodeproj/project.pbxproj index d11c209..a5fb5c6 100644 --- a/RocketData.xcodeproj/project.pbxproj +++ b/RocketData.xcodeproj/project.pbxproj @@ -413,7 +413,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - 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"; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; CC432D6C732060E3D11BA838 /* [CP] Check Pods Manifest.lock */ = { @@ -428,7 +428,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - 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"; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; F23AEA2B7986D85FBAEE25DF /* [CP] Embed Pods Frameworks */ = { diff --git a/RocketData/WeakSharedCollectionArray.swift b/RocketData/WeakSharedCollectionArray.swift index 2d06ba6..475573a 100644 --- a/RocketData/WeakSharedCollectionArray.swift +++ b/RocketData/WeakSharedCollectionArray.swift @@ -8,161 +8,17 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. import Foundation - +import ConsistencyManager /** - This is a temporary workaround to an Apple bug. You can't specific a WeakArray, so I have to copy paste it for a specific type. - - https://bugs.swift.org/browse/SR-1176 + This type alias creates a `WeakSharedCollectionArray` type which holds `SharedCollections`. */ -struct WeakSharedCollectionArray: ExpressibleByArrayLiteral { - - // MARK: Internal - - /// The internal data is an array of closures which return weak T's - fileprivate var data: [() -> SharedCollection?] - - // MARK: Initializers - - /** - Creates an empty array - */ - init() { - data = [] - } - - /** - Creates an array with a certain capacity. All elements in the array will be nil. - */ - init(count: Int) { - data = Array<() -> SharedCollection?>(repeating: { - return nil - }, count: count) - } - - /** - Array literal initializer. Allows you to initialize a WeakArray with array notation. - */ - init(arrayLiteral elements: SharedCollection?...) { - data = [] - for element in elements { - data.append(weakClosureWithValue(element)) - } - } - - /** - Private initializer which allows init with data. - */ - private init(data: [() -> SharedCollection?]) { - self.data = data - } - - /// How many elements the Array stores - var count: Int { - return data.count - } - - // MARK: Methods - - /** - Append an element to the array. - */ - mutating func append(_ element: SharedCollection?) { - data.append(weakClosureWithValue(element)) - } - - /** - This method iterates through the array and removes any element which is nil. - It also returns an array of nonoptional values for convenience. - - This methods is O(n), so you should only call this method every time you need it. You should only call it once. - ie. Don't do this: - for _ in array.prune() - */ - mutating func prune() -> [SharedCollection] { - var nonOptionalElements = [SharedCollection]() - data = data.filter { closure in - let value = closure() - if let value = value { - nonOptionalElements.append(value) - return true - } else { - return false - } - } - return nonOptionalElements - } +typealias WeakSharedCollectionArray = AnyWeakArray - func map(_ function: (SharedCollection?) -> SharedCollection?) -> WeakSharedCollectionArray { - var newArray = WeakSharedCollectionArray() - // TODO: Fix this once apple fixes their bug - // This currently crashes with EXC_BAD_ACCESS - // for value in self { - // let newValue = function(value) - // newArray.append(newValue) - // } - for closure in data { - let newValue = function(closure()) - newArray.append(newValue) - } - return newArray - } - - /** - Iterates over the collection with an include element closure. - It will remove any elements that return false. - */ - func filter(_ includeElement: (SharedCollection?) -> Bool) -> WeakSharedCollectionArray { - let newData = data.filter { closure in - return includeElement(closure()) - } - return WeakSharedCollectionArray(data: newData) - } - - // MARK: Private Methods - - fileprivate func weakClosureWithValue(_ object: SharedCollection?) -> () -> SharedCollection? { - return { [weak object] in - return object - } - } -} - -// MARK: MutableCollectionType Implementation - -extension WeakSharedCollectionArray: MutableCollection { - - // Required by SequenceType - public func makeIterator() -> IndexingIterator { - // Rather than implement our own generator, let's take advantage of the generator provided by IndexingGenerator - return IndexingIterator(_elements: self) - } - - // Required by _CollectionType - public func index(after i: Int) -> Int { - return i + 1 - } - - // Required by _CollectionType - var endIndex: Int { - return self.count - } - - // Required by _CollectionType - var startIndex: Int { - return 0 - } - - /** - Getter and setter array. - */ - subscript(index: Int) -> SharedCollection? { - get { - let closure = data[index] - return closure() - } - set { - data[index] = weakClosureWithValue(newValue) - } - } +/** + This defines a WeakHolder which specifically holds a SharedCollection. + This is useful because WeakBox is illegal in Swift. You need a concrete type like this one. + */ +struct WeakSharedCollectionBox: WeakHolder { + weak var element: SharedCollection? } From 3471f85b1942893d486ad2fb23e02f54ef22d55c Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Wed, 11 Jan 2017 11:05:28 -0800 Subject: [PATCH 03/33] Adding the ability for DataProviders to listen to a specific ID (#55) --- RocketData/DataProvider.swift | 156 ++++++++++++++++-- .../ConsistencyDataProviderTests.swift | 109 ++++++++++++ .../DataStructures/WeakListenerArray.swift | 152 ----------------- 3 files changed, 249 insertions(+), 168 deletions(-) delete mode 100644 SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakListenerArray.swift diff --git a/RocketData/DataProvider.swift b/RocketData/DataProvider.swift index ba5e0da..1a6fff3 100644 --- a/RocketData/DataProvider.swift +++ b/RocketData/DataProvider.swift @@ -13,7 +13,7 @@ import ConsistencyManager /** This class implements a data provider for a single model. */ -open class DataProvider: ConsistencyManagerListener, BatchListenable { +open class DataProvider: ConsistencyManagerListener, BatchListenable, ConsistencyManagerUpdatesListener { // MARK: - Public instance variables @@ -54,13 +54,56 @@ open class DataProvider: ConsistencyManagerListener, BatchListen } } + /** + This property returns the model identifier which is associated with this `DataProvider`. + It either returns the id of the data currently set, or an id that it's listening to (if the model doesn't exist yet). + If you don't have a model yet, but want to listen to a model which may exist in the future, you can set + this property to an ID. + You should NOT do this if you have already set data (this will throw an assertion). + After setting this property, if the model is updated elsewhere, the delegate will be called and the new model will be set. + */ + open var modelIdentifier: String? { + get { + if let data = data { + return data.modelIdentifier + } else { + return listeningToModelIdentifier + } + } + set { + guard data == nil else { + Log.sharedInstance.assert(false, "You should not manually set the model identifier when you already have a model.") + return + } + listeningToModelIdentifier = newValue + if newValue != nil { + // If we start listening to a new ID, we need to add ourselves as a global listener + dataModelManager.consistencyManager.addModelUpdatesListener(self) + } + } + } + /// This saves the batchListener instance. It is public because it implements the BatchListenable protocol. You should never edit this directly. open weak var batchListener: BatchDataProviderListener? // MARK: - Private instance variables /// This wraps the data with a lastUpdated ChangeTime and makes sure the data is never changed without updating the ChangeTime - var dataHolder = DataHolder(data: nil) + var dataHolder = DataHolder(data: nil) { + didSet { + if dataHolder.data != nil && listeningToModelIdentifier != nil { + // If we set new data, let's erase the ID we're listening to and stop listening to updates + listeningToModelIdentifier = nil + dataModelManager.consistencyManager.removeModelUpdatesListener(self) + } + } + } + + /** + This is the internal storage for the ID we are listening to. + If `data` is not nil, this should be nil. + */ + private var listeningToModelIdentifier: String? /// This is updated whenever we set data. In some circumstances, we want to check that our new update is newer than our current model. var lastUpdated: ChangeTime { @@ -93,11 +136,7 @@ open class DataProvider: ConsistencyManagerListener, BatchListen } // These need to be called every time the model changes dataModelManager.consistencyManager.updateModel(data, context: ConsistencyContextWrapper(context: context)) - if let batchListener = batchListener { - batchListener.listenerHasUpdatedModel(self) - } else { - dataModelManager.consistencyManager.addListener(self) - } + listenForUpdates() } } @@ -111,6 +150,8 @@ open class DataProvider: ConsistencyManagerListener, BatchListen - 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. This completion block will always be called exactly once, even if no data was updated. + + TODO: Once we do a major version bump, remove this method and use the other method with an optional parameter. */ open func fetchDataFromCache(withCacheKey cacheKey: String?, context: Any? = nil, completion: @escaping (T?, NSError?)->()) { @@ -131,6 +172,7 @@ open class DataProvider: ConsistencyManagerListener, BatchListen if cacheDataFresh { if let model = model { self.dataHolder.setData(model, changeTime: ChangeTime()) + self.listenForUpdates() } completion(model, error) } else { @@ -139,20 +181,56 @@ open class DataProvider: ConsistencyManagerListener, BatchListen } } } - - // MARK: Consistency Manager Implementation - - open func currentModel() -> ConsistencyManagerModel? { - return data + + /** + Fetches a model from the cache. + It will only fetch from the cache and set the model if data is nil. + This is because if we have data, it should be identical to the cached data so fetching from the cache is pointless. + + - parameter cacheKey: The cache key for this model. + - parameter listenToModelIdentifier: If true, then the data provider will start listening to this cache key + even if the cache misses. This means if the cache misses, but then the model is added to the cache later, + the data provider will get that new data. + - parameter context: This context is passed to the cacheDelegate when making the query. Default nil. + - 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. + This completion block will always be called exactly once, even if no data was updated. + */ + open func fetchDataFromCache(withCacheKey cacheKey: String?, listenToModelIdentifier: Bool, context: Any? = nil, completion: @escaping (T?, NSError?)->()) { + fetchDataFromCache(withCacheKey: cacheKey, context: context) { model, error in + if self.data == nil && model == nil && listenToModelIdentifier { + // Only if our current data is nil and the cache missed should we start listening to this ID + self.modelIdentifier = cacheKey + } + completion(model, error) + } + } + + // MARK: Helpers + + /** + Call this whenever a new model is changed internally. This is done on setting data and fetching data. + */ + func listenForUpdates() { + if let batchListener = batchListener { + batchListener.listenerHasUpdatedModel(self) + } else { + dataModelManager.consistencyManager.addListener(self) + } } - open func modelUpdated(_ model: ConsistencyManagerModel?, updates: ModelUpdates, context: Any?) { + /** + Given a context, it assumes it is a ConsistencyContextWrapper. + It then unwraps a change time and actual context form this object with defaults. + It uses nil as a sentinal value to signify that this operation should be discarded (the change time is out of date). + */ + func changeTimeAndContext(fromContext context: Any?) -> (changeTime: ChangeTime, actualContext: Any?)? { let actualContext: Any? - var changeTime: ChangeTime? + let changeTime: ChangeTime if let context = context as? ConsistencyContextWrapper { if !context.creationDate.after(lastUpdated) { // Our current data is newer than this change so let's discard this change. - return + return nil } actualContext = context.context changeTime = context.creationDate @@ -160,6 +238,22 @@ open class DataProvider: ConsistencyManagerListener, BatchListen // The change came from a manual change to the consistency manager so we don't have time information // This isn't preferable, but let's assume that we actually want this change actualContext = context + changeTime = ChangeTime() + } + + return (changeTime, actualContext) + } + + // MARK: Consistency Manager Implementation + + open func currentModel() -> ConsistencyManagerModel? { + return data + } + + open func modelUpdated(_ model: ConsistencyManagerModel?, updates: ModelUpdates, context: Any?) { + guard let (changeTime, actualContext) = changeTimeAndContext(fromContext: context) else { + // This signifies that this change should be discarded because it's out of date + return } // Here, we are casting to T? so we catch nil. If the model is nil, it means it was deleted, so we should set data to nil @@ -167,12 +261,42 @@ open class DataProvider: ConsistencyManagerListener, BatchListen // It will already have been updated in the cache so we don't need to recache it // We are also already listening to the new model so don't need to call listenForUpdates again // If we updated ourselves through Rocket Data, we'll always have a ChangeTime. Otherwise, let's use now. - dataHolder.setData(model, changeTime: changeTime ?? ChangeTime()) + dataHolder.setData(model, changeTime: changeTime) delegate?.dataProviderHasUpdatedData(self, context: actualContext) } else { Log.sharedInstance.assert(false, "Consistency manager returned an incorrect model type. It looks like we have duplicate ids for different classes. This is not allowed because models must have globally unique identifiers.") } } + + open func consistencyManager(_ consistencyManager: ConsistencyManager, + updatedModel model: ConsistencyManagerModel, + changes: [String: ModelChange], + context: Any?) { + // We only care about changes if we have a modelId and data is nil + if let modelId = listeningToModelIdentifier, data == nil { + // Let's see if we care about any of these changes + if let modelChange = changes[modelId] { + // We only care if the model is updated. If it's deleted, we ignore it and still keep listening + if case ModelChange.updated(let models) = modelChange { + models.forEach { newModel in + // There may be multiple projections here. Let's search for one of the right class. + if let newModel = newModel as? T { + guard let (changeTime, actualContext) = changeTimeAndContext(fromContext: context) else { + // This signifies that this change should be discarded because it's out of date + return + } + dataHolder.setData(newModel, changeTime: changeTime) + delegate?.dataProviderHasUpdatedData(self, context: actualContext) + } + } + } + + } + } else { + // Otherwise, let's stop listening because we don't care anymore + dataModelManager.consistencyManager.removeModelUpdatesListener(self) + } + } // MARK: BatchListener Implementation diff --git a/RocketDataTests/DataProviderTests/ConsistencyDataProviderTests.swift b/RocketDataTests/DataProviderTests/ConsistencyDataProviderTests.swift index c0f44e0..58dcb59 100644 --- a/RocketDataTests/DataProviderTests/ConsistencyDataProviderTests.swift +++ b/RocketDataTests/DataProviderTests/ConsistencyDataProviderTests.swift @@ -291,4 +291,113 @@ class ConsistencyDataProviderTests: RocketDataTestCase { XCTAssertEqual(otherDataProvider.data?.name, "initial") XCTAssertEqual(otherDataProvider.data?.otherData, 42) } + + // Update after cache fetch + + func testDataProviderUpdatesAfterFetchingFromCache() { + let cache = ExpectCacheDelegate() + let dataModelManager = DataModelManager(cacheDelegate: cache) + let dataProvider = DataProvider(dataModelManager: dataModelManager) + let otherDataProvider = DataProvider(dataModelManager: dataModelManager) + + cache.modelForKeyCalled = { key, context, completion in + XCTAssertEqual(key, "ParentModel:1") + XCTAssertEqual(context as? String, "context") + let model = ParentModel(id: 1) + completion(model, nil) + } + + let expectation = self.expectation(description: "") + dataProvider.fetchDataFromCache(withCacheKey: "ParentModel:1", context: "context") { (model, error) -> () in + XCTAssertEqual(model?.id, 1) + XCTAssertNil(error) + expectation.fulfill() + } + + waitForExpectations(timeout: 10, handler: nil) + + XCTAssertEqual(dataProvider.data?.id, 1) + + // Now, let's set a model on the other data provider and verify that the first data provider updates + + let newModel = ParentModel(id: 1, name: "new", requiredChild: ChildModel(), otherChildren: []) + + XCTAssertNotEqual(dataProvider.data, newModel) + + var called = 0 + let delegate = ClosureDataProviderDelegate() { context in + XCTAssertEqual(context as? String, "context") + XCTAssertEqual(dataProvider.data, newModel) + called += 1 + } + dataProvider.delegate = delegate + + otherDataProvider.setData(newModel, updateCache: false, context: "context") + + waitForConsistencyManagerToFlush(dataModelManager.consistencyManager) + + XCTAssertEqual(dataProvider.data, newModel) + called += 1 + } + + // MARK: Listen to ID + + func testBasicListeningToID() { + let dataProvider = DataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache) + let otherDataProvider = DataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache) + dataProvider.modelIdentifier = "ChildModel:1" + + let child = ChildModel(id: 1, name: "new") + let model = ParentModel(id: 1, name: "new", requiredChild: child, otherChildren: []) + + var delegateCalled = 0 + let delegate = ClosureDataProviderDelegate() { context in + XCTAssertEqual(context as? String, "context") + delegateCalled += 1 + } + dataProvider.delegate = delegate + let otherDelegate = ClosureDataProviderDelegate() { context in + XCTFail() + } + otherDataProvider.delegate = otherDelegate + + otherDataProvider.setData(model, context: "context") + + waitForConsistencyManagerToFlush(DataModelManager.sharedDataManagerNoCache.consistencyManager) + + XCTAssertEqual(dataProvider.data, child) + XCTAssertEqual(delegateCalled, 1) + } + + func testBasicListeningToIDFromCache() { + let dataProvider = DataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache) + let otherDataProvider = DataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache) + + let waitForCacheMiss = expectation(description: "waitForCacheMiss") + dataProvider.fetchDataFromCache(withCacheKey: "ChildModel:1", listenToModelIdentifier: true) { _, _ in + waitForCacheMiss.fulfill() + } + waitForExpectations(timeout: 10, handler: nil) + + let child = ChildModel(id: 1, name: "new") + let model = ParentModel(id: 1, name: "new", requiredChild: child, otherChildren: []) + + var delegateCalled = 0 + let delegate = ClosureDataProviderDelegate() { context in + XCTAssertEqual(context as? String, "context") + delegateCalled += 1 + } + dataProvider.delegate = delegate + let otherDelegate = ClosureDataProviderDelegate() { context in + XCTFail() + } + otherDataProvider.delegate = otherDelegate + + otherDataProvider.setData(model, context: "context") + + waitForConsistencyManagerToFlush(DataModelManager.sharedDataManagerNoCache.consistencyManager) + + XCTAssertEqual(dataProvider.data, child) + XCTAssertEqual(delegateCalled, 1) + } } diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakListenerArray.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakListenerArray.swift deleted file mode 100644 index 54020dc..0000000 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakListenerArray.swift +++ /dev/null @@ -1,152 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - - -/** - This is a temporary workaround to an Apple bug. We can't specify a WeakArray, so I have to copy-paste it for a specific type. - - https://bugs.swift.org/browse/SR-1176 - */ -public struct WeakListenerArray: ExpressibleByArrayLiteral { - - // MARK: Internal - - /// The internal data is an array of closures which return weak T's - fileprivate var data: [() -> ConsistencyManagerListener?] - - // MARK: Initializers - - /** - Creates an empty array - */ - public init() { - data = [] - } - - /** - Creates an array with a certain capacity. All elements in the array will be nil. - */ - public init(count: Int) { - data = Array<() -> ConsistencyManagerListener?>(repeating: { - return nil - }, count: count) - } - - /** - Array literal initializer. Allows you to initialize a WeakArray with array notation. - */ - public init(arrayLiteral elements: ConsistencyManagerListener?...) { - data = [] - for element in elements { - data.append(weakClosureWithValue(element)) - } - } - - // MARK: Public Properties - - /// How many elements the Array stores - public var count: Int { - return data.count - } - - // MARK: Public Methods - - /** - Append an element to the array. - */ - public mutating func append(_ element: ConsistencyManagerListener?) { - data.append(weakClosureWithValue(element)) - } - - /** - This method iterates through the array and removes any element which is nil. - It also returns an array of nonoptional values for convenience. - - This method runs in O(n), so you should only call this method every time you need it. You should only call it once. - i.e. Don't do this: - for _ in array.prune() - */ - public mutating func prune() -> [ConsistencyManagerListener] { - var nonOptionalElements = [ConsistencyManagerListener]() - data = data.filter { closure in - let value = closure() - if let value = value { - nonOptionalElements.append(value) - return true - } else { - return false - } - } - return nonOptionalElements - } - - public func map(_ function: (ConsistencyManagerListener?) -> ConsistencyManagerListener?) -> WeakListenerArray { - var newArray = WeakListenerArray() - // TODO: Fix this once apple fixes their bug - // This currently crashes with EXC_BAD_ACCESS - // for value in self { - // let newValue = function(value) - // newArray.append(newValue) - // } - for closure in data { - let newValue = function(closure()) - newArray.append(newValue) - } - return newArray - } - - // MARK: Private Methods - - fileprivate func weakClosureWithValue(_ object: ConsistencyManagerListener?) -> () -> ConsistencyManagerListener? { - return { [weak object] in - return object - } - } -} - -// MARK: MutableCollectionType Implementation - -extension WeakListenerArray: MutableCollection { - - // Required by SequenceType - public func makeIterator() -> IndexingIterator { - // Rather than implement our own generator, let's take advantage of the generator provided by IndexingGenerator - return IndexingIterator(_elements: self) - } - - // Required by _CollectionType - public func index(after i: Int) -> Int { - return i + 1 - } - - // Required by _CollectionType - public var endIndex: Int { - return self.count - } - - // Required by _CollectionType - public var startIndex: Int { - return 0 - } - - /** - Getter and setter array - */ - public subscript(index: Int) -> ConsistencyManagerListener? { - get { - let closure = data[index] - return closure() - } - set { - data[index] = weakClosureWithValue(newValue) - } - } -} From 7779fe9d0023c6a0d56958143130ce6d1ff5e716 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Tue, 31 Jan 2017 14:16:49 -0800 Subject: [PATCH 04/33] Stop embedding frameworks as this seems to mess up carthage --- RocketData.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/RocketData.xcodeproj/project.pbxproj b/RocketData.xcodeproj/project.pbxproj index a5fb5c6..d7b8b72 100644 --- a/RocketData.xcodeproj/project.pbxproj +++ b/RocketData.xcodeproj/project.pbxproj @@ -609,7 +609,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = E816E0EC503C5F077273A5B3 /* Pods-RocketData.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_MODULES = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; @@ -631,7 +631,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 997C3052192E11916F11C270 /* Pods-RocketData.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_MODULES = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; @@ -652,7 +652,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = AC288B6D02498F01FECDAA0F /* Pods-RocketDataTests.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; INFOPLIST_FILE = RocketDataTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketDataTests; @@ -665,7 +665,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = E1E495CE9B06BB69A277C55E /* Pods-RocketDataTests.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; INFOPLIST_FILE = RocketDataTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketDataTests; From 9276f3f29e60084b3188d78298fd37fd6b1f8853 Mon Sep 17 00:00:00 2001 From: Kate Date: Tue, 14 Feb 2017 15:24:04 +1100 Subject: [PATCH 05/33] Removed unused code from sample code in docs This is now consistent with the live code in the sample app --- docs/pages/040_setup.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/040_setup.rst b/docs/pages/040_setup.rst index 21e1ada..b511935 100644 --- a/docs/pages/040_setup.rst +++ b/docs/pages/040_setup.rst @@ -43,7 +43,7 @@ Since you now have a singleton DataModelManager, we recommend adding these exten } extension CollectionDataProvider { - convenience init(cacheKey: String?) { + convenience init() { self.init(dataModelManager: DataModelManager.sharedInstance) } } From c26ba2726a24e8dfc0c1758daebd03ef1874d382 Mon Sep 17 00:00:00 2001 From: Heitor Ferreira Date: Mon, 12 Feb 2018 23:32:49 +0000 Subject: [PATCH 06/33] Updated Cartfile ConsistencyManager ref to 5.0.0 (#71) --- Cartfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile b/Cartfile index 0dfa136..2c45f6c 100644 --- a/Cartfile +++ b/Cartfile @@ -1,3 +1,3 @@ -github "linkedin/ConsistencyManager-iOS" ~> 4.0.1 +github "linkedin/ConsistencyManager-iOS" ~> 5.0.0 From eaf8fb383ba7d847901940df6ae2cb0fe858e22c Mon Sep 17 00:00:00 2001 From: Kashish Goel Date: Mon, 12 Feb 2018 18:36:48 -0500 Subject: [PATCH 07/33] Swift 4 conversion (#76) * Ran xcode swift 4 converter * Update travis osx_image to xcode9.2 * updated build.sh simulator package for swift 4 migration * update iphone simulator sdk to 11.2 in build.sh * travis simulator destination fix --- .travis.yml | 2 +- Podfile.lock | 2 +- Pods/Manifest.lock | 2 +- Pods/Pods.xcodeproj/project.pbxproj | 347 ++++++++++-------- .../ConsistencyManager-prefix.pch | 8 + .../ConsistencyManager-umbrella.h | 8 + .../ConsistencyManager.xcconfig | 1 + .../Pods-RocketData-resources.sh | 28 +- .../Pods-RocketData-umbrella.h | 8 + .../Pods-RocketData.debug.xcconfig | 4 +- .../Pods-RocketData.release.xcconfig | 4 +- .../Pods-RocketDataTests-frameworks.sh | 37 +- .../Pods-RocketDataTests-resources.sh | 28 +- .../Pods-RocketDataTests-umbrella.h | 8 + .../Pods-RocketDataTests.debug.xcconfig | 2 +- .../Pods-RocketDataTests.release.xcconfig | 2 +- RocketData.xcodeproj/project.pbxproj | 29 +- RocketDataTests/BatchListenerTests.swift | 4 +- build.sh | 4 +- 19 files changed, 319 insertions(+), 209 deletions(-) diff --git a/.travis.yml b/.travis.yml index 16cb2c3..7791eb8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: objective-c -osx_image: xcode8 +osx_image: xcode9.2 script: sh build.sh after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/Podfile.lock b/Podfile.lock index 2ef74fe..d693149 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -9,4 +9,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: d8d2259c702b74fab70a710147bf02a03932374d -COCOAPODS: 1.1.1 +COCOAPODS: 1.3.1 diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 2ef74fe..d693149 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -9,4 +9,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: d8d2259c702b74fab70a710147bf02a03932374d -COCOAPODS: 1.1.1 +COCOAPODS: 1.3.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 2fdf2fb..c6e3ea2 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -8,15 +8,15 @@ /* Begin PBXBuildFile section */ 001DCC828873428A98B99A0BC22CE1F2 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */; }; - 1BC7168C72400E3F7F28459197DD79FD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */; }; + 0C58787D7D27B7C77AFCE5D9E7907AF4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; }; 1D1C8F94417AB6BC3998EACC64C39007 /* Pods-RocketDataTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F57EB9142715F7D70F6B909F8A1CC5 /* Pods-RocketDataTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2616F72C653C085A30DD4BCDE48A75BC /* TypeErasedWeakHolders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */; }; 263707EA21F73AFEB8A3CC633DB6997A /* WeakHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */; }; 283A9AE0309CB9B25265B87DC9E6AD2B /* WeakBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */; }; + 2FF1D28805C55D445C47D34BBB668A3E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */; }; 36AC1E4F6E829EFF7EED533BA42B54DC /* Array+Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37F300E88B2CA90D3A3D10A6870FB9C6 /* Array+Weak.swift */; }; 391F3198E7E11104DD405EC50F5B293F /* Pods-RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 271164874EA521DBF3A5E42882CA5E8C /* Pods-RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3B69F7A493CC6D9BA7AAE82C3AB4EF09 /* ModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF654149B647AF0EFBE4E06EB29AE85D /* ModelChange.swift */; }; - 3BE1A1BCBAE94DAADADC1570D192E651 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */; }; 3ECAC56FEBB145EFE4FE9C22AB3D8BB5 /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0B69CEEA4F9C2BE9B0D9A4D90F7A922 /* ConsistencyManager-dummy.m */; }; 4479A3765D16BC2D340B5057405C9143 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9794326D85F76046482EA80D8AA39BB9 /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4B065B337B479561160E13B01EAEA0A1 /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */; }; @@ -26,13 +26,13 @@ 825E2EC9D8B391C8787D9CFD444575BF /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */; }; 9A0CD6C72C3C7D3CE1CE428C24690114 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9F2FE8BE50356D478F128EF00B1E04 /* ModelUpdates.swift */; }; B71C08B6AADC997123138F3B1D2E614D /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4488732A640B0CA0563771E757B590F7 /* ConsistencyManagerDelegate.swift */; }; - B8DEFAF01FACCB06C95FE46DC24E5773 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EC994CDC2D681BA26389F78A7E4B325 /* UIKit.framework */; }; - C3727635DE8E2F171A85164EBD202BEB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */; }; + B7BE190C9AF52186CA9132AD684CF205 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; }; C4077D53936DFBC6E42745A1E9A70AC0 /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */; }; D19F59FE7170377F2C74E93B2D99BFE2 /* ConsistencyManagerUpdatesListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F07F9958F8B878BAFFD46112074114F /* ConsistencyManagerUpdatesListener.swift */; }; D76F64AC6718611B6D42CE69B17B2DB9 /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17F50305EFF1336458DB721E18C3AEC5 /* CollectionHelpers.swift */; }; E11D211087E861CA3756E3F6C36C1F84 /* Pods-RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 089BD4D8DE576134661A5BBA93EC9964 /* Pods-RocketData-dummy.m */; }; E665318A7006E2C694EC9A58B2306E0E /* Pods-RocketDataTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7735ED8DE53508944981B891E90C0EFE /* Pods-RocketDataTests-dummy.m */; }; + F93B8C96B745676D18D9FFADA3825155 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -68,14 +68,12 @@ 4488732A640B0CA0563771E757B590F7 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; 5063F94E4E75CFA2BAE770E1AA393FBE /* Pods-RocketData.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.release.xcconfig"; sourceTree = ""; }; 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; sourceTree = ""; }; - 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 66C2744F8A608DA03871DB23D72F53EB /* Pods-RocketDataTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-RocketDataTests.modulemap"; sourceTree = ""; }; 6C7CAE382E5C46A01A4E6988A98B7E20 /* Pods-RocketDataTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-frameworks.sh"; sourceTree = ""; }; 727B3E92C87FE914E054AD495E3BAFA8 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; 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 = ""; }; - 7EC994CDC2D681BA26389F78A7E4B325 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TypeErasedWeakHolders.swift; path = ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift; sourceTree = ""; }; 82F57EB9142715F7D70F6B909F8A1CC5 /* Pods-RocketDataTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketDataTests-umbrella.h"; sourceTree = ""; }; 85F646650D2CB8D60E0A9B610A5C3CDB /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ConsistencyManager.framework; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -89,10 +87,12 @@ B05401DC4854691A4F1241428F9578FE /* BatchListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchListener.swift; path = ConsistencyManager/DataStructures/BatchListener.swift; sourceTree = ""; }; B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; B4486E390C3341A54D024676ADB7D077 /* Pods_RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketData.framework; path = "Pods-RocketData.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakHolder.swift; path = ConsistencyManager/DataStructures/WeakHolder.swift; sourceTree = ""; }; C9FEDD3F8F7CA24AAC8E600FCB9CAD7F /* Pods-RocketDataTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.release.xcconfig"; sourceTree = ""; }; D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakArray.swift; path = ConsistencyManager/DataStructures/WeakArray.swift; sourceTree = ""; }; D0B69CEEA4F9C2BE9B0D9A4D90F7A922 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; + D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManager.swift; path = ConsistencyManager/ConsistencyManager.swift; sourceTree = ""; }; EB487647543301DD5B39D50CF79D3EBC /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = ConsistencyManager.modulemap; sourceTree = ""; }; EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakBox.swift; path = ConsistencyManager/DataStructures/WeakBox.swift; sourceTree = ""; }; @@ -107,7 +107,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C3727635DE8E2F171A85164EBD202BEB /* Foundation.framework in Frameworks */, + 0C58787D7D27B7C77AFCE5D9E7907AF4 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -115,7 +115,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1BC7168C72400E3F7F28459197DD79FD /* Foundation.framework in Frameworks */, + B7BE190C9AF52186CA9132AD684CF205 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -123,8 +123,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3BE1A1BCBAE94DAADADC1570D192E651 /* Foundation.framework in Frameworks */, - B8DEFAF01FACCB06C95FE46DC24E5773 /* UIKit.framework in Frameworks */, + F93B8C96B745676D18D9FFADA3825155 /* Foundation.framework in Frameworks */, + 2FF1D28805C55D445C47D34BBB668A3E /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -151,11 +151,20 @@ 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { isa = PBXGroup; children = ( - E6EE98446B568159EE277B68FD442AF0 /* iOS */, + 438B396F6B4147076630CAEFE34282C1 /* iOS */, ); name = Frameworks; sourceTree = ""; }; + 438B396F6B4147076630CAEFE34282C1 /* iOS */ = { + isa = PBXGroup; + children = ( + D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */, + B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */, + ); + name = iOS; + sourceTree = ""; + }; 4C755ACC96D46765BA54509600A21819 /* Targets Support Files */ = { isa = PBXGroup; children = ( @@ -251,15 +260,6 @@ name = Products; sourceTree = ""; }; - E6EE98446B568159EE277B68FD442AF0 /* iOS */ = { - isa = PBXGroup; - children = ( - 616BEB51ECCAD129BDBCB7A956B56CC6 /* Foundation.framework */, - 7EC994CDC2D681BA26389F78A7E4B325 /* UIKit.framework */, - ); - name = iOS; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -349,7 +349,7 @@ D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0730; + LastSwiftUpdateCheck = 0830; LastUpgradeCheck = 0700; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; @@ -430,72 +430,25 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 015A368F878AC3E2CEAE21DDE8026304 /* Debug */ = { - isa = XCBuildConfiguration; - 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; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - ONLY_ACTIVE_ARCH = YES; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 06E4231AEC439C4B2BB5FED496D5EDF5 /* Debug */ = { + 0FB453D3358BAAA1A99892FACA19F46C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 34BC35DF87360F2E7CB7A5FF8B70C85D /* Pods-RocketDataTests.debug.xcconfig */; + baseConfigurationReference = C9FEDD3F8F7CA24AAC8E600FCB9CAD7F /* Pods-RocketDataTests.release.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 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-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-RocketDataTests/Pods-RocketDataTests.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -503,36 +456,34 @@ PRODUCT_NAME = Pods_RocketDataTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 0994D717AD44142D7B59D0C2790E85E4 /* Release */ = { + 135B3D6696392AC1153A81644E5AC28B /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 5063F94E4E75CFA2BAE770E1AA393FBE /* Pods-RocketData.release.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "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-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 = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -540,74 +491,70 @@ PRODUCT_NAME = Pods_RocketData; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 3300A398113A5A2738A63D7138FCC91E /* Release */ = { + 1E21C41FB79F7EBA2F868CD93FB3CBCC /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "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_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 4323852FAB68DE7C0C36A2E3D810BDD7 /* Debug */ = { + 34757953EAA6ED9CAA47FD6D8DDDA53A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A1ECCA60503B8A52C66D1701A61563B5 /* Pods-RocketData.debug.xcconfig */; + baseConfigurationReference = 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 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"; + 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"; - 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; + MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; + PRODUCT_NAME = ConsistencyManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -616,68 +563,25 @@ }; name = Debug; }; - 44CDBB6D11DE06DB64D6268622BDC47E /* Release */ = { + 4C971E58055E9611E86E91EC6F2661DF /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 34BC35DF87360F2E7CB7A5FF8B70C85D /* Pods-RocketDataTests.debug.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - 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 = 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; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - A1BD4AE3312628DA9AF2ED875BAA75CD /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C9FEDD3F8F7CA24AAC8E600FCB9CAD7F /* Pods-RocketDataTests.release.xcconfig */; - buildSettings = { + CODE_SIGN_IDENTITY = ""; "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"; 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)"; @@ -685,38 +589,42 @@ PRODUCT_NAME = Pods_RocketDataTests; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - A684C01C19A85587F8EA82FAF8BA674A /* Debug */ = { + 9606E03ADAE08068F50AAB70560735F6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */; + baseConfigurationReference = A1ECCA60503B8A52C66D1701A61563B5 /* Pods-RocketData.debug.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 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"; + 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"; - MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = ConsistencyManager; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-RocketData/Pods-RocketData.modulemap"; + 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_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -725,14 +633,129 @@ }; name = Debug; }; + B254DAA6CF0CE39F4A3D11B90A7E059A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + E4B68EE12B21C47CB798D9B1ECA6D7A7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 015A368F878AC3E2CEAE21DDE8026304 /* Debug */, - 44CDBB6D11DE06DB64D6268622BDC47E /* Release */, + E4B68EE12B21C47CB798D9B1ECA6D7A7 /* Debug */, + B254DAA6CF0CE39F4A3D11B90A7E059A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -740,8 +763,8 @@ 435914460B92FF01EAA710E813152A3F /* Build configuration list for PBXNativeTarget "Pods-RocketData" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4323852FAB68DE7C0C36A2E3D810BDD7 /* Debug */, - 0994D717AD44142D7B59D0C2790E85E4 /* Release */, + 9606E03ADAE08068F50AAB70560735F6 /* Debug */, + 135B3D6696392AC1153A81644E5AC28B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -749,8 +772,8 @@ 80400AB863598523A87EB65199C8BBFD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - A684C01C19A85587F8EA82FAF8BA674A /* Debug */, - 3300A398113A5A2738A63D7138FCC91E /* Release */, + 34757953EAA6ED9CAA47FD6D8DDDA53A /* Debug */, + 1E21C41FB79F7EBA2F868CD93FB3CBCC /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -758,8 +781,8 @@ A3B67548C5FDA3FA1AA7C2A8C53037FF /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 06E4231AEC439C4B2BB5FED496D5EDF5 /* Debug */, - A1BD4AE3312628DA9AF2ED875BAA75CD /* Release */, + 4C971E58055E9611E86E91EC6F2661DF /* Debug */, + 0FB453D3358BAAA1A99892FACA19F46C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch index aa992a4..beb2a24 100644 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch +++ b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch @@ -1,4 +1,12 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h index b87136c..ab808c9 100644 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h +++ b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig index 57888fb..e9d13ff 100644 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig +++ b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig @@ -6,5 +6,6 @@ OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/ConsistencyManager PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-resources.sh b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-resources.sh index 25e9d37..a7df440 100755 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-resources.sh +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-resources.sh @@ -8,6 +8,10 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt XCASSET_FILES=() +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + case "${TARGETED_DEVICE_FAMILY}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" @@ -18,6 +22,12 @@ case "${TARGETED_DEVICE_FAMILY}" in 2) TARGET_DEVICE_ARGS="--target-device ipad" ;; + 3) + TARGET_DEVICE_ARGS="--target-device tv" + ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; *) TARGET_DEVICE_ARGS="--target-device mac" ;; @@ -38,29 +48,29 @@ EOM fi case $RESOURCE_PATH in *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" ;; *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" ;; *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" ;; *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) @@ -68,7 +78,7 @@ EOM XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) - echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" || true echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" ;; esac diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-umbrella.h b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-umbrella.h index ce675dc..834be3f 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-umbrella.h +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif 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..8499708 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig @@ -1,10 +1,10 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 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' +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager/ConsistencyManager.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods 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..8499708 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig @@ -1,10 +1,10 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO 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' +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager/ConsistencyManager.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh index 4a523ee..3b227db 100755 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh @@ -6,6 +6,10 @@ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -23,9 +27,9 @@ install_framework() 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}" + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" @@ -54,13 +58,27 @@ install_framework() fi } +# Copies the dSYM of a vendored framework +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DWARF_DSYM_FOLDER_PATH}" + 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" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" fi } @@ -71,7 +89,7 @@ strip_invalid_archs() { archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" stripped="" for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" || exit 1 stripped="$stripped $arch" @@ -84,8 +102,11 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/ConsistencyManager/ConsistencyManager.framework" + install_framework "${BUILT_PRODUCTS_DIR}/ConsistencyManager/ConsistencyManager.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/ConsistencyManager/ConsistencyManager.framework" + install_framework "${BUILT_PRODUCTS_DIR}/ConsistencyManager/ConsistencyManager.framework" +fi +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait fi diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh index 25e9d37..a7df440 100755 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh @@ -8,6 +8,10 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt XCASSET_FILES=() +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + case "${TARGETED_DEVICE_FAMILY}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" @@ -18,6 +22,12 @@ case "${TARGETED_DEVICE_FAMILY}" in 2) TARGET_DEVICE_ARGS="--target-device ipad" ;; + 3) + TARGET_DEVICE_ARGS="--target-device tv" + ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; *) TARGET_DEVICE_ARGS="--target-device mac" ;; @@ -38,29 +48,29 @@ EOM fi case $RESOURCE_PATH in *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" ;; *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" ;; *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" ;; *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) @@ -68,7 +78,7 @@ EOM XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) - echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" || true echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" ;; esac diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-umbrella.h b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-umbrella.h index 108c647..d3401ba 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-umbrella.h +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif 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..cc88478 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig @@ -1,5 +1,4 @@ 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 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' @@ -8,4 +7,5 @@ OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods 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..cc88478 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig @@ -1,5 +1,4 @@ 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 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' @@ -8,4 +7,5 @@ OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" PODS_BUILD_DIR = $BUILD_DIR PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/RocketData.xcodeproj/project.pbxproj b/RocketData.xcodeproj/project.pbxproj index d7b8b72..2b195d2 100644 --- a/RocketData.xcodeproj/project.pbxproj +++ b/RocketData.xcodeproj/project.pbxproj @@ -327,11 +327,11 @@ TargetAttributes = { 612242B01C7B85D40017B0C4 = { CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 0920; }; 612242BA1C7B85D40017B0C4 = { CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 0920; }; }; }; @@ -407,13 +407,16 @@ files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RocketDataTests-checkManifestLockResult.txt", ); 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_PODFILE_DIR_PATH}/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# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; CC432D6C732060E3D11BA838 /* [CP] Check Pods Manifest.lock */ = { @@ -422,13 +425,16 @@ files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RocketData-checkManifestLockResult.txt", ); 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_PODFILE_DIR_PATH}/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# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; F23AEA2B7986D85FBAEE25DF /* [CP] Embed Pods Frameworks */ = { @@ -437,9 +443,12 @@ files = ( ); inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/ConsistencyManager/ConsistencyManager.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ConsistencyManager.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -623,7 +632,8 @@ PRODUCT_NAME = RocketData; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -644,7 +654,8 @@ PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketData; PRODUCT_NAME = RocketData; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Release; }; @@ -657,7 +668,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketDataTests; PRODUCT_NAME = RocketDataTests; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -670,7 +682,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketDataTests; PRODUCT_NAME = RocketDataTests; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Release; }; diff --git a/RocketDataTests/BatchListenerTests.swift b/RocketDataTests/BatchListenerTests.swift index 264a9a6..abf6750 100644 --- a/RocketDataTests/BatchListenerTests.swift +++ b/RocketDataTests/BatchListenerTests.swift @@ -253,7 +253,7 @@ class BatchListenerTests: RocketDataTestCase { } collectionDataProvider1.delegate = collectionProvider1Delegate - let collectionProvider2Delegate = ClosureCollectionDataProviderDelegate() { _ in + let collectionProvider2Delegate = ClosureCollectionDataProviderDelegate() { _,_ in XCTFail() } collectionDataProvider2.delegate = collectionProvider2Delegate @@ -313,7 +313,7 @@ class BatchListenerTests: RocketDataTestCase { } collectionDataProvider1.delegate = collectionProvider1Delegate - let collectionProvider2Delegate = ClosureCollectionDataProviderDelegate() { _ in + let collectionProvider2Delegate = ClosureCollectionDataProviderDelegate() { _,_ in XCTFail() } collectionDataProvider2.delegate = collectionProvider2Delegate diff --git a/build.sh b/build.sh index e309a43..141c0d4 100755 --- a/build.sh +++ b/build.sh @@ -4,9 +4,9 @@ set -o pipefail && time xcodebuild clean test \ -workspace RocketData.xcworkspace \ -scheme RocketData \ - -sdk iphonesimulator10.0 \ + -sdk iphonesimulator11.2 \ -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.3' \ - -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.0' \ + -destination 'platform=iOS Simulator,name=iPhone X,OS=11.1' \ | xcpretty # Disabling 8.4 because it's very flaky on travis From 61f46e462030990f666864b79a0e63b8d0aa948a Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Mon, 12 Feb 2018 16:25:32 -0800 Subject: [PATCH 08/33] 5.0.0 release (#77) * Updating Podfile and podspec to new versions of consistency manager Migrating podspec from linkedin to plivesey repo Fixing all remaining project warnings * s/linkedin/plivesey in the README --- Podfile | 15 +- Podfile.lock | 8 +- .../ConsistencyManager.swift | 1 + .../DataStructures/ModelUpdates.swift | 5 + Pods/ConsistencyManager/README.md | 2 + Pods/Manifest.lock | 8 +- Pods/Pods.xcodeproj/project.pbxproj | 130 +++++++++--------- .../ConsistencyManager/Info.plist | 2 +- README.md | 20 ++- RocketData.podspec | 10 +- RocketData.xcodeproj/project.pbxproj | 22 ++- .../xcschemes/RocketData.xcscheme | 4 +- 12 files changed, 116 insertions(+), 111 deletions(-) diff --git a/Podfile b/Podfile index 1fc45a5..63f4b51 100644 --- a/Podfile +++ b/Podfile @@ -3,21 +3,10 @@ use_frameworks! target :'RocketData' do - pod 'ConsistencyManager', '~> 5.0.0' + pod 'ConsistencyManager', '~> 5.2.0' end target :'RocketDataTests' do - pod 'ConsistencyManager', '~> 5.0.0' -end - -# This is necessary to convert the target to swift 3.0 -# This isn't detected automatically by cocoapods or supported in the podspec -# We can remove this once Cocoapods has a better solution -post_install do |installer| - installer.pods_project.targets.each do |target| - target.build_configurations.each do |config| - config.build_settings['SWIFT_VERSION'] = '3.0' - end - end + pod 'ConsistencyManager', '~> 5.2.0' end diff --git a/Podfile.lock b/Podfile.lock index d693149..36c63ff 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,12 +1,12 @@ PODS: - - ConsistencyManager (5.0.0) + - ConsistencyManager (5.2.0) DEPENDENCIES: - - ConsistencyManager (~> 5.0.0) + - ConsistencyManager (~> 5.2.0) SPEC CHECKSUMS: - ConsistencyManager: 9ef5dbdb10a90d6c5799da67bb6a6a803ac4426f + ConsistencyManager: 66a94b64e767a85698c2cb8c0184885760810fdc -PODFILE CHECKSUM: d8d2259c702b74fab70a710147bf02a03932374d +PODFILE CHECKSUM: 6a24e5e558e36fed2c36334f0ef9ea899f50d06c COCOAPODS: 1.3.1 diff --git a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift index 78457e9..2d5d063 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift @@ -844,6 +844,7 @@ open class ConsistencyManager { NotificationCenter.default.removeObserver(self) } + @objc func applicationDidReceiveMemoryWarning(_ notification: Notification) { delegate?.applicationDidReceiveMemoryWarning(notification) } diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelUpdates.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelUpdates.swift index c8c279b..c6fb410 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelUpdates.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelUpdates.swift @@ -29,4 +29,9 @@ public struct ModelUpdates { If you return nil from map (indicating a cascading delete), multiple models may be deleted. All these ids will be included in this set. */ public var deletedModelIds: Set + + public init(changedModelIds: Set, deletedModelIds: Set) { + self.changedModelIds = changedModelIds + self.deletedModelIds = deletedModelIds + } } diff --git a/Pods/ConsistencyManager/README.md b/Pods/ConsistencyManager/README.md index 67264ac..e26974a 100644 --- a/Pods/ConsistencyManager/README.md +++ b/Pods/ConsistencyManager/README.md @@ -3,6 +3,7 @@ [![Build Status](https://travis-ci.org/linkedin/ConsistencyManager-iOS.svg?branch=master)](https://travis-ci.org/linkedin/ConsistencyManager-iOS) [![codecov](https://codecov.io/gh/linkedin/ConsistencyManager-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/linkedin/ConsistencyManager-iOS) [![GitHub release](https://img.shields.io/github/release/linkedin/ConsistencyManager-iOS.svg?maxAge=86400)](https://github.com/linkedin/ConsistencyManager-iOS/releases) +![Platforms](https://img.shields.io/badge/platforms-iOS%20%7C%20tvOS%20%7C%20macOS-blue.svg) This library provides a way of keeping immutable models consistent. First, listeners listen to an immutable model. Whenever this model (or any child model) is updated, the Consistency Manager will generate a new model and notify its listeners. @@ -70,6 +71,7 @@ We are currently not maintaining separate branches for different Swift versions. | 2.2 - 2.3 | 2.x.x | | 3 (Easy migration API) | 3.x.x | | 3 (Better API) | 4.x.x | +| 4 | 5.1.1+ | 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 d693149..36c63ff 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,12 +1,12 @@ PODS: - - ConsistencyManager (5.0.0) + - ConsistencyManager (5.2.0) DEPENDENCIES: - - ConsistencyManager (~> 5.0.0) + - ConsistencyManager (~> 5.2.0) SPEC CHECKSUMS: - ConsistencyManager: 9ef5dbdb10a90d6c5799da67bb6a6a803ac4426f + ConsistencyManager: 66a94b64e767a85698c2cb8c0184885760810fdc -PODFILE CHECKSUM: d8d2259c702b74fab70a710147bf02a03932374d +PODFILE CHECKSUM: 6a24e5e558e36fed2c36334f0ef9ea899f50d06c COCOAPODS: 1.3.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index c6e3ea2..aafbd42 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -430,7 +430,7 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 0FB453D3358BAAA1A99892FACA19F46C /* Release */ = { + 170640A925F8C537A5A04B49F3EC0FB8 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = C9FEDD3F8F7CA24AAC8E600FCB9CAD7F /* Pods-RocketDataTests.release.xcconfig */; buildSettings = { @@ -457,7 +457,6 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -465,9 +464,9 @@ }; name = Release; }; - 135B3D6696392AC1153A81644E5AC28B /* Release */ = { + 20CCA969089CBC42024E2E50A9DE0BF3 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5063F94E4E75CFA2BAE770E1AA393FBE /* Pods-RocketData.release.xcconfig */; + baseConfigurationReference = A1ECCA60503B8A52C66D1701A61563B5 /* Pods-RocketData.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -491,18 +490,17 @@ PRODUCT_NAME = Pods_RocketData; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 1E21C41FB79F7EBA2F868CD93FB3CBCC /* Release */ = { + 43A3A8A14F5DDC70AFE66DC3C82A95A9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */; + baseConfigurationReference = 5063F94E4E75CFA2BAE770E1AA393FBE /* Pods-RocketData.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -513,18 +511,20 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ConsistencyManager/Info.plist"; + 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"; - MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; - PRODUCT_NAME = ConsistencyManager; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-RocketData/Pods-RocketData.modulemap"; + 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_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -532,38 +532,7 @@ }; name = Release; }; - 34757953EAA6ED9CAA47FD6D8DDDA53A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - 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"; - PRODUCT_NAME = ConsistencyManager; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 4C971E58055E9611E86E91EC6F2661DF /* Debug */ = { + 691AC778963B2CE58112181683F4B418 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 34BC35DF87360F2E7CB7A5FF8B70C85D /* Pods-RocketDataTests.debug.xcconfig */; buildSettings = { @@ -591,16 +560,15 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 9606E03ADAE08068F50AAB70560735F6 /* Debug */ = { + A783EA57EC2CD3782C0E7AF55F812CB9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A1ECCA60503B8A52C66D1701A61563B5 /* Pods-RocketData.debug.xcconfig */; + baseConfigurationReference = 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -611,22 +579,18 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-RocketData/Info.plist"; + 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"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-RocketData/Pods-RocketData.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_RocketData; + MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; + PRODUCT_NAME = ConsistencyManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -688,6 +652,38 @@ }; name = Release; }; + C3FC67C922AAEE495E94E5AB8B2E7C7E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + 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"; + PRODUCT_NAME = ConsistencyManager; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; E4B68EE12B21C47CB798D9B1ECA6D7A7 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -763,8 +759,8 @@ 435914460B92FF01EAA710E813152A3F /* Build configuration list for PBXNativeTarget "Pods-RocketData" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9606E03ADAE08068F50AAB70560735F6 /* Debug */, - 135B3D6696392AC1153A81644E5AC28B /* Release */, + 20CCA969089CBC42024E2E50A9DE0BF3 /* Debug */, + 43A3A8A14F5DDC70AFE66DC3C82A95A9 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -772,8 +768,8 @@ 80400AB863598523A87EB65199C8BBFD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 34757953EAA6ED9CAA47FD6D8DDDA53A /* Debug */, - 1E21C41FB79F7EBA2F868CD93FB3CBCC /* Release */, + A783EA57EC2CD3782C0E7AF55F812CB9 /* Debug */, + C3FC67C922AAEE495E94E5AB8B2E7C7E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -781,8 +777,8 @@ A3B67548C5FDA3FA1AA7C2A8C53037FF /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4C971E58055E9611E86E91EC6F2661DF /* Debug */, - 0FB453D3358BAAA1A99892FACA19F46C /* Release */, + 691AC778963B2CE58112181683F4B418 /* Debug */, + 170640A925F8C537A5A04B49F3EC0FB8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Target Support Files/ConsistencyManager/Info.plist b/Pods/Target Support Files/ConsistencyManager/Info.plist index e2771ff..82c355f 100644 --- a/Pods/Target Support Files/ConsistencyManager/Info.plist +++ b/Pods/Target Support Files/ConsistencyManager/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 5.0.0 + 5.2.0 CFBundleSignature ???? CFBundleVersion diff --git a/README.md b/README.md index 7c40b00..2949053 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ # 🚀 Data -[![Build Status](https://travis-ci.org/linkedin/RocketData.svg?branch=master)](https://travis-ci.org/linkedin/RocketData) -[![codecov](https://codecov.io/gh/linkedin/RocketData/branch/master/graph/badge.svg)](https://codecov.io/gh/linkedin/RocketData) -[![GitHub release](https://img.shields.io/github/release/linkedin/RocketData.svg?maxAge=86400)](https://github.com/linkedin/RocketData/releases) +[![Build Status](https://travis-ci.org/plivesey/RocketData.svg?branch=master)](https://travis-ci.org/plivesey/RocketData) +[![codecov](https://codecov.io/gh/plivesey/RocketData/branch/master/graph/badge.svg)](https://codecov.io/gh/plivesey/RocketData) +[![GitHub release](https://img.shields.io/github/release/plivesey/RocketData.svg?maxAge=86400)](https://github.com/plivesey/RocketData/releases) [![CocoaPods](https://img.shields.io/cocoapods/p/RocketData.svg?maxAge=86400)](#) Rocket Data is a model management system with persistence for immutable models. ## Motivation -Immutability has [many benefits](see https://linkedin.github.io/RocketData/pages/130_immutability.html), but keeping models consistent and making changes is difficult. This library manages the consistency and caching of immutable models. It is intended to be an ideal replacement for Core Data. However, unlike Core Data, it does not block the main thread and does not crash whenever you do something slightly incorrect (see [Core Data Comparison](https://linkedin.github.io/RocketData/pages/100_coreData.html)). In most setups, the backing cache does not need a schema, and you never need to add migration logic. +Immutability has [many benefits](https://plivesey.github.io/RocketData/pages/130_immutability.html), but keeping models consistent and making changes is difficult. This library manages the consistency and caching of immutable models. It is intended to be an ideal replacement for Core Data. However, unlike Core Data, it does not block the main thread and does not crash whenever you do something slightly incorrect (see [Core Data Comparison](https://plivesey.github.io/RocketData/pages/100_coreData.html)). In most setups, the backing cache does not need a schema, and you never need to add migration logic. ## Scale @@ -37,7 +37,7 @@ Then run `pod install`. Add this to your `Cartfile`: ```ogdl -github "linkedin/RocketData" +github "plivesey/RocketData" ``` Then run `carthage update RocketData --platform ios` @@ -45,7 +45,7 @@ NOTE: Currently, `--platform ios` is necessary for some reason. We are investiga ### Swift Version -We are currently not maintaining separate branches for different Swift versions. You can use an older version of Rocket Data for older versions of Swift though. HEAD currently supports Swift 3. +We are currently not maintaining separate branches for different Swift versions. You can use an older version of Rocket Data for older versions of Swift though. HEAD currently supports Swift 4. | Swift Version | Rocket Data Version | |---------------|------------------------------| @@ -56,17 +56,15 @@ We are currently not maintaining separate branches for different Swift versions. | 2.3 (Carthage) | 1.2.0 | | 3 (Easy migration API) | 2.0.0 | | 3 (Better API) | 4.x.x | +| 4 | 5.x.x | NOTE: If you are migrating to Swift 3, consider using version 2.0.0 first, then migrating to 3.x.x. 3.0.0 migrates the code to the new syntax without making any API changes. 3.x.x introduces a better API which is more consistent with the new Swift 3 API guidelines. ## Documentation -To get started, you should take a look at the [docs](https://linkedin.github.io/RocketData). +To get started, you should take a look at the [docs](https://plivesey.github.io/RocketData). ### Consistency Manager -Rocket Data uses [ConsistencyManager-iOS](https://github.com/linkedin/ConsistencyManager-iOS/) to manage the in-memory consistency of models. While you never need to access the Consistency Manager directly, understanding how it works will help you understand Rocket Data. +Rocket Data uses [ConsistencyManager-iOS](https://github.com/plivesey/ConsistencyManager-iOS/) to manage the in-memory consistency of models. While you never need to access the Consistency Manager directly, understanding how it works will help you understand Rocket Data. -## Security - -If you believe you have discovered a security issue, please send an email to security@linkedin.com with information and detailed instructions on how to reproduce the issue. diff --git a/RocketData.podspec b/RocketData.podspec index eb1a242..d15c8c7 100644 --- a/RocketData.podspec +++ b/RocketData.podspec @@ -1,14 +1,14 @@ Pod::Spec.new do |spec| spec.name = 'RocketData' - spec.version = '4.0.1' + spec.version = '5.0.0' spec.license = { :type => 'Apache License, Version 2.0' } - spec.homepage = 'https://linkedin.github.io/RocketData' - spec.authors = 'LinkedIn' + spec.homepage = 'https://plivesey.github.io/RocketData' + spec.authors = 'plivesey' spec.summary = 'A non-blocking CoreData replacement which uses immutable models.' - spec.source = { :git => 'https://github.com/linkedin/RocketData.git', :tag => spec.version } + spec.source = { :git => 'https://github.com/plivesey/RocketData.git', :tag => spec.version } spec.source_files = 'RocketData/**/*.swift' spec.platform = :ios, '8.0' spec.frameworks = 'Foundation' - spec.dependency 'ConsistencyManager', '~> 5.0.0' + spec.dependency 'ConsistencyManager', '~> 5.2.0' end diff --git a/RocketData.xcodeproj/project.pbxproj b/RocketData.xcodeproj/project.pbxproj index 2b195d2..6f24516 100644 --- a/RocketData.xcodeproj/project.pbxproj +++ b/RocketData.xcodeproj/project.pbxproj @@ -322,7 +322,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0920; ORGANIZATIONNAME = LinkedIn; TargetAttributes = { 612242B01C7B85D40017B0C4 = { @@ -528,14 +528,20 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -578,14 +584,20 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -632,7 +644,7 @@ PRODUCT_NAME = RocketData; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 4.0; }; name = Debug; @@ -654,7 +666,7 @@ PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketData; PRODUCT_NAME = RocketData; SKIP_INSTALL = YES; - SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 4.0; }; name = Release; @@ -668,7 +680,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketDataTests; PRODUCT_NAME = RocketDataTests; - SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 4.0; }; name = Debug; @@ -682,7 +694,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketDataTests; PRODUCT_NAME = RocketDataTests; - SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; SWIFT_VERSION = 4.0; }; name = Release; diff --git a/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme b/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme index d358899..6894b77 100644 --- a/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme +++ b/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme @@ -1,6 +1,6 @@ @@ -56,6 +57,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" From f343a91eefba4102a8ac20a8ff9e6bd1ab086b16 Mon Sep 17 00:00:00 2001 From: Pritesh Shah Date: Fri, 27 Apr 2018 16:03:17 -0700 Subject: [PATCH 09/33] Fixes Swift 4.1 warning (#79) Not sure what the timeline on Swift 4.1 upgrade is, but this was an easy enough fix --- RocketData/BatchDataProviderListener.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RocketData/BatchDataProviderListener.swift b/RocketData/BatchDataProviderListener.swift index 0848d3d..fdc9523 100644 --- a/RocketData/BatchDataProviderListener.swift +++ b/RocketData/BatchDataProviderListener.swift @@ -129,7 +129,7 @@ public protocol BatchDataProviderListenerDelegate: class { public protocol BatchListenable: class { /// Allows the batch listener to set and read this property - weak var batchListener: BatchDataProviderListener? { get set } + var batchListener: BatchDataProviderListener? { get set } /** Returns true if the data provider actually updated to the current context. If the data provider ignored this change, the it will return false. From fa8e72121d18df52930bdf51b53313b5cd684f74 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Thu, 17 May 2018 13:41:06 -0700 Subject: [PATCH 10/33] Updating to Swift 4.1 and pulling in the new consistency manager --- Podfile | 4 +- Podfile.lock | 10 +- .../ConsistencyManager.swift | 2 +- .../DataStructures/Array+Weak.swift | 2 +- .../DataStructures/BatchUpdateModel.swift | 2 +- Pods/ConsistencyManager/README.md | 18 +- Pods/Manifest.lock | 10 +- Pods/Pods.xcodeproj/project.pbxproj | 204 +++++++++--------- .../ConsistencyManager.xcconfig | 6 +- .../ConsistencyManager/Info.plist | 2 +- .../Pods-RocketData.debug.xcconfig | 8 +- .../Pods-RocketData.release.xcconfig | 8 +- .../Pods-RocketDataTests-frameworks.sh | 44 +++- .../Pods-RocketDataTests.debug.xcconfig | 8 +- .../Pods-RocketDataTests.release.xcconfig | 8 +- RocketData.xcodeproj/project.pbxproj | 10 +- .../xcschemes/RocketData.xcscheme | 8 +- RocketData/CollectionDataProvider.swift | 4 +- RocketData/ParsingHelpers.swift | 4 +- RocketData/SharedCollectionManager.swift | 2 +- RocketDataTests/CollectionChangeTests.swift | 7 - RocketDataTests/TestModels/ParentModel.swift | 2 +- 22 files changed, 203 insertions(+), 170 deletions(-) diff --git a/Podfile b/Podfile index 63f4b51..eb83791 100644 --- a/Podfile +++ b/Podfile @@ -3,10 +3,10 @@ use_frameworks! target :'RocketData' do - pod 'ConsistencyManager', '~> 5.2.0' + pod 'ConsistencyManager', '~> 6.0.0' end target :'RocketDataTests' do - pod 'ConsistencyManager', '~> 5.2.0' + pod 'ConsistencyManager', '~> 6.0.0' end diff --git a/Podfile.lock b/Podfile.lock index 36c63ff..8d4890f 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,12 +1,12 @@ PODS: - - ConsistencyManager (5.2.0) + - ConsistencyManager (6.0.0) DEPENDENCIES: - - ConsistencyManager (~> 5.2.0) + - ConsistencyManager (~> 6.0.0) SPEC CHECKSUMS: - ConsistencyManager: 66a94b64e767a85698c2cb8c0184885760810fdc + ConsistencyManager: 10d92488107167a8d9df3cd93e529a15282ceaec -PODFILE CHECKSUM: 6a24e5e558e36fed2c36334f0ef9ea899f50d06c +PODFILE CHECKSUM: 23217410773c338b8571eb56301ac0b04b43d886 -COCOAPODS: 1.3.1 +COCOAPODS: 1.4.0 diff --git a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift index 2d5d063..c3fcc2a 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift @@ -636,7 +636,7 @@ open class ConsistencyManager { } // Given the current model, let's generate new models for each listener - let results: [(listener: ConsistencyManagerListener, newModel: ConsistencyManagerModel?, modelUpdates: ModelUpdates)] = currentModels.flatMap { (listener, currentModel) in + let results: [(listener: ConsistencyManagerListener, newModel: ConsistencyManagerModel?, modelUpdates: ModelUpdates)] = currentModels.compactMap { (listener, currentModel) in guard let currentModel = currentModel else { // Else the model has disappeared (so the listener isn't listening to anything anymore). // Let's not remove the listener though, because we could screw something up due to timing issues (we are on a different thread) diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift index 70f6d79..a6dbd3d 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift @@ -71,7 +71,7 @@ extension Array where Element: WeakHolder { Note how you need to specify the types of the flatMap so it doesn't conflict with the default flatMap. */ public func flatMap(_ transform: (Element.Element?) throws -> T?) rethrows -> [U] where U.Element == T { - return try flatMap { (weakHolder: Element) in + return try compactMap { (weakHolder: Element) in let newElement = try transform(weakHolder.element) return newElement.flatMap(U.init) } diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchUpdateModel.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchUpdateModel.swift index 1b7f39c..d37d4a2 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchUpdateModel.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchUpdateModel.swift @@ -65,7 +65,7 @@ public final class BatchUpdateModel: ConsistencyManagerModel { } public func forEach(_ visit: (ConsistencyManagerModel) -> Void) { - models.flatMap { $0 }.forEach(visit) + models.compactMap { $0 }.forEach(visit) } public func isEqualToModel(_ other: ConsistencyManagerModel) -> Bool { diff --git a/Pods/ConsistencyManager/README.md b/Pods/ConsistencyManager/README.md index e26974a..8f51a5e 100644 --- a/Pods/ConsistencyManager/README.md +++ b/Pods/ConsistencyManager/README.md @@ -1,8 +1,8 @@ # Overview -[![Build Status](https://travis-ci.org/linkedin/ConsistencyManager-iOS.svg?branch=master)](https://travis-ci.org/linkedin/ConsistencyManager-iOS) -[![codecov](https://codecov.io/gh/linkedin/ConsistencyManager-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/linkedin/ConsistencyManager-iOS) -[![GitHub release](https://img.shields.io/github/release/linkedin/ConsistencyManager-iOS.svg?maxAge=86400)](https://github.com/linkedin/ConsistencyManager-iOS/releases) +[![Build Status](https://travis-ci.org/plivesey/ConsistencyManager-iOS.svg?branch=master)](https://travis-ci.org/linkedin/ConsistencyManager-iOS) +[![codecov](https://codecov.io/gh/plivesey/ConsistencyManager-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/linkedin/ConsistencyManager-iOS) +[![GitHub release](https://img.shields.io/github/release/plivesey/ConsistencyManager-iOS.svg?maxAge=86400)](https://github.com/linkedin/ConsistencyManager-iOS/releases) ![Platforms](https://img.shields.io/badge/platforms-iOS%20%7C%20tvOS%20%7C%20macOS-blue.svg) This library provides a way of keeping immutable models consistent. First, listeners listen to an immutable model. Whenever this model (or any child model) is updated, the Consistency Manager will generate a new model and notify its listeners. @@ -11,9 +11,9 @@ This library provides a way of keeping immutable models consistent. First, liste If you are interested in this project, you may want to consider using Rocket Data which provides a higher level API for the Consistency Manager. It implements caching, collection support, and conflict resolution. It's the recommended way for consuming the Consistency Manager. -GitHub: https://github.com/linkedin/RocketData +GitHub: https://github.com/plivesey/RocketData -Documentation: https://linkedin.github.io/RocketData +Documentation: https://plivesey.github.io/RocketData ## Installation @@ -29,7 +29,7 @@ Immutable models have many advantages including thread-safety, performance, and Immutable models can be visualized as trees. Each model has fields representing data (strings, ints, etc.) and pointers to other immutable models. Each model also may have an id to uniquely identify themselves. For instance, a messaging application could have these two models: -
+
In the application, two view controllers would register with the Consistency Manager that they are listening on these models. @@ -40,7 +40,7 @@ ConsistencyManager.sharedInstance.listenForUpdates(self) Later in the application, some source, like a network request, push notification, or user action, indicates that a person with id = 12 has come online. The application can then create a new person model which looks like this: -
+
Then, the application would update this model in the consistency manager. @@ -50,7 +50,7 @@ ConsistencyManager.sharedInstance.updateWithNewModel(personModel) The Consistency Manager finds that two models, Message and Contacts, need updating and creates new copies of these models with the updated Person model: -
+
The Consistency Manager then delivers the updated models to the subscribed listeners (view controllers in this case) via delegate callbacks. The view controller simply needs to set the new data and refresh its view. @@ -58,7 +58,7 @@ The Consistency Manager then delivers the updated models to the subscribed liste To get started, you should take a look at the docs: -https://linkedin.github.io/ConsistencyManager-iOS +https://plivesey.github.io/ConsistencyManager-iOS ## Swift Version diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 36c63ff..8d4890f 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,12 +1,12 @@ PODS: - - ConsistencyManager (5.2.0) + - ConsistencyManager (6.0.0) DEPENDENCIES: - - ConsistencyManager (~> 5.2.0) + - ConsistencyManager (~> 6.0.0) SPEC CHECKSUMS: - ConsistencyManager: 66a94b64e767a85698c2cb8c0184885760810fdc + ConsistencyManager: 10d92488107167a8d9df3cd93e529a15282ceaec -PODFILE CHECKSUM: 6a24e5e558e36fed2c36334f0ef9ea899f50d06c +PODFILE CHECKSUM: 23217410773c338b8571eb56301ac0b04b43d886 -COCOAPODS: 1.3.1 +COCOAPODS: 1.4.0 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index aafbd42..78919d0 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -9,16 +9,16 @@ /* Begin PBXBuildFile section */ 001DCC828873428A98B99A0BC22CE1F2 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */; }; 0C58787D7D27B7C77AFCE5D9E7907AF4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; }; - 1D1C8F94417AB6BC3998EACC64C39007 /* Pods-RocketDataTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F57EB9142715F7D70F6B909F8A1CC5 /* Pods-RocketDataTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D1C8F94417AB6BC3998EACC64C39007 /* Pods-RocketDataTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FCFE89BA9F05DED6E65029D382EE890D /* Pods-RocketDataTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2616F72C653C085A30DD4BCDE48A75BC /* TypeErasedWeakHolders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */; }; 263707EA21F73AFEB8A3CC633DB6997A /* WeakHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */; }; 283A9AE0309CB9B25265B87DC9E6AD2B /* WeakBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */; }; 2FF1D28805C55D445C47D34BBB668A3E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */; }; 36AC1E4F6E829EFF7EED533BA42B54DC /* Array+Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37F300E88B2CA90D3A3D10A6870FB9C6 /* Array+Weak.swift */; }; - 391F3198E7E11104DD405EC50F5B293F /* Pods-RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 271164874EA521DBF3A5E42882CA5E8C /* Pods-RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 391F3198E7E11104DD405EC50F5B293F /* Pods-RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 640EA154695DF3ED5D6FD672F1D4C133 /* Pods-RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3B69F7A493CC6D9BA7AAE82C3AB4EF09 /* ModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF654149B647AF0EFBE4E06EB29AE85D /* ModelChange.swift */; }; - 3ECAC56FEBB145EFE4FE9C22AB3D8BB5 /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0B69CEEA4F9C2BE9B0D9A4D90F7A922 /* ConsistencyManager-dummy.m */; }; - 4479A3765D16BC2D340B5057405C9143 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9794326D85F76046482EA80D8AA39BB9 /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3ECAC56FEBB145EFE4FE9C22AB3D8BB5 /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 76F4BD78A6CE5E42944AA52B2CCAF956 /* ConsistencyManager-dummy.m */; }; + 4479A3765D16BC2D340B5057405C9143 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B9D837D2271F96375DF74247A3B4E09F /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4B065B337B479561160E13B01EAEA0A1 /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */; }; 631B06351A176767C9F4BFE43D20F9DF /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15CE41697344C2A35DFC834791C3786 /* ConsistencyManagerModel.swift */; }; 7577D28FE99166790C3295B1D76CB27B /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05A0C2047B975238584455CCEB992E58 /* ConsistencyManagerListener.swift */; }; @@ -30,8 +30,8 @@ C4077D53936DFBC6E42745A1E9A70AC0 /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */; }; D19F59FE7170377F2C74E93B2D99BFE2 /* ConsistencyManagerUpdatesListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F07F9958F8B878BAFFD46112074114F /* ConsistencyManagerUpdatesListener.swift */; }; D76F64AC6718611B6D42CE69B17B2DB9 /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17F50305EFF1336458DB721E18C3AEC5 /* CollectionHelpers.swift */; }; - E11D211087E861CA3756E3F6C36C1F84 /* Pods-RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 089BD4D8DE576134661A5BBA93EC9964 /* Pods-RocketData-dummy.m */; }; - E665318A7006E2C694EC9A58B2306E0E /* Pods-RocketDataTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7735ED8DE53508944981B891E90C0EFE /* Pods-RocketDataTests-dummy.m */; }; + E11D211087E861CA3756E3F6C36C1F84 /* Pods-RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F06FAD2EA179899E7D880426B96477FD /* Pods-RocketData-dummy.m */; }; + E665318A7006E2C694EC9A58B2306E0E /* Pods-RocketDataTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9321986CE83DCE94805F366607BA7472 /* Pods-RocketDataTests-dummy.m */; }; F93B8C96B745676D18D9FFADA3825155 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; }; /* End PBXBuildFile section */ @@ -54,51 +54,51 @@ /* Begin PBXFileReference section */ 05A0C2047B975238584455CCEB992E58 /* ConsistencyManagerListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerListener.swift; sourceTree = ""; }; - 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 = ""; }; - 1306A5E433D9AAC7FFC59697BD9C9DB4 /* Pods-RocketDataTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-acknowledgements.plist"; sourceTree = ""; }; + 0DBC04CE87A7226C017D96509ADD8667 /* Pods-RocketData.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.release.xcconfig"; sourceTree = ""; }; 17F50305EFF1336458DB721E18C3AEC5 /* CollectionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionHelpers.swift; path = ConsistencyManager/Helpers/CollectionHelpers.swift; 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 = ""; }; + 20EB819382157D91824F47F5DB37E846 /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; 2F07F9958F8B878BAFFD46112074114F /* ConsistencyManagerUpdatesListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerUpdatesListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift; sourceTree = ""; }; - 34BC35DF87360F2E7CB7A5FF8B70C85D /* Pods-RocketDataTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.debug.xcconfig"; sourceTree = ""; }; 37F300E88B2CA90D3A3D10A6870FB9C6 /* Array+Weak.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Weak.swift"; path = "ConsistencyManager/DataStructures/Array+Weak.swift"; sourceTree = ""; }; - 3DEFF9A7C7AEE462D1ECECF5565903F6 /* Pods-RocketData-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketData-acknowledgements.markdown"; sourceTree = ""; }; - 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; + 418B2E5484F0C314317449CE6E9128CE /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 4488732A640B0CA0563771E757B590F7 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; - 5063F94E4E75CFA2BAE770E1AA393FBE /* Pods-RocketData.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.release.xcconfig"; sourceTree = ""; }; + 45987E2D20C7D13FAC35225FA433BDAB /* Pods-RocketDataTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.release.xcconfig"; sourceTree = ""; }; + 51A08B6DC11755D612003FDC0969E421 /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ConsistencyManager.modulemap; sourceTree = ""; }; + 52D0EF913F46A935528A2910C167694D /* Pods-RocketData-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketData-acknowledgements.markdown"; sourceTree = ""; }; + 52F9BA55026D5DEC797CFCF3DE392B53 /* Pods-RocketDataTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-frameworks.sh"; sourceTree = ""; }; + 579B7BB1EC6D986A6CBAD2AADD7962F0 /* Pods-RocketDataTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-acknowledgements.plist"; sourceTree = ""; }; 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; sourceTree = ""; }; - 66C2744F8A608DA03871DB23D72F53EB /* Pods-RocketDataTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-RocketDataTests.modulemap"; sourceTree = ""; }; - 6C7CAE382E5C46A01A4E6988A98B7E20 /* Pods-RocketDataTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-frameworks.sh"; sourceTree = ""; }; - 727B3E92C87FE914E054AD495E3BAFA8 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; 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 = ""; }; + 640EA154695DF3ED5D6FD672F1D4C133 /* Pods-RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketData-umbrella.h"; sourceTree = ""; }; + 6D7E99C8CD3B24BAE717D423020748A3 /* Pods-RocketDataTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-resources.sh"; sourceTree = ""; }; + 76F4BD78A6CE5E42944AA52B2CCAF956 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TypeErasedWeakHolders.swift; path = ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift; sourceTree = ""; }; - 82F57EB9142715F7D70F6B909F8A1CC5 /* Pods-RocketDataTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketDataTests-umbrella.h"; sourceTree = ""; }; 85F646650D2CB8D60E0A9B610A5C3CDB /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ConsistencyManager.framework; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D42BDBAB374E100C005BBAD7ACEDF24 /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; + 90F77EF7F396C0AE0B705BA254FD54B0 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9321986CE83DCE94805F366607BA7472 /* Pods-RocketDataTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketDataTests-dummy.m"; sourceTree = ""; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9794326D85F76046482EA80D8AA39BB9 /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; 9E9F2FE8BE50356D478F128EF00B1E04 /* ModelUpdates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelUpdates.swift; path = ConsistencyManager/DataStructures/ModelUpdates.swift; sourceTree = ""; }; 9ED23AF9DC693ED95F963C33D83DF07D /* Pods_RocketDataTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketDataTests.framework; 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 = ""; }; - A304558520339D84989A221FB4C054E0 /* Pods-RocketDataTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketDataTests-acknowledgements.markdown"; sourceTree = ""; }; + 9ED2CC48213888D8E95A6DB28E20FAD6 /* Pods-RocketDataTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RocketDataTests.modulemap"; sourceTree = ""; }; + A438013FC01794F626CEA7D8E4974692 /* Pods-RocketData-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketData-acknowledgements.plist"; sourceTree = ""; }; + A53CBDA185D4B377A4439231D8AE8378 /* Pods-RocketDataTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketDataTests-acknowledgements.markdown"; sourceTree = ""; }; + AB7CE9A2A6EDDD705B3BAF99DD2BFBE5 /* Pods-RocketDataTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.debug.xcconfig"; sourceTree = ""; }; B05401DC4854691A4F1241428F9578FE /* BatchListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchListener.swift; path = ConsistencyManager/DataStructures/BatchListener.swift; sourceTree = ""; }; B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; + B39A3B1FB6AA29AA46E55445F50E5459 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B4486E390C3341A54D024676ADB7D077 /* Pods_RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketData.framework; path = "Pods-RocketData.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + B9D837D2271F96375DF74247A3B4E09F /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakHolder.swift; path = ConsistencyManager/DataStructures/WeakHolder.swift; sourceTree = ""; }; - C9FEDD3F8F7CA24AAC8E600FCB9CAD7F /* Pods-RocketDataTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.release.xcconfig"; sourceTree = ""; }; D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakArray.swift; path = ConsistencyManager/DataStructures/WeakArray.swift; sourceTree = ""; }; - D0B69CEEA4F9C2BE9B0D9A4D90F7A922 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManager.swift; path = ConsistencyManager/ConsistencyManager.swift; sourceTree = ""; }; - EB487647543301DD5B39D50CF79D3EBC /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = ConsistencyManager.modulemap; sourceTree = ""; }; + E2C96F80C45B4D86D749C289CCC8BC7B /* Pods-RocketData.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.debug.xcconfig"; sourceTree = ""; }; + E3A4FF53D462A8AC016807C7536413FB /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakBox.swift; path = ConsistencyManager/DataStructures/WeakBox.swift; sourceTree = ""; }; + F06FAD2EA179899E7D880426B96477FD /* Pods-RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketData-dummy.m"; sourceTree = ""; }; F15CE41697344C2A35DFC834791C3786 /* ConsistencyManagerModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerModel.swift; path = ConsistencyManager/Protocols/ConsistencyManagerModel.swift; sourceTree = ""; }; - F614F9737D9CB81A40DC9CC666DD13FA /* Pods-RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-RocketData.modulemap"; sourceTree = ""; }; - FB0413A3831A098D5DC5A692B8557436 /* Pods-RocketData-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketData-resources.sh"; sourceTree = ""; }; + F31930C9F4C5EC0B3584B3CFD32FBF6E /* Pods-RocketData-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketData-resources.sh"; sourceTree = ""; }; + F9AF8BCD15EE2CF2F67AFD1334B14E09 /* Pods-RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RocketData.modulemap"; sourceTree = ""; }; + FCFE89BA9F05DED6E65029D382EE890D /* Pods-RocketDataTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketDataTests-umbrella.h"; sourceTree = ""; }; FF654149B647AF0EFBE4E06EB29AE85D /* ModelChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelChange.swift; path = ConsistencyManager/DataStructures/ModelChange.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -131,18 +131,18 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 232BAA320B9B0D379D3851CE103EEC4C /* Pods-RocketData */ = { + 238C853B1FADD6E1E003A8131E6D6A86 /* Pods-RocketData */ = { 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 */, + 418B2E5484F0C314317449CE6E9128CE /* Info.plist */, + F9AF8BCD15EE2CF2F67AFD1334B14E09 /* Pods-RocketData.modulemap */, + 52D0EF913F46A935528A2910C167694D /* Pods-RocketData-acknowledgements.markdown */, + A438013FC01794F626CEA7D8E4974692 /* Pods-RocketData-acknowledgements.plist */, + F06FAD2EA179899E7D880426B96477FD /* Pods-RocketData-dummy.m */, + F31930C9F4C5EC0B3584B3CFD32FBF6E /* Pods-RocketData-resources.sh */, + 640EA154695DF3ED5D6FD672F1D4C133 /* Pods-RocketData-umbrella.h */, + E2C96F80C45B4D86D749C289CCC8BC7B /* Pods-RocketData.debug.xcconfig */, + 0DBC04CE87A7226C017D96509ADD8667 /* Pods-RocketData.release.xcconfig */, ); name = "Pods-RocketData"; path = "Target Support Files/Pods-RocketData"; @@ -168,52 +168,34 @@ 4C755ACC96D46765BA54509600A21819 /* Targets Support Files */ = { isa = PBXGroup; children = ( - 232BAA320B9B0D379D3851CE103EEC4C /* Pods-RocketData */, - 4E7E7762A195520FF247CE548D21DC69 /* Pods-RocketDataTests */, + 238C853B1FADD6E1E003A8131E6D6A86 /* Pods-RocketData */, + 97D5DBB7AFDFC8B62152FBBBDAE82429 /* Pods-RocketDataTests */, ); name = "Targets Support Files"; sourceTree = ""; }; - 4E7E7762A195520FF247CE548D21DC69 /* Pods-RocketDataTests */ = { + 76D721B535F72D6F714AFAB1A05514EA /* Pods */ = { 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 */, + 9251B0A8965ECB686FEE0C60D7CC8E8B /* ConsistencyManager */, ); - name = "Pods-RocketDataTests"; - path = "Target Support Files/Pods-RocketDataTests"; + name = Pods; sourceTree = ""; }; - 71BED6FDBD7C528D21B3698590B28CAC /* Support Files */ = { + 79425952A22F3ADFD6062569480027E3 /* Support Files */ = { isa = PBXGroup; children = ( - EB487647543301DD5B39D50CF79D3EBC /* ConsistencyManager.modulemap */, - 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */, - D0B69CEEA4F9C2BE9B0D9A4D90F7A922 /* ConsistencyManager-dummy.m */, - 8D42BDBAB374E100C005BBAD7ACEDF24 /* ConsistencyManager-prefix.pch */, - 9794326D85F76046482EA80D8AA39BB9 /* ConsistencyManager-umbrella.h */, - 727B3E92C87FE914E054AD495E3BAFA8 /* Info.plist */, + 51A08B6DC11755D612003FDC0969E421 /* ConsistencyManager.modulemap */, + E3A4FF53D462A8AC016807C7536413FB /* ConsistencyManager.xcconfig */, + 76F4BD78A6CE5E42944AA52B2CCAF956 /* ConsistencyManager-dummy.m */, + 20EB819382157D91824F47F5DB37E846 /* ConsistencyManager-prefix.pch */, + B9D837D2271F96375DF74247A3B4E09F /* ConsistencyManager-umbrella.h */, + 90F77EF7F396C0AE0B705BA254FD54B0 /* Info.plist */, ); name = "Support Files"; path = "../Target Support Files/ConsistencyManager"; sourceTree = ""; }; - 76D721B535F72D6F714AFAB1A05514EA /* Pods */ = { - isa = PBXGroup; - children = ( - 9251B0A8965ECB686FEE0C60D7CC8E8B /* ConsistencyManager */, - ); - name = Pods; - sourceTree = ""; - }; 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( @@ -244,12 +226,30 @@ D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */, EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */, BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */, - 71BED6FDBD7C528D21B3698590B28CAC /* Support Files */, + 79425952A22F3ADFD6062569480027E3 /* Support Files */, ); name = ConsistencyManager; path = ConsistencyManager; sourceTree = ""; }; + 97D5DBB7AFDFC8B62152FBBBDAE82429 /* Pods-RocketDataTests */ = { + isa = PBXGroup; + children = ( + B39A3B1FB6AA29AA46E55445F50E5459 /* Info.plist */, + 9ED2CC48213888D8E95A6DB28E20FAD6 /* Pods-RocketDataTests.modulemap */, + A53CBDA185D4B377A4439231D8AE8378 /* Pods-RocketDataTests-acknowledgements.markdown */, + 579B7BB1EC6D986A6CBAD2AADD7962F0 /* Pods-RocketDataTests-acknowledgements.plist */, + 9321986CE83DCE94805F366607BA7472 /* Pods-RocketDataTests-dummy.m */, + 52F9BA55026D5DEC797CFCF3DE392B53 /* Pods-RocketDataTests-frameworks.sh */, + 6D7E99C8CD3B24BAE717D423020748A3 /* Pods-RocketDataTests-resources.sh */, + FCFE89BA9F05DED6E65029D382EE890D /* Pods-RocketDataTests-umbrella.h */, + AB7CE9A2A6EDDD705B3BAF99DD2BFBE5 /* Pods-RocketDataTests.debug.xcconfig */, + 45987E2D20C7D13FAC35225FA433BDAB /* Pods-RocketDataTests.release.xcconfig */, + ); + name = "Pods-RocketDataTests"; + path = "Target Support Files/Pods-RocketDataTests"; + sourceTree = ""; + }; A7FBE01DFB35645CFAE846405EBBF44C /* Products */ = { isa = PBXGroup; children = ( @@ -349,8 +349,8 @@ D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0830; - LastUpgradeCheck = 0700; + LastSwiftUpdateCheck = 0930; + LastUpgradeCheck = 0930; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -432,7 +432,7 @@ /* Begin XCBuildConfiguration section */ 170640A925F8C537A5A04B49F3EC0FB8 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C9FEDD3F8F7CA24AAC8E600FCB9CAD7F /* Pods-RocketDataTests.release.xcconfig */; + baseConfigurationReference = 45987E2D20C7D13FAC35225FA433BDAB /* Pods-RocketDataTests.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -466,7 +466,7 @@ }; 20CCA969089CBC42024E2E50A9DE0BF3 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A1ECCA60503B8A52C66D1701A61563B5 /* Pods-RocketData.debug.xcconfig */; + baseConfigurationReference = E2C96F80C45B4D86D749C289CCC8BC7B /* Pods-RocketData.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -500,7 +500,7 @@ }; 43A3A8A14F5DDC70AFE66DC3C82A95A9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5063F94E4E75CFA2BAE770E1AA393FBE /* Pods-RocketData.release.xcconfig */; + baseConfigurationReference = 0DBC04CE87A7226C017D96509ADD8667 /* Pods-RocketData.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -534,7 +534,7 @@ }; 691AC778963B2CE58112181683F4B418 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 34BC35DF87360F2E7CB7A5FF8B70C85D /* Pods-RocketDataTests.debug.xcconfig */; + baseConfigurationReference = AB7CE9A2A6EDDD705B3BAF99DD2BFBE5 /* Pods-RocketDataTests.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -568,7 +568,7 @@ }; A783EA57EC2CD3782C0E7AF55F812CB9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */; + baseConfigurationReference = E3A4FF53D462A8AC016807C7536413FB /* ConsistencyManager.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -597,7 +597,7 @@ }; name = Debug; }; - B254DAA6CF0CE39F4A3D11B90A7E059A /* Release */ = { + C3E37FB098AE76440E29106ADBF00CEB /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -607,10 +607,12 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -618,6 +620,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -628,13 +631,16 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; + DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -644,17 +650,19 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SYMROOT = "${SRCROOT}/../build"; }; - name = Release; + name = Debug; }; C3FC67C922AAEE495E94E5AB8B2E7C7E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4459B26763280C17EFBBEADF41AC0264 /* ConsistencyManager.xcconfig */; + baseConfigurationReference = E3A4FF53D462A8AC016807C7536413FB /* ConsistencyManager.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -684,7 +692,7 @@ }; name = Release; }; - E4B68EE12B21C47CB798D9B1ECA6D7A7 /* Debug */ = { + DA03565BE765DB55C6448FB363A44481 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -694,10 +702,12 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; @@ -705,6 +715,7 @@ CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -715,16 +726,13 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", + "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -734,15 +742,13 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; + MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SYMROOT = "${SRCROOT}/../build"; }; - name = Debug; + name = Release; }; /* End XCBuildConfiguration section */ @@ -750,8 +756,8 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - E4B68EE12B21C47CB798D9B1ECA6D7A7 /* Debug */, - B254DAA6CF0CE39F4A3D11B90A7E059A /* Release */, + C3E37FB098AE76440E29106ADBF00CEB /* Debug */, + DA03565BE765DB55C6448FB363A44481 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig index e9d13ff..8baf7c0 100644 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig +++ b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig @@ -1,10 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/ConsistencyManager PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} diff --git a/Pods/Target Support Files/ConsistencyManager/Info.plist b/Pods/Target Support Files/ConsistencyManager/Info.plist index 82c355f..e92eb78 100644 --- a/Pods/Target Support Files/ConsistencyManager/Info.plist +++ b/Pods/Target Support Files/ConsistencyManager/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 5.2.0 + 6.0.0 CFBundleSignature ???? CFBundleVersion 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 8499708..87a1f9f 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig @@ -1,10 +1,10 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager" +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' '@executable_path/../../Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager/ConsistencyManager.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods 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 8499708..87a1f9f 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig @@ -1,10 +1,10 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager" +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' '@executable_path/../../Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager/ConsistencyManager.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh index 3b227db..1a53cc6 100755 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh @@ -6,10 +6,14 @@ mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + # This protects against multiple targets copying the same framework dependency at the same time. The solution # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -58,12 +62,31 @@ install_framework() fi } -# Copies the dSYM of a vendored framework +# Copies and strips a vendored dSYM install_dsym() { local source="$1" if [ -r "$source" ]; then - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DWARF_DSYM_FOLDER_PATH}" + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi fi } @@ -85,10 +108,18 @@ code_sign_if_enabled() { # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do + for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" || exit 1 @@ -98,6 +129,7 @@ strip_invalid_archs() { if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } 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 cc88478..fedd0ca 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager" +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' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager/ConsistencyManager.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods 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 cc88478..fedd0ca 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager" +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' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager/ConsistencyManager.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/RocketData.xcodeproj/project.pbxproj b/RocketData.xcodeproj/project.pbxproj index 6f24516..0795968 100644 --- a/RocketData.xcodeproj/project.pbxproj +++ b/RocketData.xcodeproj/project.pbxproj @@ -322,16 +322,16 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = LinkedIn; TargetAttributes = { 612242B01C7B85D40017B0C4 = { CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 0920; + LastSwiftMigration = 0930; }; 612242BA1C7B85D40017B0C4 = { CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 0920; + LastSwiftMigration = 0930; }; }; }; @@ -532,12 +532,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -588,12 +590,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; diff --git a/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme b/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme index 6894b77..7895219 100644 --- a/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme +++ b/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme @@ -1,6 +1,6 @@ + codeCoverageEnabled = "YES" + shouldUseLaunchSchemeArgsEnv = "YES"> @@ -57,7 +56,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/RocketData/CollectionDataProvider.swift b/RocketData/CollectionDataProvider.swift index d4b7887..89f53d2 100644 --- a/RocketData/CollectionDataProvider.swift +++ b/RocketData/CollectionDataProvider.swift @@ -471,7 +471,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B // Sadly, optionally casting to [T] doesn't work due to a swift bug (at runtime, accessing the model crashes) // So, we're forced to use a map and cast each model individually - let newData = model.models.flatMap { model -> T? in + let newData = model.models.compactMap { model -> T? in Log.sharedInstance.assert(model is T || model == nil, "CollectionDataProvider found a model which was of the wrong type. This should never happen and indicates a bug in the library.") return model as? T } @@ -479,7 +479,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B // Here we are: // Enumerating the array so we get indexes // Then, reversing the array so that deletes can be applied in order (if you mutate the array while iterating over changes, you should do this in reverse order) - let collectionChangesInformation = data.enumerated().reversed().flatMap { (index, element) in + let collectionChangesInformation = data.enumerated().reversed().compactMap { (index, element) in return element.modelIdentifier.flatMap { (identifier) -> CollectionChangeInformation? in if updates.deletedModelIds.contains(identifier) { return .delete(index: index) diff --git a/RocketData/ParsingHelpers.swift b/RocketData/ParsingHelpers.swift index 4fcb368..28d2805 100644 --- a/RocketData/ParsingHelpers.swift +++ b/RocketData/ParsingHelpers.swift @@ -92,7 +92,7 @@ open class ParsingHelpers { if let Model = T.self as? U.Type { let model = parseBlock(Model) // Though this is a flat map, this should never fail since T is a subtype of U - let elements = model?.flatMap { $0 as? T } + let elements = model?.compactMap { $0 as? T } return (elements, nil) } else { return (nil, Error.wrongModelClassParsed.error()) @@ -124,7 +124,7 @@ open class ParsingHelpers { if let Model = T.self as? U.Type { let model = parseBlock(Model) // Though this is a flat map, this should never fail since T is a subtype of U - let elements = model.0?.flatMap { $0 as? T } + let elements = model.0?.compactMap { $0 as? T } return (elements, model.1) } else { return (nil, Error.wrongModelClassParsed.error()) diff --git a/RocketData/SharedCollectionManager.swift b/RocketData/SharedCollectionManager.swift index 3db41b9..cdc3e95 100644 --- a/RocketData/SharedCollectionManager.swift +++ b/RocketData/SharedCollectionManager.swift @@ -106,7 +106,7 @@ class SharedCollectionManager { If it fails, we will return nil and no change will be made. */ fileprivate static func genericArrayFromArray(_ array: [Any]) -> [T]? { - let actualData = array.flatMap { $0 as? T } + let actualData = array.compactMap { $0 as? T } if array.count == actualData.count { return actualData } else { diff --git a/RocketDataTests/CollectionChangeTests.swift b/RocketDataTests/CollectionChangeTests.swift index b534470..114ee45 100644 --- a/RocketDataTests/CollectionChangeTests.swift +++ b/RocketDataTests/CollectionChangeTests.swift @@ -61,10 +61,3 @@ class CollectionChangeTests: RocketDataTestCase { XCTAssertEqual(changes.deltaNumberOfElements(), -2) } } - -extension ModelUpdates { - init(changedModelIds: Set, deletedModelIds: Set) { - self.changedModelIds = changedModelIds - self.deletedModelIds = deletedModelIds - } -} diff --git a/RocketDataTests/TestModels/ParentModel.swift b/RocketDataTests/TestModels/ParentModel.swift index cfe9fd6..2b3d22b 100644 --- a/RocketDataTests/TestModels/ParentModel.swift +++ b/RocketDataTests/TestModels/ParentModel.swift @@ -39,7 +39,7 @@ final class ParentModel: Model, Equatable { return nil } - let otherChildren = self.otherChildren.flatMap { child in + let otherChildren = self.otherChildren.compactMap { child in return transform(child) as? ChildModel } return ParentModel(id: id, name: name, requiredChild: requiredChild, otherChildren: otherChildren) From bb56860a7927ba5a5471b084ee6bbc20814f7304 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Thu, 17 May 2018 14:03:24 -0700 Subject: [PATCH 11/33] Updating the xcode version and build script for travis --- .travis.yml | 2 +- build.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7791eb8..d59432b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: objective-c -osx_image: xcode9.2 +osx_image: xcode9.3 script: sh build.sh after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/build.sh b/build.sh index 141c0d4..d7c59c4 100755 --- a/build.sh +++ b/build.sh @@ -4,7 +4,7 @@ set -o pipefail && time xcodebuild clean test \ -workspace RocketData.xcworkspace \ -scheme RocketData \ - -sdk iphonesimulator11.2 \ + -sdk iphonesimulator \ -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.3' \ -destination 'platform=iOS Simulator,name=iPhone X,OS=11.1' \ | xcpretty From 4179135781482ec95ab3a42bbae48da56d3b1048 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Thu, 17 May 2018 14:37:05 -0700 Subject: [PATCH 12/33] Updating the podspec This is a major version upgrade because the swift 4.1 changes aren't backwards compatible --- RocketData.podspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RocketData.podspec b/RocketData.podspec index d15c8c7..bbd4eda 100644 --- a/RocketData.podspec +++ b/RocketData.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'RocketData' - spec.version = '5.0.0' + spec.version = '6.0.0' spec.license = { :type => 'Apache License, Version 2.0' } spec.homepage = 'https://plivesey.github.io/RocketData' spec.authors = 'plivesey' @@ -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', '~> 5.2.0' + spec.dependency 'ConsistencyManager', '~> 6.0.0' end From ad3f2a074267f20968c83fec3c3d12acf4a946ac Mon Sep 17 00:00:00 2001 From: Pritesh Shah Date: Fri, 25 May 2018 16:19:30 -0700 Subject: [PATCH 13/33] Fixed sample app (#78) - Updated `Pods/` - Converted `SampleApp` target to Swift 4 - Added `.gitignore` Changes made with cocoapods `1.5.0` and Xcode `9.3` --- .../xcshareddata/IDEWorkspaceChecks.plist | 8 + SampleApp/.gitignore | 36 + SampleApp/Podfile.lock | 18 +- .../ConsistencyManager.swift | 116 +- .../DataStructures/Array+Weak.swift | 99 ++ .../DataStructures/ModelChange.swift | 44 + .../DataStructures/ModelUpdates.swift | 5 + .../TypeErasedWeakHolders.swift | 38 + .../DataStructures/WeakArray.swift | 118 +- .../DataStructures/WeakBox.swift | 23 + .../DataStructures/WeakHolder.swift | 45 + .../Helpers/CollectionHelpers.swift | 13 - .../Protocols/ConsistencyManagerModel.swift | 6 +- .../ConsistencyManagerUpdatesListener.swift | 36 + SampleApp/Pods/ConsistencyManager/README.md | 2 + .../Local Podspecs/RocketData.podspec.json | 12 +- SampleApp/Pods/Manifest.lock | 18 +- SampleApp/Pods/Pods.xcodeproj/project.pbxproj | 1169 +++++++++-------- .../ConsistencyManager-prefix.pch | 8 + .../ConsistencyManager-umbrella.h | 8 + .../ConsistencyManager.xcconfig | 8 +- .../ConsistencyManager/Info.plist | 2 +- .../PINCache/PINCache-prefix.pch | 8 + .../PINCache/PINCache-umbrella.h | 8 + .../PINCache/PINCache.xcconfig | 8 +- .../Pods-SampleApp-frameworks.sh | 94 +- .../Pods-SampleApp-resources.sh | 46 +- .../Pods-SampleApp/Pods-SampleApp-umbrella.h | 8 + .../Pods-SampleApp.debug.xcconfig | 10 +- .../Pods-SampleApp.release.xcconfig | 10 +- .../RocketData/Info.plist | 2 +- .../RocketData/RocketData-prefix.pch | 8 + .../RocketData/RocketData-umbrella.h | 8 + .../RocketData/RocketData.xcconfig | 10 +- SampleApp/SampleApp.xcodeproj/project.pbxproj | 52 +- .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../RocketDataCacheDelegate.swift | 4 +- 37 files changed, 1396 insertions(+), 720 deletions(-) create mode 100644 RocketData.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 SampleApp/.gitignore create mode 100644 SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift create mode 100644 SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelChange.swift create mode 100644 SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift create mode 100644 SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakBox.swift create mode 100644 SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakHolder.swift create mode 100644 SampleApp/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift create mode 100644 SampleApp/SampleApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/RocketData.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/RocketData.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/RocketData.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/SampleApp/.gitignore b/SampleApp/.gitignore new file mode 100644 index 0000000..5d5faab --- /dev/null +++ b/SampleApp/.gitignore @@ -0,0 +1,36 @@ +# Created by https://www.gitignore.io/api/xcode + +### Xcode ### +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated +build/ +DerivedData/ + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ + +## Other +*.moved-aside +*.xccheckout +*.xcscmblueprint + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +/*.gcno + + +# End of https://www.gitignore.io/api/xcode diff --git a/SampleApp/Podfile.lock b/SampleApp/Podfile.lock index 5985f8b..6f23568 100644 --- a/SampleApp/Podfile.lock +++ b/SampleApp/Podfile.lock @@ -1,19 +1,23 @@ PODS: - - ConsistencyManager (4.0.0) + - ConsistencyManager (5.2.0) - PINCache (2.3) - - RocketData (4.0.1): - - ConsistencyManager (~> 4.0.0) + - RocketData (5.0.0): + - ConsistencyManager (~> 5.2.0) DEPENDENCIES: - PINCache (from `https://github.com/pinterest/PINCache.git`, commit `58635e4ff8d00fcd25084259a625c0615e9d071a`) - RocketData (from `..`) +SPEC REPOS: + https://github.com/CocoaPods/Specs.git: + - ConsistencyManager + EXTERNAL SOURCES: PINCache: :commit: 58635e4ff8d00fcd25084259a625c0615e9d071a :git: https://github.com/pinterest/PINCache.git RocketData: - :path: .. + :path: ".." CHECKOUT OPTIONS: PINCache: @@ -21,10 +25,10 @@ CHECKOUT OPTIONS: :git: https://github.com/pinterest/PINCache.git SPEC CHECKSUMS: - ConsistencyManager: 323ee466a5c933973529dfa5baa5cbc238633a67 + ConsistencyManager: 66a94b64e767a85698c2cb8c0184885760810fdc PINCache: ce36ed282031b92fc7733ffe831f474ff80fddc2 - RocketData: a661f6e75dd8741dbe95856ca84f5e16ab3b377e + RocketData: 15de5666f229bd9eeba4854fbe224b532c79ae03 PODFILE CHECKSUM: b5eb42e36b4847085a928ca720bb30354bb63d2e -COCOAPODS: 1.1.0.rc.3 +COCOAPODS: 1.5.0 diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift index 0991ae7..2d5d063 100644 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift @@ -94,6 +94,13 @@ open class ConsistencyManager { */ var listeners = [String: WeakListenerArray]() + /** + This is an array of all the model update listeners. + These will get notified whenever anything changes in the Consistency Manager. + See `addModelUpdatesListener(_:)` for more info. + */ + var modelUpdatesListeners = WeakUpdatesListenerArray() + /** We expect fast lookup (regardless of O(n) searches) because listeners are typically view controllers and most apps will not have too many. @@ -179,17 +186,15 @@ open class ConsistencyManager { } dispatchTask { _ in for (key, listenerArray) in self.listeners { - // Let's map the listener array so that we remove any occurance of the listener - var newListeners = listenerArray.map { element in + let newListeners = listenerArray.filter { element in if let element = element { - if element === listener { - return nil - } + // Keep the element if it is not the current listener + return element !== listener + } else { + // Drop all nil values + return false } - return element } - // Do some cleanup - _ = newListeners.prune() self.listeners[key] = newListeners } } @@ -310,9 +315,13 @@ open class ConsistencyManager { */ open func updateModel(_ model: ConsistencyManagerModel, context: Any? = nil) { dispatchTask { cancelled in - let tuple = self.childrenAndListenersForModel(model) - let optionalModelUpdates = CollectionHelpers.optionalValueDictionaryFromDictionary(tuple.modelUpdates) - self.updateListeners(tuple.listeners, withUpdatedModels: optionalModelUpdates, context: context, cancelled: cancelled) + let (modelUpdates, listeners) = self.childrenAndListenersForModel(model) + self.updateListeners( + listeners, + with: modelUpdates, + context: context, + originalModel: model, + cancelled: cancelled) } } @@ -346,8 +355,13 @@ open class ConsistencyManager { }() // A simple update dictionary. We're just deleting a model with this id. Nothing else. - let updatesDictionary: [String: [ConsistencyManagerModel]?] = [ id: nil ] - self.updateListeners(listenersArray, withUpdatedModels: updatesDictionary, context: context, cancelled: cancelled) + let updatesDictionary = [id: ModelChange.deleted] + self.updateListeners( + listenersArray, + with: updatesDictionary, + context: context, + originalModel: model, + cancelled: cancelled) } else { DispatchQueue.main.async { self.delegate?.consistencyManager(self, failedWithCriticalError: CriticalError.DeleteIDFailure.rawValue) @@ -382,6 +396,38 @@ open class ConsistencyManager { } } + /** + Adds an update listener to the consistency manager. + This listener will get notified of ALL changes posted to the consistency manager. + This method must be called on the main thread. + + ## Use Case + + This is useful if you want to filter on changes to the consistency manager. For instance, you may want to listen to all added models of a certain class. + If a model is added, you could add it to an existing array (similar to predicates). + Or if you have an ID for a model that isn't in the system yet, you can listen to changes on it. + + ## Performance + + The `ConsistencyManagerUpdatesListener` methods are called on the **main thread** for every model updated in the system. + It's recommended to do as minimal processing as possible here so you don't block the main thread. + It's also recommended to have a small number of global listeners. + */ + open func addModelUpdatesListener(_ updatesListener: ConsistencyManagerUpdatesListener) { + modelUpdatesListeners.append(updatesListener) + } + + /** + Removes an update listener to the consistency manager. + This method must be called on the main thread. + You shouldn't need to call this in general since listeners are removed whenever the object is deallocated. + */ + open func removeModelUpdatesListener(_ updatesListener: ConsistencyManagerUpdatesListener) { + modelUpdatesListeners = modelUpdatesListeners.filter { currentListener in + currentListener !== updatesListener + } + } + /** This will remove any unnecessary memory held by the consistency manager. This is called automatically whenever there is a memory warning, so usually you should not need to ever call this method. @@ -489,8 +535,8 @@ open class ConsistencyManager { If the application is not using projections, it will always just contain one model. It also has an array of listeners that need to be updated because of this model change. */ - private func childrenAndListenersForModel(_ model: ConsistencyManagerModel) -> (modelUpdates: [String: [ConsistencyManagerModel]], listeners: [ConsistencyManagerListener]) { - let updates = DictionaryHolder() + private func childrenAndListenersForModel(_ model: ConsistencyManagerModel) -> (modelUpdates: [String: ModelChange], listeners: [ConsistencyManagerListener]) { + let updates = DictionaryHolder() let listenersArray = ArrayHolder() childrenAndListenersForModel(model, modelUpdates: updates, listenersArray: listenersArray) return (updates.dictionary, listenersArray.array) @@ -502,14 +548,14 @@ open class ConsistencyManager { I tried doing this with inout instead of making it truly functional, but turns out that inout doesn't work very well. Changing to inout helped me about 10%, but after changing to a DictionaryHolder and ArrayHolder, performance was improved ~50x. */ - private func childrenAndListenersForModel(_ model: ConsistencyManagerModel, modelUpdates: DictionaryHolder, listenersArray: ArrayHolder) { + private func childrenAndListenersForModel(_ model: ConsistencyManagerModel, modelUpdates: DictionaryHolder, listenersArray: ArrayHolder) { if let id = model.modelIdentifier { // Here, we want to store a list of all the projections for a model // Normally, this will just be one element as all models with the same id have the same projection // However, if we have multiple versions of the same model, we want to make sure they are all used to merge a new model let projections: [ConsistencyManagerModel] - if var currentUpdates = modelUpdates.dictionary[id] { + if let currentChanges = modelUpdates.dictionary[id], case .updated(var currentUpdates) = currentChanges { let alreadyContainsProjection = currentUpdates.contains { currentProjection in return currentProjection.projectionIdentifier == model.projectionIdentifier } @@ -522,7 +568,7 @@ open class ConsistencyManager { // If we don't have any models from this ID yet, we should just add the new model projections = [model] } - modelUpdates.dictionary[id] = projections + modelUpdates.dictionary[id] = .updated(projections) // Here, we're going to take all the listeners to this model and add it to our listeners array // We're not going to prune the listeners array because of performance reasons (we want updates to go fast) @@ -569,10 +615,14 @@ open class ConsistencyManager { In the case of this listener being in a paused state, the function updates the listener's PausedListener struct accordingly, without notifying the delegate. */ - private func updateListeners(_ listeners: [ConsistencyManagerListener], withUpdatedModels updatedModels: [String: [ConsistencyManagerModel]?], context: Any?, cancelled: ()->Bool) { + private func updateListeners(_ listeners: [ConsistencyManagerListener], + with updatedModels: [String: ModelChange], + context: Any?, + originalModel: ConsistencyManagerModel, + cancelled: () -> Bool) { var currentModels: [(listener: ConsistencyManagerListener, currentModel: ConsistencyManagerModel?)] = [] - + // In one dispatch_sync, we'll get all of the current models for each listener DispatchQueue.main.sync { currentModels = listeners.map { listener in @@ -632,6 +682,13 @@ open class ConsistencyManager { listener.modelUpdated(newModel, updates: modelUpdates, context: context) } } + self.modelUpdatesListeners.forEach { updatesListener in + updatesListener?.consistencyManager( + self, + updatedModel: originalModel, + changes: updatedModels, + context: context) + } } } @@ -641,16 +698,15 @@ open class ConsistencyManager { This function uses the map functionality of the models to generate a new model given a list of modelUpdates. It returns a new model, a list of changes (ModelUpdates) and a list of any new models which were not contained in the old model. */ - private func updatedModelFromOriginalModel(_ model: ConsistencyManagerModel, updatedModels: [String: [ConsistencyManagerModel]?], context: Any?) -> (model: ConsistencyManagerModel?, updates: ModelUpdates, newModels: [ConsistencyManagerModel]) { + private func updatedModelFromOriginalModel(_ model: ConsistencyManagerModel, updatedModels: [String: ModelChange], context: Any?) -> (model: ConsistencyManagerModel?, updates: ModelUpdates, newModels: [ConsistencyManagerModel]) { if let id = model.modelIdentifier { - if let replacementModel = updatedModels[id] { + if let modelChange = updatedModels[id] { // The id matches, so we should replace this model with a different model - // Important: replacementModel could actually be nil here. This is because modelUpdates[id] is actually type: ConsistencyManagerModel??. - // So, the let statement only unwraps it once. This is a good thing since if it is nil, we want to delete the model. // At the point, we know that this is an id we care about. Let's see if it's an update or a delete. - if let replacementModel = replacementModel { + switch modelChange { + case .updated(let replacementModels): // It's an update. Let's apply the changes. - let mergedReplacementModel = mergedModelFromModel(model, withUpdates: replacementModel) + let mergedReplacementModel = mergedModelFromModel(model, withUpdates: replacementModels) if !mergedReplacementModel.isEqualToModel(model) { // We've found something to replace, and there's actually an update delegate?.consistencyManager(self, willReplaceModel: model, withModel: mergedReplacementModel, context: context) @@ -662,7 +718,7 @@ open class ConsistencyManager { // We've found there's an update here, but there's no actual change. So let's short curcuit here so we don't waste time recursing. return (model, ModelUpdates(changedModelIds: [], deletedModelIds: []), []) } - } else { + case .deleted: // It was a delete. // nil was an update, so returning it in updates return (nil, ModelUpdates(changedModelIds: [], deletedModelIds: [id]), []) @@ -709,14 +765,13 @@ open class ConsistencyManager { It does not include models which have been deleted. It's useful for detecting the full set of updates for an UpdateModel. */ - private func changedSubmodelIdsFromModel(_ model: ConsistencyManagerModel, modelUpdates: [String: [ConsistencyManagerModel]?]) -> Set { + private func changedSubmodelIdsFromModel(_ model: ConsistencyManagerModel, modelUpdates: [String: ModelChange]) -> Set { var changedModels = Set() model.forEach { child in if let id = child.modelIdentifier, let update = modelUpdates[id] { - // Update is still an optional because the value of model updates is optional // We can ignore deletes because we are only looking for updated models. // Here, we should merge and check for equality to see if anything has actually changed. - if let update = update, !self.mergedModelFromModel(child, withUpdates: update).isEqualToModel(child) { + if case .updated(let models) = update, !self.mergedModelFromModel(child, withUpdates: models).isEqualToModel(child) { // There's another update here changedModels.insert(id) } @@ -789,6 +844,7 @@ open class ConsistencyManager { NotificationCenter.default.removeObserver(self) } + @objc func applicationDidReceiveMemoryWarning(_ notification: Notification) { delegate?.applicationDidReceiveMemoryWarning(notification) } diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift new file mode 100644 index 0000000..70f6d79 --- /dev/null +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift @@ -0,0 +1,99 @@ +// © 2016 LinkedIn Corp. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +import Foundation + +extension Array where Element: WeakHolder { + /** + This method iterates through the array and removes any element which is nil. + It also returns an array of nonoptional values for convenience. + + This method runs in O(n), so you should only call this method every time you need it. You should only call it once. + */ + public mutating func prune() -> [Element.Element] { + var nonOptionalElements: [Element.Element] = [] + self = self.filter { (element: Element.Element?) in + if let element = element { + nonOptionalElements.append(element) + return true + } else { + return false + } + } + return nonOptionalElements + } + + /** + This defines a map function which returns an array of WeakHolder. + However, the `transform` function converts the inner elements (instead of the outer elements). + This allows you to write code like: + ``` + var array = [WeakStruct(element: UIViewController())]() + let viewArray: [WeakStruct] = array.map { (viewController: UIViewController?) in + return viewController?.view + } + ``` + + Note how you need to specify the types of the map so it doesn't conflict with the default map. + It will not prune out nil values so the resulting array will always maintain count. + */ + public func map(_ transform: (Element.Element?) throws -> T?) rethrows -> [U] where U.Element == T { + return try map { (weakHolder: Element) in + let newElement = try transform(weakHolder.element) + return U.init(element: newElement) + } + } + + /** + This defines a flatMap function which returns an array of WeakHolder. + However, the `transform` function converts the inner elements (instead of the outer elements). + + IMPORTANT: This function automatically runs a `prune()` as it goes as you may expect with `flatMap`. + It will call the transform function on any inner element (including nil), but will filter out all nils in the final result. + + This allows you to write code like: + ``` + var array = [WeakStruct(element: UIViewController())]() + let viewArray: [WeakStruct] = array.flatMap { (viewController: UIViewController) in + if viewController?.view.alpha == 0 { + return nil + } + return viewController?.view + } + ``` + + Note how you need to specify the types of the flatMap so it doesn't conflict with the default flatMap. + */ + public func flatMap(_ transform: (Element.Element?) throws -> T?) rethrows -> [U] where U.Element == T { + return try flatMap { (weakHolder: Element) in + let newElement = try transform(weakHolder.element) + return newElement.flatMap(U.init) + } + } + + /** + This defines a filter function which returns an array of WeakHolder. + However, the `isIncluded` function converts the inner elements (instead of the outer elements). + + This allows you to write code like: + ``` + var array = [WeakStruct(element: UIViewController())]() + let viewArray: [WeakStruct] = array.filter { (viewController: UIViewController?) in + return (viewController?.view.alpha == 0) ?? false + } + ``` + + Note how you need to specify the types of the flatMap so it doesn't conflict with the default flatMap. + */ + public func filter(_ isIncluded: (Element.Element?) throws -> Bool) rethrows -> [Element] { + return try filter { (weakHolder: Element) in + return try isIncluded(weakHolder.element) + } + } +} diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelChange.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelChange.swift new file mode 100644 index 0000000..665a57e --- /dev/null +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelChange.swift @@ -0,0 +1,44 @@ +// © 2016 LinkedIn Corp. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +import Foundation + +/** + This class is used to show which child models have changed. This object is usually in a dictionary: `[String: ModelChange]`. + The strings represent IDs and it shows what's changed in this ID. Either the ID has been deleted or updated. + If it's been updated, there are potentially several models that have updated if you are using projections. + */ +public enum ModelChange: Equatable { + /** + This indicates a model has been updated and lists the new models. + If you are using projections, there may be multiple models that represent this change. + Otherwise, there will just be one model here. + */ + case updated([ConsistencyManagerModel]) + /** + This indicates a model has been deleted. + */ + case deleted + + public static func ==(lhs: ModelChange, rhs: ModelChange) -> Bool { + switch (lhs, rhs) { + case (.updated(let l), .updated(let r)): + guard l.count == r.count else { + return false + } + return zip(l, r).reduce(true) { isEqual, tuple in + return isEqual && tuple.0.isEqualToModel(tuple.1) + } + case (.deleted, .deleted): + return true + default: + return false + } + } +} diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelUpdates.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelUpdates.swift index c8c279b..c6fb410 100644 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelUpdates.swift +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelUpdates.swift @@ -29,4 +29,9 @@ public struct ModelUpdates { If you return nil from map (indicating a cascading delete), multiple models may be deleted. All these ids will be included in this set. */ public var deletedModelIds: Set + + public init(changedModelIds: Set, deletedModelIds: Set) { + self.changedModelIds = changedModelIds + self.deletedModelIds = deletedModelIds + } } diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift new file mode 100644 index 0000000..b70bd03 --- /dev/null +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift @@ -0,0 +1,38 @@ +// © 2016 LinkedIn Corp. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +import Foundation + +/** + This defines a WeakHolder which specifically holds a ConsistencyManagerListener. + This is useful because WeakBox is illegal in Swift. You need a concrete type like this one. + */ +public struct WeakListenerBox: WeakHolder { + + // Sadly, we need to declare this because by default, it's internal + public init(element: ConsistencyManagerListener?) { + self.element = element + } + + public weak var element: ConsistencyManagerListener? +} + +/** + This defines a WeakHolder which specifically holds a ConsistencyManagerUpdatesListener. + This is useful because WeakBox is illegal in Swift. You need a concrete type like this one. + */ +public struct WeakUpdatesListenerBox: WeakHolder { + + // Sadly, we need to declare this because by default, it's internal + public init(element: ConsistencyManagerUpdatesListener?) { + self.element = element + } + + public weak var element: ConsistencyManagerUpdatesListener? +} diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakArray.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakArray.swift index 7708e0f..8d4e151 100644 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakArray.swift +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakArray.swift @@ -9,24 +9,42 @@ import Foundation +/** + This typealias allows you to create a `WeakArray` with any class type. + e.g. + `var weakArray = WeakArray()` + */ +public typealias WeakArray = AnyWeakArray> + +/** + This typealias allows you to create a `WeakArray` with ConsistencyManagerListener. + */ +public typealias WeakListenerArray = AnyWeakArray + +/** + This typealias allows you to create a `WeakArray` with ConsistencyManagerUpdatesListener. + */ +public typealias WeakUpdatesListenerArray = AnyWeakArray /** - This class defines an array which doesn't hold strong references to its elements. If an element in the array gets dealloced at some point, accessing that element will just return nil. + This class defines an array which doesn't hold strong references to its elements. + If an element in the array gets dealloced at some point, accessing that element will just return nil. + It takes advantage of out Array+Weak extension, so all the functions here are just pass throughs to the Array class. You cannot put structs into the WeakArray because structs cannot be declared with weak. You can only put classes into the array. KNOWN BUGS You can't create a WeakArray. This is because of an Apple bug: https://bugs.swift.org/browse/SR-1176. + So, instead of this, it's recommended to create your own wrapper class and create a typealias (as seen above). */ -// Here I want to do this: WeakArray, but that doesn't work. So this is a decent work around. -public struct WeakArray: ExpressibleByArrayLiteral { +public struct AnyWeakArray: ExpressibleByArrayLiteral { // MARK: Internal /// The internal data is an array of closures which return weak T's - fileprivate var data: [() -> T?] + fileprivate var data: [T] // MARK: Initializers @@ -41,21 +59,25 @@ public struct WeakArray: ExpressibleByArrayLiteral { Creates an array with a certain capacity. All elements in the array will be nil. */ public init(count: Int) { - data = Array<() -> T?>(repeating: { - return nil - }, count: count) + data = Array(repeating: T(element: nil), count: count) } /** Array literal initializer. Allows you to initialize a WeakArray with array notation. */ - public init(arrayLiteral elements: T?...) { - data = [] - for element in elements { - data.append(weakClosureWithValue(element)) + public init(arrayLiteral elements: T.Element?...) { + data = elements.map { element in + return T.init(element: element) } } + /** + Creates an array with the inner type `[T]` where T is a WeakHolder. + */ + public init(_ data: [T]) { + self.data = data + } + // MARK: Public Properties /// How many elements the array stores @@ -68,8 +90,8 @@ public struct WeakArray: ExpressibleByArrayLiteral { /** Append an element to the array. */ - public mutating func append(_ element: T?) { - data.append(weakClosureWithValue(element)) + public mutating func append(_ element: T.Element?) { + data.append(T.init(element: element)) } /** @@ -77,79 +99,75 @@ public struct WeakArray: ExpressibleByArrayLiteral { It also returns an array of nonoptional values for convenience. This method runs in O(n), so you should only call this method every time you need it. You should only call it once. - i.e. Don't do this: - for _ in array.prune() */ - public mutating func prune() -> [T] { - var nonOptionalElements = [T]() - data = data.filter { closure in - let value = closure() - if let value = value { - nonOptionalElements.append(value) - return true - } else { - return false - } - } - return nonOptionalElements + public mutating func prune() -> [T.Element] { + return data.prune() } /** - This function is similar to the map function on Array. It takes a function that maps T to U and returns a WeakArray of the same length with this function applied to each element. + This function is similar to the map function on Array. + It takes a function that maps T to U and returns a WeakArray of the same length with this function applied to each element. + It does not prune any nil elements as part of this map so the resulting count will be equal to the current count. */ - public func map(_ function: (T?) -> U?) -> WeakArray { - var newArray = WeakArray() - for value in self { - let newValue = function(value) - newArray.append(newValue) - } - return newArray + public func map(_ transform: (T.Element?) throws -> U.Element?) rethrows -> AnyWeakArray { + let newArray: [U] = try data.map(transform) + return AnyWeakArray(newArray) } - // MARK: Private Methods + /** + This function is similar to the flatMap function on Array. + It takes a function that maps T to U? and returns a WeakArray with this function applied to each element. + It automatically prunes any nil elements as part of this flatMap and removes them. + */ + public func flatMap(_ transform: (T.Element?) throws -> U.Element?) rethrows -> AnyWeakArray { + let newArray: [U] = try data.flatMap(transform) + return AnyWeakArray(newArray) + } - fileprivate func weakClosureWithValue(_ object: T?) -> () -> T? { - return { [weak object] in - return object - } + /** + This function is similar to the filter function on Array. + The `isIncluded` closure simply returns whether you want the element in the array. + */ + public func filter(_ isIncluded: (T.Element?) throws -> Bool) rethrows -> AnyWeakArray { + let newArray: [T] = try data.filter(isIncluded) + return AnyWeakArray(newArray) } } // MARK: MutableCollectionType Implementation -extension WeakArray: MutableCollection { +extension AnyWeakArray: MutableCollection { // Required by SequenceType - public func makeIterator() -> IndexingIterator> { + public func makeIterator() -> IndexingIterator> { // Rather than implement our own generator, let's take advantage of the generator provided by IndexingGenerator - return IndexingIterator>(_elements: self) + return IndexingIterator>(_elements: self) } // Required by _CollectionType public func index(after i: Int) -> Int { - return i + 1 + return data.index(after: i) } // Required by _CollectionType public var endIndex: Int { - return self.count + return data.endIndex } // Required by _CollectionType public var startIndex: Int { - return 0 + return data.startIndex } /** Getter and setter array */ - public subscript(index: Int) -> T? { + public subscript(index: Int) -> T.Element? { get { - let closure = data[index] - return closure() + return data[index].element } set { - data[index] = weakClosureWithValue(newValue) + data[index] = T.init(element: newValue) } } } diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakBox.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakBox.swift new file mode 100644 index 0000000..8753665 --- /dev/null +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakBox.swift @@ -0,0 +1,23 @@ +// © 2016 LinkedIn Corp. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +import Foundation + +/** + This is a generic implementation of `WeakHolder` which we use the in `WeakArray` class. + */ +public struct WeakBox: WeakHolder { + + // Sadly, we need to declare this because by default, it's internal + public init(element: T?) { + self.element = element + } + + public weak var element: T? +} diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakHolder.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakHolder.swift new file mode 100644 index 0000000..6ef79d1 --- /dev/null +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakHolder.swift @@ -0,0 +1,45 @@ +// © 2016 LinkedIn Corp. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +import Foundation + +/** + This protocol defines a box for an element. + It's useful because we can declare both generic types (e.g. `WeakBox`) and concrete types (e.g. `WeakProtocolBox`). + */ +public protocol WeakHolder { + + associatedtype Element + + /** + A getter for the inner element. Likely, this var will be labeled as weak in your implementation. + */ + var element: Element? { get } + + /** + An initializer for the `WeakHolder`. + This is useful to implement `map`. + */ + init(element: Element?) + + /** + A map function which returns another `WeakHolder`. This allows us to treat `WeakHolder` as a monad and create other `WeakHolders` from the current one. + You do not need to implement this as it is implemented in the extension. + */ + func map(_ transform: (Element) throws -> T) rethrows -> U where U.Element == T +} + +extension WeakHolder { + public func map(_ transform: (Element) throws -> T) rethrows -> U where U.Element == T { + // First, we want to create a new element from the current element using the transform function provided + let newElement = try element.flatMap(transform) + // Then, we simply initialzed U with the new element. + return U.init(element: newElement) + } +} diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/Helpers/CollectionHelpers.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/Helpers/CollectionHelpers.swift index d2dc5bd..7ceebfa 100644 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/Helpers/CollectionHelpers.swift +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/Helpers/CollectionHelpers.swift @@ -9,19 +9,6 @@ import Foundation -class CollectionHelpers { - /** - This function essentially does a cast, but this cast isn't allowed in swift so we have to manually create a new dictionary. - */ - class func optionalValueDictionaryFromDictionary(_ dictionary: [A: B]) -> [A: B?] { - var newDictionary = [A: B?]() - for (key, value) in dictionary { - newDictionary[key] = value - } - return newDictionary - } -} - /** This class creates a reference counted dictionary instead of doing structs. It's used for a specific part of the consistency manager for performance reasons. diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift index 41000a8..921a3ce 100644 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift @@ -41,7 +41,7 @@ class Person: ConsistencyManagerModel { return Person(id: id, name: name, currentLocation: newCurrentLocation, homeTown: newHomeTown!) } - func forEach(function: ConsistencyManagerModel -> ()) { + func forEach(function: ConsistencyManagerModel -> Void) { if let currentLocation = currentLocation { function(currentLocation) } @@ -77,7 +77,7 @@ class Location: ConsistencyManagerModel { return self } - func forEach(function: ConsistencyManagerModel -> ()) { + func forEach(function: ConsistencyManagerModel -> Void) { // Do nothing. Nothing to iterate over. } @@ -140,7 +140,7 @@ public protocol ConsistencyManagerModel { For instance: extension ConsistencyManagerModel { - func forEach(function: ConsistencyManagerModel -> ()) { + func forEach(function: ConsistencyManagerModel -> Void) { _ = map() { model in function(model) return model diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift new file mode 100644 index 0000000..507a379 --- /dev/null +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift @@ -0,0 +1,36 @@ +// © 2016 LinkedIn Corp. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +import Foundation + +/** + This protocol allows a class to listen to ALL changes to the consistency manager. + */ +public protocol ConsistencyManagerUpdatesListener: class { + /** + Called whenever there is any change to the consistency manager. + This method is run on the main thread. If you have any extensive processing, it's highly recommended to do this on a background thread + since this will be called for every single consistency update. + + This method passes back a list of all the updates made as a result of this change. + It is a dictionary of `[modelIdentifier: change]`. All of the model's children will be in this dictionary if it was an update. + + - parameter consistencyManager: The consistency manager which has received the change. + - parameter model: The model which has been updated (NOTE: This model may have been deleted). + To check if it has been deleted, check `changes[model.modelIdentifier] == .deleted`. + - parameter changes: This is a flattened representation of all the children of the model that was updated. + It is a dictionary from ID to model. If it is nil, it has been deleted. + The value is an array because multiple models with the same ID may have been updated. This only applies if you're using projections. + - parameter context: The context passed in with this update + */ + func consistencyManager(_ consistencyManager: ConsistencyManager, + updatedModel model: ConsistencyManagerModel, + changes: [String: ModelChange], + context: Any?) +} diff --git a/SampleApp/Pods/ConsistencyManager/README.md b/SampleApp/Pods/ConsistencyManager/README.md index 67264ac..e26974a 100644 --- a/SampleApp/Pods/ConsistencyManager/README.md +++ b/SampleApp/Pods/ConsistencyManager/README.md @@ -3,6 +3,7 @@ [![Build Status](https://travis-ci.org/linkedin/ConsistencyManager-iOS.svg?branch=master)](https://travis-ci.org/linkedin/ConsistencyManager-iOS) [![codecov](https://codecov.io/gh/linkedin/ConsistencyManager-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/linkedin/ConsistencyManager-iOS) [![GitHub release](https://img.shields.io/github/release/linkedin/ConsistencyManager-iOS.svg?maxAge=86400)](https://github.com/linkedin/ConsistencyManager-iOS/releases) +![Platforms](https://img.shields.io/badge/platforms-iOS%20%7C%20tvOS%20%7C%20macOS-blue.svg) This library provides a way of keeping immutable models consistent. First, listeners listen to an immutable model. Whenever this model (or any child model) is updated, the Consistency Manager will generate a new model and notify its listeners. @@ -70,6 +71,7 @@ We are currently not maintaining separate branches for different Swift versions. | 2.2 - 2.3 | 2.x.x | | 3 (Easy migration API) | 3.x.x | | 3 (Better API) | 4.x.x | +| 4 | 5.1.1+ | 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 4bf3a6e..ce6e5bd 100644 --- a/SampleApp/Pods/Local Podspecs/RocketData.podspec.json +++ b/SampleApp/Pods/Local Podspecs/RocketData.podspec.json @@ -1,15 +1,15 @@ { "name": "RocketData", - "version": "4.0.1", + "version": "5.0.0", "license": { "type": "Apache License, Version 2.0" }, - "homepage": "https://linkedin.github.io/RocketData", - "authors": "LinkedIn", + "homepage": "https://plivesey.github.io/RocketData", + "authors": "plivesey", "summary": "A non-blocking CoreData replacement which uses immutable models.", "source": { - "git": "https://github.com/linkedin/RocketData.git", - "tag": "4.0.1" + "git": "https://github.com/plivesey/RocketData.git", + "tag": "5.0.0" }, "source_files": "RocketData/**/*.swift", "platforms": { @@ -18,7 +18,7 @@ "frameworks": "Foundation", "dependencies": { "ConsistencyManager": [ - "~> 4.0.0" + "~> 5.2.0" ] } } diff --git a/SampleApp/Pods/Manifest.lock b/SampleApp/Pods/Manifest.lock index 5985f8b..6f23568 100644 --- a/SampleApp/Pods/Manifest.lock +++ b/SampleApp/Pods/Manifest.lock @@ -1,19 +1,23 @@ PODS: - - ConsistencyManager (4.0.0) + - ConsistencyManager (5.2.0) - PINCache (2.3) - - RocketData (4.0.1): - - ConsistencyManager (~> 4.0.0) + - RocketData (5.0.0): + - ConsistencyManager (~> 5.2.0) DEPENDENCIES: - PINCache (from `https://github.com/pinterest/PINCache.git`, commit `58635e4ff8d00fcd25084259a625c0615e9d071a`) - RocketData (from `..`) +SPEC REPOS: + https://github.com/CocoaPods/Specs.git: + - ConsistencyManager + EXTERNAL SOURCES: PINCache: :commit: 58635e4ff8d00fcd25084259a625c0615e9d071a :git: https://github.com/pinterest/PINCache.git RocketData: - :path: .. + :path: ".." CHECKOUT OPTIONS: PINCache: @@ -21,10 +25,10 @@ CHECKOUT OPTIONS: :git: https://github.com/pinterest/PINCache.git SPEC CHECKSUMS: - ConsistencyManager: 323ee466a5c933973529dfa5baa5cbc238633a67 + ConsistencyManager: 66a94b64e767a85698c2cb8c0184885760810fdc PINCache: ce36ed282031b92fc7733ffe831f474ff80fddc2 - RocketData: a661f6e75dd8741dbe95856ca84f5e16ab3b377e + RocketData: 15de5666f229bd9eeba4854fbe224b532c79ae03 PODFILE CHECKSUM: b5eb42e36b4847085a928ca720bb30354bb63d2e -COCOAPODS: 1.1.0.rc.3 +COCOAPODS: 1.5.0 diff --git a/SampleApp/Pods/Pods.xcodeproj/project.pbxproj b/SampleApp/Pods/Pods.xcodeproj/project.pbxproj index b93fb20..f9ee018 100644 --- a/SampleApp/Pods/Pods.xcodeproj/project.pbxproj +++ b/SampleApp/Pods/Pods.xcodeproj/project.pbxproj @@ -7,386 +7,459 @@ objects = { /* Begin PBXBuildFile section */ - 069BFF79A45A3E7A57AD2C615841D723 /* DataHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59BB953DC512C0BD404C05A9001EC3CA /* DataHolder.swift */; }; - 098F2AE94644893938E8673F13F5EF8D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 868955D6D1E041DE85370C32EE9AA086 /* Foundation.framework */; }; - 12530DC94BD2D6013638A5E6EBD6911E /* RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 175BD63046EFF0C2DB8AAF533A42700C /* RocketData-dummy.m */; }; - 1906A7F598DC1209C1539185AC70123B /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA1BEFBEC0818C2AD3D5B84104827F3E /* WeakArray.swift */; }; - 217D4F1ACCE68D99B85B533098C96E48 /* WeakSharedCollectionArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86F1DECBFDC2E2D4A8AF2A821B091E98 /* WeakSharedCollectionArray.swift */; }; - 22F81B5D194CF29A901A2A6399AF7EB3 /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A14A903829834CAE3F976761FD58E04A /* BatchUpdateModel.swift */; }; - 2A51D87889023F52D63559B9624B15D6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 868955D6D1E041DE85370C32EE9AA086 /* Foundation.framework */; }; - 2CE93941851BA6564027344639ADE240 /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FCE25907FA94C35C68634BABC9DCE42 /* CollectionHelpers.swift */; }; - 319C3C4CFA8B9C8B1CFEE20C8EDBE57C /* PINMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C78E40DB693DF276E9CC31D5FD1B6D71 /* PINMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3D1B88E27DAAE39EDA07E9DF82B0A70E /* ConsistencyManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D49C9E86A88F4A4E6F5F6B112E0A8035 /* ConsistencyManager.framework */; }; - 3EB1AD1433F8D4E20986BC4CAAF7F92B /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91930E982EAD3E95BF285C67843936A8 /* Model.swift */; }; - 43C917738FE2EFA599B2F1138FF30CDA /* PINMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D88FF5AF93C00B6573CAC929BCDCBF0 /* PINMemoryCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 466D55718EE2E044090AA5304AFB7427 /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4863ED80051B69536E6669672EC37123 /* BatchListener.swift */; }; - 4730C9E6B24511A1B0843848D99D6DB1 /* RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 82CB51FE97E0C32F229C68895E5B203F /* RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4839811DF1BEEDBEECD5B9DF09E75F63 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26AC7ACF33AE0278FC1DA3ADDBE1946E /* ModelUpdates.swift */; }; - 49B743734DBB42D13DE2E4C95D728258 /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA404BAC8D35044E3535E7BDC2581BD1 /* ConsistencyManagerModel.swift */; }; - 4B2BE5EF5BCC75C085AF6FB3DFB73BF7 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D19EDC50B553488E7E6D0D0E249B4A4 /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4D150612A8A5242A297C0F776BE02D66 /* PINCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B7E5721391A164872C34EFD770F2EF /* PINCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 565A0FE43DDCA7726C273E819F97D885 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF2D8D32EFBF7BBFFB1F757B9086A44B /* Errors.swift */; }; - 672297C4F990022D1768B5D6DEC88A1B /* Nullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F973E49A1699B4703854B2945A3EDB8 /* Nullability.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 67D63338B4F2CF06CA29FD96F4ADCC7B /* BatchDataProviderListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11B6413CEC29D99B66714989A7F72350 /* BatchDataProviderListener.swift */; }; - 6A52EA1AB9E49BAF9D979C953CBA94C5 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8257092B7ED57EBC33FDE506F8E31295 /* ErrorManager.swift */; }; - 79F0359EDE2A2DE6C858B37522B08417 /* WeakListenerArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA60ED55EC2BCF98CC3AF0B067BFCE39 /* WeakListenerArray.swift */; }; - 8265AE9D9D400DF1E9B06A3955F85942 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEFEC0AE433459ED42699544630C74D8 /* UIKit.framework */; }; - 84EFA9F0C67525C9F7714C61587C8E69 /* ParsingHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F08D82A3614A5E6B38AF975CDBE0ECE4 /* ParsingHelpers.swift */; }; - 87C90EFFD8F4CFCD1E9A3DA726878AC4 /* ChangeTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A62B6016399D0F24BE7D6161893C920 /* ChangeTime.swift */; }; - 8C80D9F9BFBF9147A4AEA6C21755E51C /* PINCache-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 54092D960EFBF6703B6DFCE5EDF9C997 /* PINCache-dummy.m */; }; - 92E4CF92DEF26530B4633401C42CE37D /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1385E3B9A19CA4025CE6C0CFC3737371 /* ConsistencyManager-dummy.m */; }; - 96E0627D7A861A73FADE5875E471A4CC /* CollectionChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8887DDD3FE1C82BA0444592E5CDF368 /* CollectionChange.swift */; }; - 9E3B3B6A7AA5DEE492754BCF1422A913 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 216C1E264C9A7C46AFFDE72DFA87FA2B /* Logger.swift */; }; - 9E7CDDB3DBC6BD36B268726BD3C96ECF /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9270F1B51422C45FE34685C07D8AB61 /* ConsistencyManagerDelegate.swift */; }; - 9E84BBB31CBC9FD61F463DD5F011D61B /* PINCacheObjectSubscripting.h in Headers */ = {isa = PBXBuildFile; fileRef = 978E615592A6D8B74F7482647FCF1B91 /* PINCacheObjectSubscripting.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9D68ECF9982B5DD662C003BF240CB6E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 868955D6D1E041DE85370C32EE9AA086 /* Foundation.framework */; }; - ACFD5574A7471D02B64084A57F94EDB3 /* PINDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C8B57021B136859AC65EE1347E2409C3 /* PINDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B43671986A02A7145AE34792632B5380 /* CacheDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 819A3793DAA2A1FFCD0966BADCC1604D /* CacheDelegate.swift */; }; - B5A43386E07922DDA1F0197F44654CCA /* Pods-SampleApp-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FAFDE20BDDFF0E8A40FBD159EB86BE41 /* Pods-SampleApp-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BD436656590B87187BA25C062EFA52EC /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F3B7E24602ABC7F74FB51E33994131 /* ConsistencyManagerListener.swift */; }; - BD9A2265EA812BA9CEAB70FAA192C223 /* PINDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 49FB3EC4989DC5445D43B64C392E20F7 /* PINDiskCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - C59A3E20C223DEF828D8802D28D50B42 /* SharedCollectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E7A65CB30635204C8D74620348E8C90 /* SharedCollectionManager.swift */; }; - CA319689F019A564EF90862F41E1A139 /* DataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A391879DCAFC3865398B8E9B53B71CE3 /* DataProvider.swift */; }; - CC32AA29A7978CB842B06C84C981B990 /* ConsistencyContextWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8650ED307478EEA858EA4BB75703106B /* ConsistencyContextWrapper.swift */; }; - CDF207AA6AD86A1B61CB48F6690B2913 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 868955D6D1E041DE85370C32EE9AA086 /* Foundation.framework */; }; - E157D9CFB459204CC8E5D49F988A0782 /* PINCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 09E77D08D8F150543DE24A2035D6213C /* PINCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E6E7ED38E1CDCE71C37187A17927D8D2 /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C05C21EB217624E7B979169288827FF /* ConsistencyManager.swift */; }; - EC0F4B7D126DB104E521A8367459E498 /* DataModelManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CAC8396B5643E82F0D0DF2EEC20FF31 /* DataModelManager.swift */; }; - EDCFF9CC3BB11DA0A100E797217A2ADB /* CollectionDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD82FA5EE81D438BDF67704DBDA319A2 /* CollectionDataProvider.swift */; }; - F18E7E3631150CB050F049B3C23FD713 /* PINCache-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D0843965231C593C52D572CE2665D55B /* PINCache-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F5FA11EBF964FAA61FBE85C891249165 /* Pods-SampleApp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 03134C79E14CFE0BBC83A3961C22A4A2 /* Pods-SampleApp-dummy.m */; }; + 001DCC828873428A98B99A0BC22CE1F2 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7C84F8FE00F8693DF4DDD6013DD0B5C /* ErrorManager.swift */; }; + 03C13E8EF242C959B5203B3CDF7DFD53 /* CacheDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5489A921310DF466CF85D8833A65D0A8 /* CacheDelegate.swift */; }; + 0BFE56DC2EDC8B1037451D0AE0C0A92F /* Pods-SampleApp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E34C2187030136F6DB77752E5F4911 /* Pods-SampleApp-dummy.m */; }; + 2616F72C653C085A30DD4BCDE48A75BC /* TypeErasedWeakHolders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0033A662D6B7345E44F888A9736D1AE6 /* TypeErasedWeakHolders.swift */; }; + 263707EA21F73AFEB8A3CC633DB6997A /* WeakHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 733B9C1E910C94400F04F1F685C49C19 /* WeakHolder.swift */; }; + 27E2ACAB5553AF46488DDAAF0B8537D2 /* PINCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A60392FC3899980B67CD5ADABE3B73D5 /* PINCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 283A9AE0309CB9B25265B87DC9E6AD2B /* WeakBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8550AC39285335C0A5F724B97B2B69F4 /* WeakBox.swift */; }; + 2A0F504A48C6B6E8149AA25ECBA882BC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47D0A3C0EAB75F037978F58E44BFC6CC /* Foundation.framework */; }; + 2FF1D28805C55D445C47D34BBB668A3E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEF064E748A8EABDAAD551109A60398E /* UIKit.framework */; }; + 36AC1E4F6E829EFF7EED533BA42B54DC /* Array+Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9501E69B03FC3FB8F1E054CFDEDFBC24 /* Array+Weak.swift */; }; + 3B69F7A493CC6D9BA7AAE82C3AB4EF09 /* ModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 292D121928E7D89D1F4098258FDECE2A /* ModelChange.swift */; }; + 3ECAC56FEBB145EFE4FE9C22AB3D8BB5 /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B19F0C6F6A3D9B6C43534142D1CC226B /* ConsistencyManager-dummy.m */; }; + 4479A3765D16BC2D340B5057405C9143 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1313DE66A3785B7BBA205244397F41F9 /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 461FBE8B2B0822FAC78BDB61FA568044 /* CollectionChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = D445078350992F7CFCFEAD3AFA77895F /* CollectionChange.swift */; }; + 4B065B337B479561160E13B01EAEA0A1 /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B25DE55BF762317600372F34CB51263 /* BatchUpdateModel.swift */; }; + 4D8A1FB7701C95E1B3CDCE125FA16463 /* PINDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FC24ED114BB46404756B7BDBB0C306D /* PINDiskCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 4E1C1B888CA1C3AF1299FB177B9AFA52 /* PINDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C862771F3A6A0C704362204BF714063 /* PINDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 552C54E8B87986D31C0733ED2F766043 /* SharedCollectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F33A648C0DA5195760B9C7E360FD6C /* SharedCollectionManager.swift */; }; + 631B06351A176767C9F4BFE43D20F9DF /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE6F1213FB02BA5DFAC290351C88F /* ConsistencyManagerModel.swift */; }; + 68A966DC9FE75F46B517A0A01458F0DD /* PINCache-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F42BF1E618F362FA4F1A29E01D43CC51 /* PINCache-dummy.m */; }; + 6CE66B52EA65DF5B232359DC23937968 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47D0A3C0EAB75F037978F58E44BFC6CC /* Foundation.framework */; }; + 7577D28FE99166790C3295B1D76CB27B /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB130AC0264A6AA35B4FC8D838CD6584 /* ConsistencyManagerListener.swift */; }; + 7D00332C0E554E00DCFAC03EDCCCA5FC /* Nullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 15CD9C4BF96AB280478EC0BFFC811DCA /* Nullability.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 822307BE07734344679FA644970CF8CD /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E252B14D461FAC83AC5FB05B5C56FB7 /* BatchListener.swift */; }; + 825E2EC9D8B391C8787D9CFD444575BF /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22105AF15720755009B3A5DA4F6D7F07 /* WeakArray.swift */; }; + 82A3580BC75BF9DBC758DD60A4FC7EEC /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FACA43E67C5A9A73E880F0D07ABA1EE /* Logger.swift */; }; + 835A5B07EC488F10E4F139334882D8FF /* RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F965A8EEFCC269A926AA2CFAFB39BCE7 /* RocketData-dummy.m */; }; + 839428B9193A80D3CD2A236BA0F36E19 /* ParsingHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 695A477312ABD35395C93FA57791512F /* ParsingHelpers.swift */; }; + 926D5C8ECA28352A2F83E2C5C2C665EF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47D0A3C0EAB75F037978F58E44BFC6CC /* Foundation.framework */; }; + 97379C494F6B1B55557C23006061AACE /* BatchDataProviderListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DE415DA8E1BB6CB557AE351514C6CA8 /* BatchDataProviderListener.swift */; }; + 9A0CD6C72C3C7D3CE1CE428C24690114 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14460E333A1F091A1CDFAA63EF051D2C /* ModelUpdates.swift */; }; + A15B4BD94D1228657D7A49E33CE0877C /* WeakSharedCollectionArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC73ADB215D0464E4A58CD2028E74554 /* WeakSharedCollectionArray.swift */; }; + A4276999F7266A6C44E2CA706D24340F /* PINCache-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8091A2132DBBEEA453DD24ED28BA0872 /* PINCache-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A47FE0397CC14EF044F2131F170619EF /* ConsistencyContextWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C14191638533C1D31C835840DE99233 /* ConsistencyContextWrapper.swift */; }; + B00EC20A95367E3634CC70121385F419 /* PINCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 74E474A70F1D1317A942C09CF1AF87A4 /* PINCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B71C08B6AADC997123138F3B1D2E614D /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0F580B8DAAB408CD914D45F3FAF0C92 /* ConsistencyManagerDelegate.swift */; }; + B76ED9642CE2DA1D0C8A5A5467A0D82E /* ChangeTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66F5B5A9C68931A0882AB572A4FD655B /* ChangeTime.swift */; }; + B775AAE0A3D8D5287AA9C0AAF0A6219F /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F8CA378484B42E0CF4F444A4DA1E275 /* Model.swift */; }; + BC1D5B931D1BF52B67992F8AFA9FF099 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23B437B2331291F94425FD11A5ED2FC6 /* Errors.swift */; }; + C16B596869C3C9D73D9FC57D97BFD5DA /* CollectionDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9095B6655763153D63D23DDB872ABEBF /* CollectionDataProvider.swift */; }; + C4077D53936DFBC6E42745A1E9A70AC0 /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 320E72A3488CBAB19A62C30DE137F25D /* ConsistencyManager.swift */; }; + CDD4C556EA3F331E6DDA45B6B683F68D /* Pods-SampleApp-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 43E0836AB7F78D7F2563BA2715E694C8 /* Pods-SampleApp-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D15F7F93047B54CDC5A9AEB85AFCD5B6 /* PINCacheObjectSubscripting.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B4423CD6B4DD332ADA0F40052EF64A4 /* PINCacheObjectSubscripting.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D19F59FE7170377F2C74E93B2D99BFE2 /* ConsistencyManagerUpdatesListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA68BF8089F010B1EDA8ACF43F27B1AC /* ConsistencyManagerUpdatesListener.swift */; }; + D2E7CCC6FA04A436D5BCE04E5D639093 /* PINMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 95A918B2ADF80A146100A75403D6666F /* PINMemoryCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D4AB193A949BDB9210C7A3F60D035693 /* PINMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BDC7DC5E3EBEE2B02E0DA1299668EBA5 /* PINMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D7478D2C64DE55D95C734C1FA789D562 /* DataModelManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ABFDF7627234F2215D390E0F44F4D3A /* DataModelManager.swift */; }; + D76F64AC6718611B6D42CE69B17B2DB9 /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BFD4B7F1F388E7110C23DD2BBEC252 /* CollectionHelpers.swift */; }; + E2563B0F0411A2EF3B06D52E50266581 /* DataHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9B41ED2BABCD66474FC65B3DDC0C41F /* DataHolder.swift */; }; + F93B8C96B745676D18D9FFADA3825155 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47D0A3C0EAB75F037978F58E44BFC6CC /* Foundation.framework */; }; + FA06D33C566A0EDE94B1FC295465C5E9 /* DataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 165CABA1494A8265D9BE601DD6C51887 /* DataProvider.swift */; }; + FB3C4D6291C393F0DBA06AFA53C28F2E /* ConsistencyManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D49C9E86A88F4A4E6F5F6B112E0A8035 /* ConsistencyManager.framework */; }; + FD744C29B5D44CB24577829D164C76C9 /* RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 342074D70E6F1B7308166F8FF244AD05 /* RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 5C4729CA0A757B72D017E372B728B6F4 /* PBXContainerItemProxy */ = { + 10BB3F279A800629DB409D570B9EE7BB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 90C7204433C093B22C6DB3676E135D4C; - remoteInfo = PINCache; + remoteGlobalIDString = CD959F3131ECC7808D5179105D8A95E2; + remoteInfo = ConsistencyManager; }; - 70ACCA054DF84CFCFD297D8429C9B130 /* PBXContainerItemProxy */ = { + 13E284B044C0228CF3135DD561DDC00C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = BF143FCB0BDDCCE19A427004B80418A1; - remoteInfo = ConsistencyManager; + remoteGlobalIDString = 6A4878A4A87B118BAF0877A103373708; + remoteInfo = PINCache; }; - A51B01242699A3CFDDB1985B8DC6030B /* PBXContainerItemProxy */ = { + 49040E4CE974895E01CEDCAB7441C8E1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = BF143FCB0BDDCCE19A427004B80418A1; - remoteInfo = ConsistencyManager; + remoteGlobalIDString = CC3A97A4DA7FC340C7B679B3494EA513; + remoteInfo = RocketData; }; - F4DCD809AB543ED3A428275628E2E974 /* PBXContainerItemProxy */ = { + D1296219415AA22AC088888393ABE126 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = C52D31276144224304685822B8987958; - remoteInfo = RocketData; + remoteGlobalIDString = CD959F3131ECC7808D5179105D8A95E2; + remoteInfo = ConsistencyManager; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 03134C79E14CFE0BBC83A3961C22A4A2 /* Pods-SampleApp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SampleApp-dummy.m"; sourceTree = ""; }; - 09E77D08D8F150543DE24A2035D6213C /* PINCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCache.h; path = PINCache/PINCache.h; sourceTree = ""; }; - 0A62B6016399D0F24BE7D6161893C920 /* ChangeTime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChangeTime.swift; sourceTree = ""; }; - 0FCE25907FA94C35C68634BABC9DCE42 /* CollectionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionHelpers.swift; path = ConsistencyManager/Helpers/CollectionHelpers.swift; sourceTree = ""; }; - 106F5AA8B24AC58F9705F3FA7459B833 /* RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RocketData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 11B6413CEC29D99B66714989A7F72350 /* BatchDataProviderListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BatchDataProviderListener.swift; sourceTree = ""; }; - 1385E3B9A19CA4025CE6C0CFC3737371 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; - 13B7E5721391A164872C34EFD770F2EF /* PINCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINCache.m; path = PINCache/PINCache.m; sourceTree = ""; }; - 175BD63046EFF0C2DB8AAF533A42700C /* RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RocketData-dummy.m"; sourceTree = ""; }; - 1B7AE4DA3F40BE0485A9E9EA03AEC5E0 /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = ConsistencyManager.modulemap; sourceTree = ""; }; - 216C1E264C9A7C46AFFDE72DFA87FA2B /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = ""; }; - 26AC7ACF33AE0278FC1DA3ADDBE1946E /* ModelUpdates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelUpdates.swift; path = ConsistencyManager/DataStructures/ModelUpdates.swift; sourceTree = ""; }; - 2FA683888CD1CAD23827B845F6A83CA3 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 33A6C0BCFB81B520023849987C74522C /* PINCache.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = PINCache.modulemap; sourceTree = ""; }; - 3440320C1CCBCB33886A161A1435D312 /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; - 3639016EBE40C22457011D3CDF7AA7A7 /* Pods-SampleApp-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SampleApp-resources.sh"; sourceTree = ""; }; - 38F7947A116701C3EA7C9E585F6B8EE5 /* Pods-SampleApp-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SampleApp-acknowledgements.plist"; sourceTree = ""; }; - 4863ED80051B69536E6669672EC37123 /* BatchListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchListener.swift; path = ConsistencyManager/DataStructures/BatchListener.swift; sourceTree = ""; }; - 498B23327C26D7DC1FDC877BE389F192 /* PINCache-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINCache-prefix.pch"; sourceTree = ""; }; - 49FB3EC4989DC5445D43B64C392E20F7 /* PINDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINDiskCache.m; path = PINCache/PINDiskCache.m; sourceTree = ""; }; - 4D88FF5AF93C00B6573CAC929BCDCBF0 /* PINMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINMemoryCache.m; path = PINCache/PINMemoryCache.m; sourceTree = ""; }; - 4FFA9C7C1FB7653BA1B5C4CE05C4C0E6 /* PINCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINCache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 54092D960EFBF6703B6DFCE5EDF9C997 /* PINCache-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PINCache-dummy.m"; sourceTree = ""; }; - 59BB953DC512C0BD404C05A9001EC3CA /* DataHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataHolder.swift; sourceTree = ""; }; - 5C05C21EB217624E7B979169288827FF /* ConsistencyManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManager.swift; path = ConsistencyManager/ConsistencyManager.swift; sourceTree = ""; }; - 5E7A65CB30635204C8D74620348E8C90 /* SharedCollectionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SharedCollectionManager.swift; sourceTree = ""; }; - 6CAC8396B5643E82F0D0DF2EEC20FF31 /* DataModelManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataModelManager.swift; sourceTree = ""; }; - 7C803C8144FD5B9CFFC45BE93D7E10CE /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; - 7D19EDC50B553488E7E6D0D0E249B4A4 /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; - 7D40CBEF202563E3FFB38A7077356EA2 /* Pods-SampleApp.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SampleApp.modulemap"; sourceTree = ""; }; - 7F973E49A1699B4703854B2945A3EDB8 /* Nullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nullability.h; path = PINCache/Nullability.h; sourceTree = ""; }; - 819A3793DAA2A1FFCD0966BADCC1604D /* CacheDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CacheDelegate.swift; sourceTree = ""; }; - 8257092B7ED57EBC33FDE506F8E31295 /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; - 82CB51FE97E0C32F229C68895E5B203F /* RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RocketData-umbrella.h"; sourceTree = ""; }; - 8650ED307478EEA858EA4BB75703106B /* ConsistencyContextWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConsistencyContextWrapper.swift; sourceTree = ""; }; - 868955D6D1E041DE85370C32EE9AA086 /* 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; }; - 86F1DECBFDC2E2D4A8AF2A821B091E98 /* WeakSharedCollectionArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = WeakSharedCollectionArray.swift; sourceTree = ""; }; - 915175ED60BB324459FB3541E22F7259 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 91930E982EAD3E95BF285C67843936A8 /* Model.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Model.swift; sourceTree = ""; }; - 91B47F2C6762232C70D4BDA548192320 /* Pods-SampleApp-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SampleApp-acknowledgements.markdown"; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 977E19306D119D7023F94AC3AE17E4DE /* Pods-SampleApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp.debug.xcconfig"; sourceTree = ""; }; - 978E615592A6D8B74F7482647FCF1B91 /* PINCacheObjectSubscripting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCacheObjectSubscripting.h; path = PINCache/PINCacheObjectSubscripting.h; sourceTree = ""; }; - 99EC2D3F6E0AA3D387164D1E15C93A31 /* Pods_SampleApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SampleApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A14A903829834CAE3F976761FD58E04A /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; sourceTree = ""; }; - A391879DCAFC3865398B8E9B53B71CE3 /* DataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DataProvider.swift; sourceTree = ""; }; - A64A481DC6C53B266328C55771CD3AF2 /* RocketData.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RocketData.xcconfig; sourceTree = ""; }; - A8887DDD3FE1C82BA0444592E5CDF368 /* CollectionChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionChange.swift; sourceTree = ""; }; - AF2D8D32EFBF7BBFFB1F757B9086A44B /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = ""; }; - B2149B3A4BDF277435FE83E7B88410BC /* RocketData-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RocketData-prefix.pch"; sourceTree = ""; }; - BDC61426957E156F643F337042983479 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C66F570C57AF0FDDB797FC88CB838DF2 /* Pods-SampleApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp.release.xcconfig"; sourceTree = ""; }; - C78E40DB693DF276E9CC31D5FD1B6D71 /* PINMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINMemoryCache.h; path = PINCache/PINMemoryCache.h; sourceTree = ""; }; - C8B57021B136859AC65EE1347E2409C3 /* PINDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINDiskCache.h; path = PINCache/PINDiskCache.h; sourceTree = ""; }; - C9F3B7E24602ABC7F74FB51E33994131 /* ConsistencyManagerListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerListener.swift; sourceTree = ""; }; - CA60ED55EC2BCF98CC3AF0B067BFCE39 /* WeakListenerArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakListenerArray.swift; path = ConsistencyManager/DataStructures/WeakListenerArray.swift; sourceTree = ""; }; - CBA97F5884387AA14AB8EFA066145363 /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CD82FA5EE81D438BDF67704DBDA319A2 /* CollectionDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionDataProvider.swift; sourceTree = ""; }; - D0843965231C593C52D572CE2665D55B /* PINCache-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINCache-umbrella.h"; sourceTree = ""; }; - D3BBC8FA3A1650C24A8C05EF23A85804 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 0033A662D6B7345E44F888A9736D1AE6 /* TypeErasedWeakHolders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TypeErasedWeakHolders.swift; path = ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift; sourceTree = ""; }; + 0529F4E000E36E9A7D30A382859DD600 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + 08CCC3AE3772EB1055D7721CB517AA80 /* architecture.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = architecture.png; path = docs/images/architecture.png; sourceTree = ""; }; + 0906760393974A4778043FDFC2DF5043 /* 140_FAQ.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 140_FAQ.rst; path = docs/pages/140_FAQ.rst; sourceTree = ""; }; + 0A5AABFCEECC95DBA6FAEEE8BBA5C354 /* 050_models.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 050_models.rst; path = docs/pages/050_models.rst; sourceTree = ""; }; + 0B25DE55BF762317600372F34CB51263 /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; sourceTree = ""; }; + 106F5AA8B24AC58F9705F3FA7459B833 /* RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = RocketData.framework; path = RocketData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1313DE66A3785B7BBA205244397F41F9 /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; + 14460E333A1F091A1CDFAA63EF051D2C /* ModelUpdates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelUpdates.swift; path = ConsistencyManager/DataStructures/ModelUpdates.swift; sourceTree = ""; }; + 15CD9C4BF96AB280478EC0BFFC811DCA /* Nullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nullability.h; path = PINCache/Nullability.h; sourceTree = ""; }; + 165CABA1494A8265D9BE601DD6C51887 /* DataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataProvider.swift; path = RocketData/DataProvider.swift; sourceTree = ""; }; + 1AE00CB6A92ACA8953C69921D5620B9A /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1C14191638533C1D31C835840DE99233 /* ConsistencyContextWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyContextWrapper.swift; path = RocketData/ConsistencyContextWrapper.swift; sourceTree = ""; }; + 1FACA43E67C5A9A73E880F0D07ABA1EE /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Logger.swift; path = RocketData/Logger.swift; sourceTree = ""; }; + 1FE81EDDCE3F5652E60D6FEF3B37F913 /* update_theme.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; name = update_theme.sh; path = docs/bin/update_theme.sh; sourceTree = ""; }; + 22105AF15720755009B3A5DA4F6D7F07 /* WeakArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakArray.swift; path = ConsistencyManager/DataStructures/WeakArray.swift; sourceTree = ""; }; + 23B437B2331291F94425FD11A5ED2FC6 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = RocketData/Errors.swift; sourceTree = ""; }; + 254B60E7ED0981F8277E681A5C641FD9 /* Pods-SampleApp-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SampleApp-acknowledgements.markdown"; sourceTree = ""; }; + 292D121928E7D89D1F4098258FDECE2A /* ModelChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelChange.swift; path = ConsistencyManager/DataStructures/ModelChange.swift; sourceTree = ""; }; + 320E72A3488CBAB19A62C30DE137F25D /* ConsistencyManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManager.swift; path = ConsistencyManager/ConsistencyManager.swift; sourceTree = ""; }; + 342074D70E6F1B7308166F8FF244AD05 /* RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RocketData-umbrella.h"; sourceTree = ""; }; + 356D650062B0363D58C9164077D00662 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3AD8D9812F4B36B5F8FD42B22E44B42D /* RocketData.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = RocketData.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 3D5B7AB63CD737E789F1E2288BBA6D01 /* 030_dataProviders.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 030_dataProviders.rst; path = docs/pages/030_dataProviders.rst; sourceTree = ""; }; + 3F8CA378484B42E0CF4F444A4DA1E275 /* Model.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Model.swift; path = RocketData/Model.swift; sourceTree = ""; }; + 43E0836AB7F78D7F2563BA2715E694C8 /* Pods-SampleApp-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SampleApp-umbrella.h"; sourceTree = ""; }; + 4661B3F1717111BADD79722F3340199B /* 090_otherFeatures.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 090_otherFeatures.rst; path = docs/pages/090_otherFeatures.rst; sourceTree = ""; }; + 47D0A3C0EAB75F037978F58E44BFC6CC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 490B90C7CC2786512B8C62A66654FDFC /* 020_requirements.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 020_requirements.rst; path = docs/pages/020_requirements.rst; sourceTree = ""; }; + 49E88278043A13D7FDE2AF83963F7D0E /* PINCache.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PINCache.xcconfig; sourceTree = ""; }; + 4B4423CD6B4DD332ADA0F40052EF64A4 /* PINCacheObjectSubscripting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCacheObjectSubscripting.h; path = PINCache/PINCacheObjectSubscripting.h; sourceTree = ""; }; + 4CFE8F144720A26836322E40D34A76F7 /* 130_immutability.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 130_immutability.rst; path = docs/pages/130_immutability.rst; sourceTree = ""; }; + 4E13095E31AF5BB4A45792ED916FF23A /* Makefile */ = {isa = PBXFileReference; includeInIndex = 1; name = Makefile; path = docs/Makefile; sourceTree = ""; }; + 4E5C7F09F824A746F94C60F0E1F8B0E8 /* 095_projections.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 095_projections.rst; path = docs/pages/095_projections.rst; sourceTree = ""; }; + 4FFA9C7C1FB7653BA1B5C4CE05C4C0E6 /* PINCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PINCache.framework; path = PINCache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 527436AF74968873771D4B7F3CC47B06 /* 110_threading.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 110_threading.rst; path = docs/pages/110_threading.rst; sourceTree = ""; }; + 5489A921310DF466CF85D8833A65D0A8 /* CacheDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheDelegate.swift; path = RocketData/CacheDelegate.swift; sourceTree = ""; }; + 5DFB96594C56528FAF1036E784230A23 /* 015_architecture.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 015_architecture.rst; path = docs/pages/015_architecture.rst; sourceTree = ""; }; + 5E252B14D461FAC83AC5FB05B5C56FB7 /* BatchListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchListener.swift; path = ConsistencyManager/DataStructures/BatchListener.swift; sourceTree = ""; }; + 5F5B411ED246412BE0ACFFF324E392C0 /* index.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = index.rst; path = docs/index.rst; sourceTree = ""; }; + 61C4E339881D068224E2EF678A4E7622 /* RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RocketData.modulemap; sourceTree = ""; }; + 66F5B5A9C68931A0882AB572A4FD655B /* ChangeTime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChangeTime.swift; path = RocketData/ChangeTime.swift; sourceTree = ""; }; + 695A477312ABD35395C93FA57791512F /* ParsingHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParsingHelpers.swift; path = RocketData/ParsingHelpers.swift; sourceTree = ""; }; + 69D18085E1B44B0223ABB27D77E82351 /* 080_updatingModels.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 080_updatingModels.rst; path = docs/pages/080_updatingModels.rst; sourceTree = ""; }; + 6C862771F3A6A0C704362204BF714063 /* PINDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINDiskCache.h; path = PINCache/PINDiskCache.h; sourceTree = ""; }; + 719F35AD435A83AACB1FA3BBB4857174 /* exampleModelsAfterChange.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = exampleModelsAfterChange.png; path = docs/images/exampleModelsAfterChange.png; sourceTree = ""; }; + 733B9C1E910C94400F04F1F685C49C19 /* WeakHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakHolder.swift; path = ConsistencyManager/DataStructures/WeakHolder.swift; sourceTree = ""; }; + 74DE64890C60B56276093828BBDE9CF3 /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; + 74E474A70F1D1317A942C09CF1AF87A4 /* PINCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCache.h; path = PINCache/PINCache.h; sourceTree = ""; }; + 75A2EBADDDD74148BDC5B35E089A7C15 /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ConsistencyManager.modulemap; sourceTree = ""; }; + 7E5C017F130265CA45FE05D66C7A1B65 /* 120_testing.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 120_testing.rst; path = docs/pages/120_testing.rst; sourceTree = ""; }; + 7F9C1B52153A73A7DC8D38CA889C05DE /* Pods-SampleApp-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SampleApp-resources.sh"; sourceTree = ""; }; + 8091A2132DBBEEA453DD24ED28BA0872 /* PINCache-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINCache-umbrella.h"; sourceTree = ""; }; + 8550AC39285335C0A5F724B97B2B69F4 /* WeakBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakBox.swift; path = ConsistencyManager/DataStructures/WeakBox.swift; sourceTree = ""; }; + 8F043E69E2FE266738809045309E6300 /* exampleModels.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = exampleModels.png; path = docs/images/exampleModels.png; sourceTree = ""; }; + 9095B6655763153D63D23DDB872ABEBF /* CollectionDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionDataProvider.swift; path = RocketData/CollectionDataProvider.swift; sourceTree = ""; }; + 91E34C2187030136F6DB77752E5F4911 /* Pods-SampleApp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SampleApp-dummy.m"; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9501E69B03FC3FB8F1E054CFDEDFBC24 /* Array+Weak.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Weak.swift"; path = "ConsistencyManager/DataStructures/Array+Weak.swift"; sourceTree = ""; }; + 95A918B2ADF80A146100A75403D6666F /* PINMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINMemoryCache.m; path = PINCache/PINMemoryCache.m; sourceTree = ""; }; + 99EC2D3F6E0AA3D387164D1E15C93A31 /* Pods_SampleApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_SampleApp.framework; path = "Pods-SampleApp.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9ABFDF7627234F2215D390E0F44F4D3A /* DataModelManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataModelManager.swift; path = RocketData/DataModelManager.swift; sourceTree = ""; }; + 9DE415DA8E1BB6CB557AE351514C6CA8 /* BatchDataProviderListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchDataProviderListener.swift; path = RocketData/BatchDataProviderListener.swift; sourceTree = ""; }; + 9F138238A2B36EAD88014DADD999B56B /* PINCache.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PINCache.modulemap; sourceTree = ""; }; + 9FC24ED114BB46404756B7BDBB0C306D /* PINDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINDiskCache.m; path = PINCache/PINDiskCache.m; sourceTree = ""; }; + A265B35D0756A32DC93A9DECC10F17AA /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A60392FC3899980B67CD5ADABE3B73D5 /* PINCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINCache.m; path = PINCache/PINCache.m; sourceTree = ""; }; + AAFB37822E6649790503021BA1973116 /* 100_coreData.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 100_coreData.rst; path = docs/pages/100_coreData.rst; sourceTree = ""; }; + AB130AC0264A6AA35B4FC8D838CD6584 /* ConsistencyManagerListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerListener.swift; sourceTree = ""; }; + AE0C4D71174D2426CC932D25E179C198 /* Pods-SampleApp.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-SampleApp.modulemap"; sourceTree = ""; }; + B19F0C6F6A3D9B6C43534142D1CC226B /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; + B351F5BEFF43CB74BA2595BF03F330D7 /* 010_rocketData.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 010_rocketData.rst; path = docs/pages/010_rocketData.rst; sourceTree = ""; }; + B3BFD4B7F1F388E7110C23DD2BBEC252 /* CollectionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionHelpers.swift; path = ConsistencyManager/Helpers/CollectionHelpers.swift; sourceTree = ""; }; + B51305017E5B04AC4CCBB4D3A5B00E87 /* 150_futurePlans.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 150_futurePlans.rst; path = docs/pages/150_futurePlans.rst; sourceTree = ""; }; + B51FE6F1213FB02BA5DFAC290351C88F /* ConsistencyManagerModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerModel.swift; path = ConsistencyManager/Protocols/ConsistencyManagerModel.swift; sourceTree = ""; }; + B9B43DF05AFE196C8F30EB9D8D47DBCC /* Pods-SampleApp-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SampleApp-frameworks.sh"; sourceTree = ""; }; + BA68BF8089F010B1EDA8ACF43F27B1AC /* ConsistencyManagerUpdatesListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerUpdatesListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift; sourceTree = ""; }; + BDC7DC5E3EBEE2B02E0DA1299668EBA5 /* PINMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINMemoryCache.h; path = PINCache/PINMemoryCache.h; sourceTree = ""; }; + C9B41ED2BABCD66474FC65B3DDC0C41F /* DataHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataHolder.swift; path = RocketData/DataHolder.swift; sourceTree = ""; }; + CAAC90C777B1C8060FFA317199DB4287 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + CBA97F5884387AA14AB8EFA066145363 /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ConsistencyManager.framework; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CC73ADB215D0464E4A58CD2028E74554 /* WeakSharedCollectionArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakSharedCollectionArray.swift; path = RocketData/WeakSharedCollectionArray.swift; sourceTree = ""; }; + D0F33A648C0DA5195760B9C7E360FD6C /* SharedCollectionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SharedCollectionManager.swift; path = RocketData/SharedCollectionManager.swift; sourceTree = ""; }; + D1404030293EBE81C91BF765DC35C142 /* conf.py */ = {isa = PBXFileReference; includeInIndex = 1; name = conf.py; path = docs/conf.py; sourceTree = ""; }; + D2627EBD50DEBE4726510CDC7B3F66CB /* 060_cacheDelegate.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 060_cacheDelegate.rst; path = docs/pages/060_cacheDelegate.rst; sourceTree = ""; }; + D445078350992F7CFCFEAD3AFA77895F /* CollectionChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionChange.swift; path = RocketData/CollectionChange.swift; sourceTree = ""; }; D49C9E86A88F4A4E6F5F6B112E0A8035 /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DA1BEFBEC0818C2AD3D5B84104827F3E /* WeakArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakArray.swift; path = ConsistencyManager/DataStructures/WeakArray.swift; sourceTree = ""; }; - DEFEC0AE433459ED42699544630C74D8 /* 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; }; - E0A41846698EC5DA173814CB68E54FD7 /* Pods-SampleApp-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SampleApp-frameworks.sh"; sourceTree = ""; }; - E3DCAEF60E47D84FC88C803ACE93A36B /* RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = RocketData.modulemap; sourceTree = ""; }; - E9270F1B51422C45FE34685C07D8AB61 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; - E97958A09AFE83E5E1258ACBDBEF9E13 /* PINCache.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PINCache.xcconfig; sourceTree = ""; }; - EA404BAC8D35044E3535E7BDC2581BD1 /* ConsistencyManagerModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerModel.swift; path = ConsistencyManager/Protocols/ConsistencyManagerModel.swift; sourceTree = ""; }; - F08D82A3614A5E6B38AF975CDBE0ECE4 /* ParsingHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ParsingHelpers.swift; sourceTree = ""; }; - FAFDE20BDDFF0E8A40FBD159EB86BE41 /* Pods-SampleApp-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SampleApp-umbrella.h"; sourceTree = ""; }; + E04572C869A3D5AD2F9ED3F2E9ED0653 /* Pods-SampleApp-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SampleApp-acknowledgements.plist"; sourceTree = ""; }; + E0FC48E859F454B844F5003B08E2774C /* PINCache-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINCache-prefix.pch"; sourceTree = ""; }; + E1592B03847F759689839BDB9100935E /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; + E3428D834FFEECC083594BDB801435A3 /* Pods-SampleApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp.debug.xcconfig"; sourceTree = ""; }; + E5737326A302DF0A7B6ACFD75437574F /* RocketData-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RocketData-prefix.pch"; sourceTree = ""; }; + E713382BE6FFD0D3C1564BEB1B1D8533 /* 070_networking.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 070_networking.rst; path = docs/pages/070_networking.rst; sourceTree = ""; }; + E7C84F8FE00F8693DF4DDD6013DD0B5C /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; + E8FD1522BAF9AB40CDEE436868B4393C /* Pods-SampleApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp.release.xcconfig"; sourceTree = ""; }; + ED5F43458CE2ECC4F9BF87D646DABD8D /* 040_setup.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 040_setup.rst; path = docs/pages/040_setup.rst; sourceTree = ""; }; + EEF064E748A8EABDAAD551109A60398E /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + F0F580B8DAAB408CD914D45F3FAF0C92 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; + F193CEEB6AEE7BCF7ED788E55342F2EF /* RocketData.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RocketData.xcconfig; sourceTree = ""; }; + F416922ACFF853066487097292FCDA5F /* README */ = {isa = PBXFileReference; includeInIndex = 1; name = README; path = docs/README; sourceTree = ""; }; + F42BF1E618F362FA4F1A29E01D43CC51 /* PINCache-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PINCache-dummy.m"; sourceTree = ""; }; + F5134B55DC3181BAB6F34FAD177845C0 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + F965A8EEFCC269A926AA2CFAFB39BCE7 /* RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RocketData-dummy.m"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 2C3BB58E9C26D0A874EA41B1E97CC908 /* Frameworks */ = { + 2ADE58A3F926DD0CB2216987A718EF25 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 098F2AE94644893938E8673F13F5EF8D /* Foundation.framework in Frameworks */, + 926D5C8ECA28352A2F83E2C5C2C665EF /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B459A5D4048DD01BA939BB3FD857D8A4 /* Frameworks */ = { + 37FF3E6DD87189C874E974CBDD0ACA49 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2A51D87889023F52D63559B9624B15D6 /* Foundation.framework in Frameworks */, - 8265AE9D9D400DF1E9B06A3955F85942 /* UIKit.framework in Frameworks */, + 6CE66B52EA65DF5B232359DC23937968 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BC0A371B59768CECFAB2F207E62193A7 /* Frameworks */ = { + CC1FCBD30F152F9CF52FF9362D5F21A9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3D1B88E27DAAE39EDA07E9DF82B0A70E /* ConsistencyManager.framework in Frameworks */, - A9D68ECF9982B5DD662C003BF240CB6E /* Foundation.framework in Frameworks */, + FB3C4D6291C393F0DBA06AFA53C28F2E /* ConsistencyManager.framework in Frameworks */, + 2A0F504A48C6B6E8149AA25ECBA882BC /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DDEB6E5CE84C2D0DD9369E62F3BA3087 /* Frameworks */ = { + F4C89EB621DA3443C7CC196FA7783897 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CDF207AA6AD86A1B61CB48F6690B2913 /* Foundation.framework in Frameworks */, + F93B8C96B745676D18D9FFADA3825155 /* Foundation.framework in Frameworks */, + 2FF1D28805C55D445C47D34BBB668A3E /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0A9A071A84E9C2156E27F342970C192E /* Pods */ = { + 0A53903CA3CC01118D4EB644E30A72BF /* Development Pods */ = { isa = PBXGroup; children = ( - FAEAB263AAB1804EE34C859BAF9FA6D7 /* ConsistencyManager */, - A5E065D7A3AA51B244FAE04E67C313AB /* PINCache */, + E5F419DB4BB5DC3623A18A9A410B3BC4 /* RocketData */, ); - name = Pods; + name = "Development Pods"; sourceTree = ""; }; - 0B41BA4D42EE870C2E8EFFAF1BAD81BE /* Support Files */ = { + 16AF09E3BC77807BDD84F92D7F7895F2 /* Support Files */ = { isa = PBXGroup; children = ( - BDC61426957E156F643F337042983479 /* Info.plist */, - E3DCAEF60E47D84FC88C803ACE93A36B /* RocketData.modulemap */, - A64A481DC6C53B266328C55771CD3AF2 /* RocketData.xcconfig */, - 175BD63046EFF0C2DB8AAF533A42700C /* RocketData-dummy.m */, - B2149B3A4BDF277435FE83E7B88410BC /* RocketData-prefix.pch */, - 82CB51FE97E0C32F229C68895E5B203F /* RocketData-umbrella.h */, + 356D650062B0363D58C9164077D00662 /* Info.plist */, + 9F138238A2B36EAD88014DADD999B56B /* PINCache.modulemap */, + 49E88278043A13D7FDE2AF83963F7D0E /* PINCache.xcconfig */, + F42BF1E618F362FA4F1A29E01D43CC51 /* PINCache-dummy.m */, + E0FC48E859F454B844F5003B08E2774C /* PINCache-prefix.pch */, + 8091A2132DBBEEA453DD24ED28BA0872 /* PINCache-umbrella.h */, ); name = "Support Files"; - path = "SampleApp/Pods/Target Support Files/RocketData"; + path = "../Target Support Files/PINCache"; sourceTree = ""; }; - 2BF60A306645A9BB9C6974C3384E39B4 /* RocketData */ = { + 173656856653E1457F7DC5946095B5C0 /* Support Files */ = { isa = PBXGroup; children = ( - 11B6413CEC29D99B66714989A7F72350 /* BatchDataProviderListener.swift */, - 819A3793DAA2A1FFCD0966BADCC1604D /* CacheDelegate.swift */, - 0A62B6016399D0F24BE7D6161893C920 /* ChangeTime.swift */, - A8887DDD3FE1C82BA0444592E5CDF368 /* CollectionChange.swift */, - CD82FA5EE81D438BDF67704DBDA319A2 /* CollectionDataProvider.swift */, - 8650ED307478EEA858EA4BB75703106B /* ConsistencyContextWrapper.swift */, - 59BB953DC512C0BD404C05A9001EC3CA /* DataHolder.swift */, - 6CAC8396B5643E82F0D0DF2EEC20FF31 /* DataModelManager.swift */, - A391879DCAFC3865398B8E9B53B71CE3 /* DataProvider.swift */, - AF2D8D32EFBF7BBFFB1F757B9086A44B /* Errors.swift */, - 216C1E264C9A7C46AFFDE72DFA87FA2B /* Logger.swift */, - 91930E982EAD3E95BF285C67843936A8 /* Model.swift */, - F08D82A3614A5E6B38AF975CDBE0ECE4 /* ParsingHelpers.swift */, - 5E7A65CB30635204C8D74620348E8C90 /* SharedCollectionManager.swift */, - 86F1DECBFDC2E2D4A8AF2A821B091E98 /* WeakSharedCollectionArray.swift */, + 1AE00CB6A92ACA8953C69921D5620B9A /* Info.plist */, + 61C4E339881D068224E2EF678A4E7622 /* RocketData.modulemap */, + F193CEEB6AEE7BCF7ED788E55342F2EF /* RocketData.xcconfig */, + F965A8EEFCC269A926AA2CFAFB39BCE7 /* RocketData-dummy.m */, + E5737326A302DF0A7B6ACFD75437574F /* RocketData-prefix.pch */, + 342074D70E6F1B7308166F8FF244AD05 /* RocketData-umbrella.h */, ); - path = RocketData; + name = "Support Files"; + path = "SampleApp/Pods/Target Support Files/RocketData"; sourceTree = ""; }; 3D38DD4AFCE429A93844A67994A1F277 /* Targets Support Files */ = { isa = PBXGroup; children = ( - C45F4EF14B2F86A4B21A1E2B91082079 /* Pods-SampleApp */, + 9E802E60A113B9EE20B7AF71223511DA /* Pods-SampleApp */, ); name = "Targets Support Files"; sourceTree = ""; }; - 49F432E7CB094AD693C0A3BA8443D356 /* Frameworks */ = { + 46C8C884D88B997F60FF4CBD86D1D85B /* iOS */ = { isa = PBXGroup; children = ( - D49C9E86A88F4A4E6F5F6B112E0A8035 /* ConsistencyManager.framework */, - D6EA01F83914FB20414E14E3500B7184 /* iOS */, + 47D0A3C0EAB75F037978F58E44BFC6CC /* Foundation.framework */, + EEF064E748A8EABDAAD551109A60398E /* UIKit.framework */, ); - name = Frameworks; + name = iOS; sourceTree = ""; }; - 7AB423BAF8548B19913168F5E90DDF2C /* Products */ = { + 49F432E7CB094AD693C0A3BA8443D356 /* Frameworks */ = { isa = PBXGroup; children = ( - CBA97F5884387AA14AB8EFA066145363 /* ConsistencyManager.framework */, - 4FFA9C7C1FB7653BA1B5C4CE05C4C0E6 /* PINCache.framework */, - 99EC2D3F6E0AA3D387164D1E15C93A31 /* Pods_SampleApp.framework */, - 106F5AA8B24AC58F9705F3FA7459B833 /* RocketData.framework */, + D49C9E86A88F4A4E6F5F6B112E0A8035 /* ConsistencyManager.framework */, + 46C8C884D88B997F60FF4CBD86D1D85B /* iOS */, ); - name = Products; + name = Frameworks; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 519BAB76BEB42AC6FDEC25D7CBA3F1CA /* ConsistencyManager */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - 8EF02F865A97F66712C0FB5E90C021F1 /* Development Pods */, - 49F432E7CB094AD693C0A3BA8443D356 /* Frameworks */, - 0A9A071A84E9C2156E27F342970C192E /* Pods */, - 7AB423BAF8548B19913168F5E90DDF2C /* Products */, - 3D38DD4AFCE429A93844A67994A1F277 /* Targets Support Files */, + 9501E69B03FC3FB8F1E054CFDEDFBC24 /* Array+Weak.swift */, + 5E252B14D461FAC83AC5FB05B5C56FB7 /* BatchListener.swift */, + 0B25DE55BF762317600372F34CB51263 /* BatchUpdateModel.swift */, + B3BFD4B7F1F388E7110C23DD2BBEC252 /* CollectionHelpers.swift */, + 320E72A3488CBAB19A62C30DE137F25D /* ConsistencyManager.swift */, + F0F580B8DAAB408CD914D45F3FAF0C92 /* ConsistencyManagerDelegate.swift */, + AB130AC0264A6AA35B4FC8D838CD6584 /* ConsistencyManagerListener.swift */, + B51FE6F1213FB02BA5DFAC290351C88F /* ConsistencyManagerModel.swift */, + BA68BF8089F010B1EDA8ACF43F27B1AC /* ConsistencyManagerUpdatesListener.swift */, + E7C84F8FE00F8693DF4DDD6013DD0B5C /* ErrorManager.swift */, + 292D121928E7D89D1F4098258FDECE2A /* ModelChange.swift */, + 14460E333A1F091A1CDFAA63EF051D2C /* ModelUpdates.swift */, + 0033A662D6B7345E44F888A9736D1AE6 /* TypeErasedWeakHolders.swift */, + 22105AF15720755009B3A5DA4F6D7F07 /* WeakArray.swift */, + 8550AC39285335C0A5F724B97B2B69F4 /* WeakBox.swift */, + 733B9C1E910C94400F04F1F685C49C19 /* WeakHolder.swift */, + 6EDD92D030E0CAB541C94B5170B22E81 /* Support Files */, ); + name = ConsistencyManager; + path = ConsistencyManager; sourceTree = ""; }; - 8EF02F865A97F66712C0FB5E90C021F1 /* Development Pods */ = { + 6B65B1AE67F46E7DDBD3F4C1879BF4EA /* PINCache */ = { isa = PBXGroup; children = ( - FD2CEE1577A8B8F71D80789AB9F21617 /* RocketData */, + 15CD9C4BF96AB280478EC0BFFC811DCA /* Nullability.h */, + 74E474A70F1D1317A942C09CF1AF87A4 /* PINCache.h */, + A60392FC3899980B67CD5ADABE3B73D5 /* PINCache.m */, + 4B4423CD6B4DD332ADA0F40052EF64A4 /* PINCacheObjectSubscripting.h */, + 6C862771F3A6A0C704362204BF714063 /* PINDiskCache.h */, + 9FC24ED114BB46404756B7BDBB0C306D /* PINDiskCache.m */, + BDC7DC5E3EBEE2B02E0DA1299668EBA5 /* PINMemoryCache.h */, + 95A918B2ADF80A146100A75403D6666F /* PINMemoryCache.m */, + 16AF09E3BC77807BDD84F92D7F7895F2 /* Support Files */, ); - name = "Development Pods"; + name = PINCache; + path = PINCache; sourceTree = ""; }; - 930196F1AF52FE1E306EC066245C5EA9 /* Support Files */ = { + 6EDD92D030E0CAB541C94B5170B22E81 /* Support Files */ = { isa = PBXGroup; children = ( - D3BBC8FA3A1650C24A8C05EF23A85804 /* Info.plist */, - 33A6C0BCFB81B520023849987C74522C /* PINCache.modulemap */, - E97958A09AFE83E5E1258ACBDBEF9E13 /* PINCache.xcconfig */, - 54092D960EFBF6703B6DFCE5EDF9C997 /* PINCache-dummy.m */, - 498B23327C26D7DC1FDC877BE389F192 /* PINCache-prefix.pch */, - D0843965231C593C52D572CE2665D55B /* PINCache-umbrella.h */, + 75A2EBADDDD74148BDC5B35E089A7C15 /* ConsistencyManager.modulemap */, + 74DE64890C60B56276093828BBDE9CF3 /* ConsistencyManager.xcconfig */, + B19F0C6F6A3D9B6C43534142D1CC226B /* ConsistencyManager-dummy.m */, + E1592B03847F759689839BDB9100935E /* ConsistencyManager-prefix.pch */, + 1313DE66A3785B7BBA205244397F41F9 /* ConsistencyManager-umbrella.h */, + A265B35D0756A32DC93A9DECC10F17AA /* Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/PINCache"; + path = "../Target Support Files/ConsistencyManager"; sourceTree = ""; }; - A5E065D7A3AA51B244FAE04E67C313AB /* PINCache */ = { + 7AB423BAF8548B19913168F5E90DDF2C /* Products */ = { isa = PBXGroup; children = ( - 7F973E49A1699B4703854B2945A3EDB8 /* Nullability.h */, - 09E77D08D8F150543DE24A2035D6213C /* PINCache.h */, - 13B7E5721391A164872C34EFD770F2EF /* PINCache.m */, - 978E615592A6D8B74F7482647FCF1B91 /* PINCacheObjectSubscripting.h */, - C8B57021B136859AC65EE1347E2409C3 /* PINDiskCache.h */, - 49FB3EC4989DC5445D43B64C392E20F7 /* PINDiskCache.m */, - C78E40DB693DF276E9CC31D5FD1B6D71 /* PINMemoryCache.h */, - 4D88FF5AF93C00B6573CAC929BCDCBF0 /* PINMemoryCache.m */, - 930196F1AF52FE1E306EC066245C5EA9 /* Support Files */, + CBA97F5884387AA14AB8EFA066145363 /* ConsistencyManager.framework */, + 4FFA9C7C1FB7653BA1B5C4CE05C4C0E6 /* PINCache.framework */, + 99EC2D3F6E0AA3D387164D1E15C93A31 /* Pods_SampleApp.framework */, + 106F5AA8B24AC58F9705F3FA7459B833 /* RocketData.framework */, ); - path = PINCache; + name = Products; sourceTree = ""; }; - C45F4EF14B2F86A4B21A1E2B91082079 /* Pods-SampleApp */ = { + 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( - 2FA683888CD1CAD23827B845F6A83CA3 /* Info.plist */, - 7D40CBEF202563E3FFB38A7077356EA2 /* Pods-SampleApp.modulemap */, - 91B47F2C6762232C70D4BDA548192320 /* Pods-SampleApp-acknowledgements.markdown */, - 38F7947A116701C3EA7C9E585F6B8EE5 /* Pods-SampleApp-acknowledgements.plist */, - 03134C79E14CFE0BBC83A3961C22A4A2 /* Pods-SampleApp-dummy.m */, - E0A41846698EC5DA173814CB68E54FD7 /* Pods-SampleApp-frameworks.sh */, - 3639016EBE40C22457011D3CDF7AA7A7 /* Pods-SampleApp-resources.sh */, - FAFDE20BDDFF0E8A40FBD159EB86BE41 /* Pods-SampleApp-umbrella.h */, - 977E19306D119D7023F94AC3AE17E4DE /* Pods-SampleApp.debug.xcconfig */, - C66F570C57AF0FDDB797FC88CB838DF2 /* Pods-SampleApp.release.xcconfig */, + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, + 0A53903CA3CC01118D4EB644E30A72BF /* Development Pods */, + 49F432E7CB094AD693C0A3BA8443D356 /* Frameworks */, + A40F26D97255EF0C634A4428B9727EC1 /* Pods */, + 7AB423BAF8548B19913168F5E90DDF2C /* Products */, + 3D38DD4AFCE429A93844A67994A1F277 /* Targets Support Files */, ); - name = "Pods-SampleApp"; - path = "Target Support Files/Pods-SampleApp"; sourceTree = ""; }; - D6EA01F83914FB20414E14E3500B7184 /* iOS */ = { + 9E802E60A113B9EE20B7AF71223511DA /* Pods-SampleApp */ = { isa = PBXGroup; children = ( - 868955D6D1E041DE85370C32EE9AA086 /* Foundation.framework */, - DEFEC0AE433459ED42699544630C74D8 /* UIKit.framework */, + CAAC90C777B1C8060FFA317199DB4287 /* Info.plist */, + AE0C4D71174D2426CC932D25E179C198 /* Pods-SampleApp.modulemap */, + 254B60E7ED0981F8277E681A5C641FD9 /* Pods-SampleApp-acknowledgements.markdown */, + E04572C869A3D5AD2F9ED3F2E9ED0653 /* Pods-SampleApp-acknowledgements.plist */, + 91E34C2187030136F6DB77752E5F4911 /* Pods-SampleApp-dummy.m */, + B9B43DF05AFE196C8F30EB9D8D47DBCC /* Pods-SampleApp-frameworks.sh */, + 7F9C1B52153A73A7DC8D38CA889C05DE /* Pods-SampleApp-resources.sh */, + 43E0836AB7F78D7F2563BA2715E694C8 /* Pods-SampleApp-umbrella.h */, + E3428D834FFEECC083594BDB801435A3 /* Pods-SampleApp.debug.xcconfig */, + E8FD1522BAF9AB40CDEE436868B4393C /* Pods-SampleApp.release.xcconfig */, ); - name = iOS; + name = "Pods-SampleApp"; + path = "Target Support Files/Pods-SampleApp"; sourceTree = ""; }; - DDA87CFA34D4264AFC9B2F1D566993B6 /* Support Files */ = { + A40F26D97255EF0C634A4428B9727EC1 /* Pods */ = { isa = PBXGroup; children = ( - 1B7AE4DA3F40BE0485A9E9EA03AEC5E0 /* ConsistencyManager.modulemap */, - 7C803C8144FD5B9CFFC45BE93D7E10CE /* ConsistencyManager.xcconfig */, - 1385E3B9A19CA4025CE6C0CFC3737371 /* ConsistencyManager-dummy.m */, - 3440320C1CCBCB33886A161A1435D312 /* ConsistencyManager-prefix.pch */, - 7D19EDC50B553488E7E6D0D0E249B4A4 /* ConsistencyManager-umbrella.h */, - 915175ED60BB324459FB3541E22F7259 /* Info.plist */, + 519BAB76BEB42AC6FDEC25D7CBA3F1CA /* ConsistencyManager */, + 6B65B1AE67F46E7DDBD3F4C1879BF4EA /* PINCache */, ); - name = "Support Files"; - path = "../Target Support Files/ConsistencyManager"; + name = Pods; sourceTree = ""; }; - FAEAB263AAB1804EE34C859BAF9FA6D7 /* ConsistencyManager */ = { + B2F3211E2AD3483C7961EEBCEA2D3BC2 /* Pod */ = { isa = PBXGroup; children = ( - 4863ED80051B69536E6669672EC37123 /* BatchListener.swift */, - A14A903829834CAE3F976761FD58E04A /* BatchUpdateModel.swift */, - 0FCE25907FA94C35C68634BABC9DCE42 /* CollectionHelpers.swift */, - 5C05C21EB217624E7B979169288827FF /* ConsistencyManager.swift */, - E9270F1B51422C45FE34685C07D8AB61 /* ConsistencyManagerDelegate.swift */, - C9F3B7E24602ABC7F74FB51E33994131 /* ConsistencyManagerListener.swift */, - EA404BAC8D35044E3535E7BDC2581BD1 /* ConsistencyManagerModel.swift */, - 8257092B7ED57EBC33FDE506F8E31295 /* ErrorManager.swift */, - 26AC7ACF33AE0278FC1DA3ADDBE1946E /* ModelUpdates.swift */, - DA1BEFBEC0818C2AD3D5B84104827F3E /* WeakArray.swift */, - CA60ED55EC2BCF98CC3AF0B067BFCE39 /* WeakListenerArray.swift */, - DDA87CFA34D4264AFC9B2F1D566993B6 /* Support Files */, + B351F5BEFF43CB74BA2595BF03F330D7 /* 010_rocketData.rst */, + 5DFB96594C56528FAF1036E784230A23 /* 015_architecture.rst */, + 490B90C7CC2786512B8C62A66654FDFC /* 020_requirements.rst */, + 3D5B7AB63CD737E789F1E2288BBA6D01 /* 030_dataProviders.rst */, + ED5F43458CE2ECC4F9BF87D646DABD8D /* 040_setup.rst */, + 0A5AABFCEECC95DBA6FAEEE8BBA5C354 /* 050_models.rst */, + D2627EBD50DEBE4726510CDC7B3F66CB /* 060_cacheDelegate.rst */, + E713382BE6FFD0D3C1564BEB1B1D8533 /* 070_networking.rst */, + 69D18085E1B44B0223ABB27D77E82351 /* 080_updatingModels.rst */, + 4661B3F1717111BADD79722F3340199B /* 090_otherFeatures.rst */, + 4E5C7F09F824A746F94C60F0E1F8B0E8 /* 095_projections.rst */, + AAFB37822E6649790503021BA1973116 /* 100_coreData.rst */, + 527436AF74968873771D4B7F3CC47B06 /* 110_threading.rst */, + 7E5C017F130265CA45FE05D66C7A1B65 /* 120_testing.rst */, + 4CFE8F144720A26836322E40D34A76F7 /* 130_immutability.rst */, + 0906760393974A4778043FDFC2DF5043 /* 140_FAQ.rst */, + B51305017E5B04AC4CCBB4D3A5B00E87 /* 150_futurePlans.rst */, + 08CCC3AE3772EB1055D7721CB517AA80 /* architecture.png */, + D1404030293EBE81C91BF765DC35C142 /* conf.py */, + 8F043E69E2FE266738809045309E6300 /* exampleModels.png */, + 719F35AD435A83AACB1FA3BBB4857174 /* exampleModelsAfterChange.png */, + 5F5B411ED246412BE0ACFFF324E392C0 /* index.rst */, + F5134B55DC3181BAB6F34FAD177845C0 /* LICENSE */, + 4E13095E31AF5BB4A45792ED916FF23A /* Makefile */, + F416922ACFF853066487097292FCDA5F /* README */, + 0529F4E000E36E9A7D30A382859DD600 /* README.md */, + 3AD8D9812F4B36B5F8FD42B22E44B42D /* RocketData.podspec */, + 1FE81EDDCE3F5652E60D6FEF3B37F913 /* update_theme.sh */, ); - path = ConsistencyManager; + name = Pod; sourceTree = ""; }; - FD2CEE1577A8B8F71D80789AB9F21617 /* RocketData */ = { + E5F419DB4BB5DC3623A18A9A410B3BC4 /* RocketData */ = { isa = PBXGroup; children = ( - 2BF60A306645A9BB9C6974C3384E39B4 /* RocketData */, - 0B41BA4D42EE870C2E8EFFAF1BAD81BE /* Support Files */, + 9DE415DA8E1BB6CB557AE351514C6CA8 /* BatchDataProviderListener.swift */, + 5489A921310DF466CF85D8833A65D0A8 /* CacheDelegate.swift */, + 66F5B5A9C68931A0882AB572A4FD655B /* ChangeTime.swift */, + D445078350992F7CFCFEAD3AFA77895F /* CollectionChange.swift */, + 9095B6655763153D63D23DDB872ABEBF /* CollectionDataProvider.swift */, + 1C14191638533C1D31C835840DE99233 /* ConsistencyContextWrapper.swift */, + C9B41ED2BABCD66474FC65B3DDC0C41F /* DataHolder.swift */, + 9ABFDF7627234F2215D390E0F44F4D3A /* DataModelManager.swift */, + 165CABA1494A8265D9BE601DD6C51887 /* DataProvider.swift */, + 23B437B2331291F94425FD11A5ED2FC6 /* Errors.swift */, + 1FACA43E67C5A9A73E880F0D07ABA1EE /* Logger.swift */, + 3F8CA378484B42E0CF4F444A4DA1E275 /* Model.swift */, + 695A477312ABD35395C93FA57791512F /* ParsingHelpers.swift */, + D0F33A648C0DA5195760B9C7E360FD6C /* SharedCollectionManager.swift */, + CC73ADB215D0464E4A58CD2028E74554 /* WeakSharedCollectionArray.swift */, + B2F3211E2AD3483C7961EEBCEA2D3BC2 /* Pod */, + 173656856653E1457F7DC5946095B5C0 /* Support Files */, ); name = RocketData; path = ../..; @@ -395,90 +468,88 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 2E79D6CF439E6D6A4358AA947402DAA0 /* Headers */ = { + 251EED542950AD3534D3C8DB411E104A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B5A43386E07922DDA1F0197F44654CCA /* Pods-SampleApp-umbrella.h in Headers */, + 4479A3765D16BC2D340B5057405C9143 /* ConsistencyManager-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 60A5D22B5D79003AE350A4C56ECA2B33 /* Headers */ = { + A218D490CF3707D544A8C934ABE6810A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4730C9E6B24511A1B0843848D99D6DB1 /* RocketData-umbrella.h in Headers */, + FD744C29B5D44CB24577829D164C76C9 /* RocketData-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - AA593B1550C4A1E25E95D16FDD9D3424 /* Headers */ = { + A75896AD4AB66D33DDD2DEF68877D4BE /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 672297C4F990022D1768B5D6DEC88A1B /* Nullability.h in Headers */, - F18E7E3631150CB050F049B3C23FD713 /* PINCache-umbrella.h in Headers */, - E157D9CFB459204CC8E5D49F988A0782 /* PINCache.h in Headers */, - 9E84BBB31CBC9FD61F463DD5F011D61B /* PINCacheObjectSubscripting.h in Headers */, - ACFD5574A7471D02B64084A57F94EDB3 /* PINDiskCache.h in Headers */, - 319C3C4CFA8B9C8B1CFEE20C8EDBE57C /* PINMemoryCache.h in Headers */, + 7D00332C0E554E00DCFAC03EDCCCA5FC /* Nullability.h in Headers */, + A4276999F7266A6C44E2CA706D24340F /* PINCache-umbrella.h in Headers */, + B00EC20A95367E3634CC70121385F419 /* PINCache.h in Headers */, + D15F7F93047B54CDC5A9AEB85AFCD5B6 /* PINCacheObjectSubscripting.h in Headers */, + 4E1C1B888CA1C3AF1299FB177B9AFA52 /* PINDiskCache.h in Headers */, + D4AB193A949BDB9210C7A3F60D035693 /* PINMemoryCache.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - CC52059BEC70B517452CDFA876D48AD0 /* Headers */ = { + CE0414B94BD5A1070A32E042206DD560 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4B2BE5EF5BCC75C085AF6FB3DFB73BF7 /* ConsistencyManager-umbrella.h in Headers */, + CDD4C556EA3F331E6DDA45B6B683F68D /* Pods-SampleApp-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 3151EBBA9C25262DCDF5B4DDA1D8DBC8 /* Pods-SampleApp */ = { + 6A4878A4A87B118BAF0877A103373708 /* PINCache */ = { isa = PBXNativeTarget; - buildConfigurationList = 06C6C62FF59F9B1876B43787AE05BBDB /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */; + buildConfigurationList = 483ECA1F8F3E1AF3A5A61F0D70AE8993 /* Build configuration list for PBXNativeTarget "PINCache" */; buildPhases = ( - 48F6A56E7BE771FCEF7CB6E468DFE456 /* Sources */, - DDEB6E5CE84C2D0DD9369E62F3BA3087 /* Frameworks */, - 2E79D6CF439E6D6A4358AA947402DAA0 /* Headers */, + 06A5C791F37C3C61E858A02BAB9C23C0 /* Sources */, + 37FF3E6DD87189C874E974CBDD0ACA49 /* Frameworks */, + A75896AD4AB66D33DDD2DEF68877D4BE /* Headers */, ); buildRules = ( ); dependencies = ( - 77ABA952BED60036BE484C39A7BAF516 /* PBXTargetDependency */, - 15D472114CFBF2827077B7E00F71DBBD /* PBXTargetDependency */, - 55AEB9EE12E58FE59762EF2DDA5100A4 /* PBXTargetDependency */, ); - name = "Pods-SampleApp"; - productName = "Pods-SampleApp"; - productReference = 99EC2D3F6E0AA3D387164D1E15C93A31 /* Pods_SampleApp.framework */; + name = PINCache; + productName = PINCache; + productReference = 4FFA9C7C1FB7653BA1B5C4CE05C4C0E6 /* PINCache.framework */; productType = "com.apple.product-type.framework"; }; - 90C7204433C093B22C6DB3676E135D4C /* PINCache */ = { + CC3A97A4DA7FC340C7B679B3494EA513 /* RocketData */ = { isa = PBXNativeTarget; - buildConfigurationList = EEC88EFEE538B8E091D1CD1A93DA96E8 /* Build configuration list for PBXNativeTarget "PINCache" */; + buildConfigurationList = 0BE2C1FEB39544146C09159C2106261F /* Build configuration list for PBXNativeTarget "RocketData" */; buildPhases = ( - EB0911E24D428776602C1DEC35B8ECCE /* Sources */, - 2C3BB58E9C26D0A874EA41B1E97CC908 /* Frameworks */, - AA593B1550C4A1E25E95D16FDD9D3424 /* Headers */, + BCD8CFDDBA9C49D09827E70504AF9AB9 /* Sources */, + CC1FCBD30F152F9CF52FF9362D5F21A9 /* Frameworks */, + A218D490CF3707D544A8C934ABE6810A /* Headers */, ); buildRules = ( ); dependencies = ( + 53BDFDE1946768500D32F6440FFE7296 /* PBXTargetDependency */, ); - name = PINCache; - productName = PINCache; - productReference = 4FFA9C7C1FB7653BA1B5C4CE05C4C0E6 /* PINCache.framework */; + name = RocketData; + productName = RocketData; + productReference = 106F5AA8B24AC58F9705F3FA7459B833 /* RocketData.framework */; productType = "com.apple.product-type.framework"; }; - BF143FCB0BDDCCE19A427004B80418A1 /* ConsistencyManager */ = { + CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */ = { isa = PBXNativeTarget; - buildConfigurationList = D4860273489427FA3BC8FD45AEB05BD3 /* Build configuration list for PBXNativeTarget "ConsistencyManager" */; + buildConfigurationList = 80400AB863598523A87EB65199C8BBFD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */; buildPhases = ( - 7EAEF9F68995BA1B94C8487F29DF9C34 /* Sources */, - B459A5D4048DD01BA939BB3FD857D8A4 /* Frameworks */, - CC52059BEC70B517452CDFA876D48AD0 /* Headers */, + 24AA018C28F97A8058C45EEB3A292825 /* Sources */, + F4C89EB621DA3443C7CC196FA7783897 /* Frameworks */, + 251EED542950AD3534D3C8DB411E104A /* Headers */, ); buildRules = ( ); @@ -489,22 +560,24 @@ productReference = CBA97F5884387AA14AB8EFA066145363 /* ConsistencyManager.framework */; productType = "com.apple.product-type.framework"; }; - C52D31276144224304685822B8987958 /* RocketData */ = { + CF024AFA424B8F100A40AFE0F9E618B5 /* Pods-SampleApp */ = { isa = PBXNativeTarget; - buildConfigurationList = ADADAE9FE27DDC723F1609E84052A924 /* Build configuration list for PBXNativeTarget "RocketData" */; + buildConfigurationList = B65C056ED639215FD29F9E556DCC89D8 /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */; buildPhases = ( - EF020E249EA87F821FE9E6868B60E9BF /* Sources */, - BC0A371B59768CECFAB2F207E62193A7 /* Frameworks */, - 60A5D22B5D79003AE350A4C56ECA2B33 /* Headers */, + 105AA62AAC0B5E535D978E0198C7EBD4 /* Sources */, + 2ADE58A3F926DD0CB2216987A718EF25 /* Frameworks */, + CE0414B94BD5A1070A32E042206DD560 /* Headers */, ); buildRules = ( ); dependencies = ( - 5F3FBC6215CBF55BB3656805E70EF995 /* PBXTargetDependency */, + 0D497E2CA5604873EF2974114D37C4F1 /* PBXTargetDependency */, + D7E5764A310BB48EA00C40EDEE077130 /* PBXTargetDependency */, + E722D2DDE077067011F5FD0D223AA46F /* PBXTargetDependency */, ); - name = RocketData; - productName = RocketData; - productReference = 106F5AA8B24AC58F9705F3FA7459B833 /* RocketData.framework */; + name = "Pods-SampleApp"; + productName = "Pods-SampleApp"; + productReference = 99EC2D3F6E0AA3D387164D1E15C93A31 /* Pods_SampleApp.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -513,8 +586,8 @@ D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0700; + LastSwiftUpdateCheck = 0930; + LastUpgradeCheck = 0930; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -528,239 +601,167 @@ projectDirPath = ""; projectRoot = ""; targets = ( - BF143FCB0BDDCCE19A427004B80418A1 /* ConsistencyManager */, - 90C7204433C093B22C6DB3676E135D4C /* PINCache */, - 3151EBBA9C25262DCDF5B4DDA1D8DBC8 /* Pods-SampleApp */, - C52D31276144224304685822B8987958 /* RocketData */, + CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */, + 6A4878A4A87B118BAF0877A103373708 /* PINCache */, + CF024AFA424B8F100A40AFE0F9E618B5 /* Pods-SampleApp */, + CC3A97A4DA7FC340C7B679B3494EA513 /* RocketData */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 48F6A56E7BE771FCEF7CB6E468DFE456 /* Sources */ = { + 06A5C791F37C3C61E858A02BAB9C23C0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F5FA11EBF964FAA61FBE85C891249165 /* Pods-SampleApp-dummy.m in Sources */, + 68A966DC9FE75F46B517A0A01458F0DD /* PINCache-dummy.m in Sources */, + 27E2ACAB5553AF46488DDAAF0B8537D2 /* PINCache.m in Sources */, + 4D8A1FB7701C95E1B3CDCE125FA16463 /* PINDiskCache.m in Sources */, + D2E7CCC6FA04A436D5BCE04E5D639093 /* PINMemoryCache.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7EAEF9F68995BA1B94C8487F29DF9C34 /* Sources */ = { + 105AA62AAC0B5E535D978E0198C7EBD4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 466D55718EE2E044090AA5304AFB7427 /* BatchListener.swift in Sources */, - 22F81B5D194CF29A901A2A6399AF7EB3 /* BatchUpdateModel.swift in Sources */, - 2CE93941851BA6564027344639ADE240 /* CollectionHelpers.swift in Sources */, - 92E4CF92DEF26530B4633401C42CE37D /* ConsistencyManager-dummy.m in Sources */, - E6E7ED38E1CDCE71C37187A17927D8D2 /* ConsistencyManager.swift in Sources */, - 9E7CDDB3DBC6BD36B268726BD3C96ECF /* ConsistencyManagerDelegate.swift in Sources */, - BD436656590B87187BA25C062EFA52EC /* ConsistencyManagerListener.swift in Sources */, - 49B743734DBB42D13DE2E4C95D728258 /* ConsistencyManagerModel.swift in Sources */, - 6A52EA1AB9E49BAF9D979C953CBA94C5 /* ErrorManager.swift in Sources */, - 4839811DF1BEEDBEECD5B9DF09E75F63 /* ModelUpdates.swift in Sources */, - 1906A7F598DC1209C1539185AC70123B /* WeakArray.swift in Sources */, - 79F0359EDE2A2DE6C858B37522B08417 /* WeakListenerArray.swift in Sources */, + 0BFE56DC2EDC8B1037451D0AE0C0A92F /* Pods-SampleApp-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - EB0911E24D428776602C1DEC35B8ECCE /* Sources */ = { + 24AA018C28F97A8058C45EEB3A292825 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8C80D9F9BFBF9147A4AEA6C21755E51C /* PINCache-dummy.m in Sources */, - 4D150612A8A5242A297C0F776BE02D66 /* PINCache.m in Sources */, - BD9A2265EA812BA9CEAB70FAA192C223 /* PINDiskCache.m in Sources */, - 43C917738FE2EFA599B2F1138FF30CDA /* PINMemoryCache.m in Sources */, + 36AC1E4F6E829EFF7EED533BA42B54DC /* Array+Weak.swift in Sources */, + 822307BE07734344679FA644970CF8CD /* BatchListener.swift in Sources */, + 4B065B337B479561160E13B01EAEA0A1 /* BatchUpdateModel.swift in Sources */, + D76F64AC6718611B6D42CE69B17B2DB9 /* CollectionHelpers.swift in Sources */, + 3ECAC56FEBB145EFE4FE9C22AB3D8BB5 /* ConsistencyManager-dummy.m in Sources */, + C4077D53936DFBC6E42745A1E9A70AC0 /* ConsistencyManager.swift in Sources */, + B71C08B6AADC997123138F3B1D2E614D /* ConsistencyManagerDelegate.swift in Sources */, + 7577D28FE99166790C3295B1D76CB27B /* ConsistencyManagerListener.swift in Sources */, + 631B06351A176767C9F4BFE43D20F9DF /* ConsistencyManagerModel.swift in Sources */, + D19F59FE7170377F2C74E93B2D99BFE2 /* ConsistencyManagerUpdatesListener.swift in Sources */, + 001DCC828873428A98B99A0BC22CE1F2 /* ErrorManager.swift in Sources */, + 3B69F7A493CC6D9BA7AAE82C3AB4EF09 /* ModelChange.swift in Sources */, + 9A0CD6C72C3C7D3CE1CE428C24690114 /* ModelUpdates.swift in Sources */, + 2616F72C653C085A30DD4BCDE48A75BC /* TypeErasedWeakHolders.swift in Sources */, + 825E2EC9D8B391C8787D9CFD444575BF /* WeakArray.swift in Sources */, + 283A9AE0309CB9B25265B87DC9E6AD2B /* WeakBox.swift in Sources */, + 263707EA21F73AFEB8A3CC633DB6997A /* WeakHolder.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - EF020E249EA87F821FE9E6868B60E9BF /* Sources */ = { + BCD8CFDDBA9C49D09827E70504AF9AB9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 67D63338B4F2CF06CA29FD96F4ADCC7B /* BatchDataProviderListener.swift in Sources */, - B43671986A02A7145AE34792632B5380 /* CacheDelegate.swift in Sources */, - 87C90EFFD8F4CFCD1E9A3DA726878AC4 /* ChangeTime.swift in Sources */, - 96E0627D7A861A73FADE5875E471A4CC /* CollectionChange.swift in Sources */, - EDCFF9CC3BB11DA0A100E797217A2ADB /* CollectionDataProvider.swift in Sources */, - CC32AA29A7978CB842B06C84C981B990 /* ConsistencyContextWrapper.swift in Sources */, - 069BFF79A45A3E7A57AD2C615841D723 /* DataHolder.swift in Sources */, - EC0F4B7D126DB104E521A8367459E498 /* DataModelManager.swift in Sources */, - CA319689F019A564EF90862F41E1A139 /* DataProvider.swift in Sources */, - 565A0FE43DDCA7726C273E819F97D885 /* Errors.swift in Sources */, - 9E3B3B6A7AA5DEE492754BCF1422A913 /* Logger.swift in Sources */, - 3EB1AD1433F8D4E20986BC4CAAF7F92B /* Model.swift in Sources */, - 84EFA9F0C67525C9F7714C61587C8E69 /* ParsingHelpers.swift in Sources */, - 12530DC94BD2D6013638A5E6EBD6911E /* RocketData-dummy.m in Sources */, - C59A3E20C223DEF828D8802D28D50B42 /* SharedCollectionManager.swift in Sources */, - 217D4F1ACCE68D99B85B533098C96E48 /* WeakSharedCollectionArray.swift in Sources */, + 97379C494F6B1B55557C23006061AACE /* BatchDataProviderListener.swift in Sources */, + 03C13E8EF242C959B5203B3CDF7DFD53 /* CacheDelegate.swift in Sources */, + B76ED9642CE2DA1D0C8A5A5467A0D82E /* ChangeTime.swift in Sources */, + 461FBE8B2B0822FAC78BDB61FA568044 /* CollectionChange.swift in Sources */, + C16B596869C3C9D73D9FC57D97BFD5DA /* CollectionDataProvider.swift in Sources */, + A47FE0397CC14EF044F2131F170619EF /* ConsistencyContextWrapper.swift in Sources */, + E2563B0F0411A2EF3B06D52E50266581 /* DataHolder.swift in Sources */, + D7478D2C64DE55D95C734C1FA789D562 /* DataModelManager.swift in Sources */, + FA06D33C566A0EDE94B1FC295465C5E9 /* DataProvider.swift in Sources */, + BC1D5B931D1BF52B67992F8AFA9FF099 /* Errors.swift in Sources */, + 82A3580BC75BF9DBC758DD60A4FC7EEC /* Logger.swift in Sources */, + B775AAE0A3D8D5287AA9C0AAF0A6219F /* Model.swift in Sources */, + 839428B9193A80D3CD2A236BA0F36E19 /* ParsingHelpers.swift in Sources */, + 835A5B07EC488F10E4F139334882D8FF /* RocketData-dummy.m in Sources */, + 552C54E8B87986D31C0733ED2F766043 /* SharedCollectionManager.swift in Sources */, + A15B4BD94D1228657D7A49E33CE0877C /* WeakSharedCollectionArray.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 15D472114CFBF2827077B7E00F71DBBD /* PBXTargetDependency */ = { + 0D497E2CA5604873EF2974114D37C4F1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PINCache; - target = 90C7204433C093B22C6DB3676E135D4C /* PINCache */; - targetProxy = 5C4729CA0A757B72D017E372B728B6F4 /* PBXContainerItemProxy */; + name = ConsistencyManager; + target = CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */; + targetProxy = 10BB3F279A800629DB409D570B9EE7BB /* PBXContainerItemProxy */; }; - 55AEB9EE12E58FE59762EF2DDA5100A4 /* PBXTargetDependency */ = { + 53BDFDE1946768500D32F6440FFE7296 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RocketData; - target = C52D31276144224304685822B8987958 /* RocketData */; - targetProxy = F4DCD809AB543ED3A428275628E2E974 /* PBXContainerItemProxy */; + name = ConsistencyManager; + target = CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */; + targetProxy = D1296219415AA22AC088888393ABE126 /* PBXContainerItemProxy */; }; - 5F3FBC6215CBF55BB3656805E70EF995 /* PBXTargetDependency */ = { + D7E5764A310BB48EA00C40EDEE077130 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = ConsistencyManager; - target = BF143FCB0BDDCCE19A427004B80418A1 /* ConsistencyManager */; - targetProxy = 70ACCA054DF84CFCFD297D8429C9B130 /* PBXContainerItemProxy */; + name = PINCache; + target = 6A4878A4A87B118BAF0877A103373708 /* PINCache */; + targetProxy = 13E284B044C0228CF3135DD561DDC00C /* PBXContainerItemProxy */; }; - 77ABA952BED60036BE484C39A7BAF516 /* PBXTargetDependency */ = { + E722D2DDE077067011F5FD0D223AA46F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = ConsistencyManager; - target = BF143FCB0BDDCCE19A427004B80418A1 /* ConsistencyManager */; - targetProxy = A51B01242699A3CFDDB1985B8DC6030B /* PBXContainerItemProxy */; + name = RocketData; + target = CC3A97A4DA7FC340C7B679B3494EA513 /* RocketData */; + targetProxy = 49040E4CE974895E01CEDCAB7441C8E1 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 13E96A645A77DAD1FD4F541F18F5DDBF /* Debug */ = { + 2C787187582D38368409273FA9810EF7 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 49E88278043A13D7FDE2AF83963F7D0E /* PINCache.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; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; - ONLY_ACTIVE_ARCH = YES; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 20405E1F17DA8745C2D7DFC1637D7585 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E97958A09AFE83E5E1258ACBDBEF9E13 /* PINCache.xcconfig */; - buildSettings = { + CODE_SIGN_IDENTITY = ""; "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/PINCache/PINCache-prefix.pch"; INFOPLIST_FILE = "Target Support Files/PINCache/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/PINCache/PINCache.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_MODULE_NAME = PINCache; PRODUCT_NAME = PINCache; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 6F3E919C2D457E0799B4644A633F1766 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E97958A09AFE83E5E1258ACBDBEF9E13 /* PINCache.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; - 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/PINCache/PINCache-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PINCache/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/PINCache/PINCache.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = PINCache; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 7492D528FEDCA4E49E96A7723C51F482 /* Debug */ = { + 577BFFB58EEA5E24100123808057FE0D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C803C8144FD5B9CFFC45BE93D7E10CE /* ConsistencyManager.xcconfig */; + baseConfigurationReference = 74DE64890C60B56276093828BBDE9CF3 /* ConsistencyManager.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 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_MODULE_NAME = ConsistencyManager; PRODUCT_NAME = ConsistencyManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -769,143 +770,162 @@ }; name = Debug; }; - 7764579AF786E7CF3D72EC5CF423D54C /* Release */ = { + 643A93998AD8F7DB1A95853BC4E8A584 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A64A481DC6C53B266328C55771CD3AF2 /* RocketData.xcconfig */; + baseConfigurationReference = E8FD1522BAF9AB40CDEE436868B4393C /* Pods-SampleApp.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = ""; "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"; + 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"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = RocketData; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-SampleApp/Pods-SampleApp.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - 862AF3139CD84E18D34FAF2F43CD0DA6 /* Release */ = { + 8B33C5230DE4A9DFA6D8F46505DD7AF7 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 9.3; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - B1844625D99FFD39BBA09B8647C18DDA /* Release */ = { + 933454B4B8C3CDF0903FE242174F5E35 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C66F570C57AF0FDDB797FC88CB838DF2 /* Pods-SampleApp.release.xcconfig */; + baseConfigurationReference = 74DE64890C60B56276093828BBDE9CF3 /* ConsistencyManager.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "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-SampleApp/Info.plist"; + 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 = 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/ConsistencyManager/ConsistencyManager.modulemap"; + PRODUCT_MODULE_NAME = ConsistencyManager; + PRODUCT_NAME = ConsistencyManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; - D3F8A641A3C5230D99374F2D5B68FEA9 /* Debug */ = { + 9D2FDBBCC655B62A18904FC498BDFD62 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 977E19306D119D7023F94AC3AE17E4DE /* Pods-SampleApp.debug.xcconfig */; + baseConfigurationReference = F193CEEB6AEE7BCF7ED788E55342F2EF /* RocketData.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 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-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"; + PRODUCT_MODULE_NAME = RocketData; + PRODUCT_NAME = RocketData; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -914,63 +934,156 @@ }; name = Debug; }; - DADE78EE9F187306B1A7CFD1189BC2B8 /* Release */ = { + B0A8E3DE75886256951081A62E997AE9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C803C8144FD5B9CFFC45BE93D7E10CE /* ConsistencyManager.xcconfig */; + baseConfigurationReference = 49E88278043A13D7FDE2AF83963F7D0E /* PINCache.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "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"; + GCC_PREFIX_HEADER = "Target Support Files/PINCache/PINCache-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/PINCache/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; + MODULEMAP_FILE = "Target Support Files/PINCache/PINCache.modulemap"; + PRODUCT_MODULE_NAME = PINCache; + PRODUCT_NAME = PINCache; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; + name = Debug; + }; + B42B54097A876E8A982CBF5DAA91B1AB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; name = Release; }; - E8407493AEDB1E44A7FD1647B710F6D3 /* Debug */ = { + D72F0D6F17B78D1E010E4228CAA1849B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A64A481DC6C53B266328C55771CD3AF2 /* RocketData.xcconfig */; + baseConfigurationReference = F193CEEB6AEE7BCF7ED788E55342F2EF /* RocketData.xcconfig */; buildSettings = { + CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 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/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 = YES; + PRODUCT_MODULE_NAME = RocketData; PRODUCT_NAME = RocketData; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + EB6FF20C23A7A4248CDC7D9816B0C7BB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E3428D834FFEECC083594BDB801435A3 /* Pods-SampleApp.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-SampleApp/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + 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"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -982,11 +1095,11 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 06C6C62FF59F9B1876B43787AE05BBDB /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */ = { + 0BE2C1FEB39544146C09159C2106261F /* Build configuration list for PBXNativeTarget "RocketData" */ = { isa = XCConfigurationList; buildConfigurations = ( - D3F8A641A3C5230D99374F2D5B68FEA9 /* Debug */, - B1844625D99FFD39BBA09B8647C18DDA /* Release */, + 9D2FDBBCC655B62A18904FC498BDFD62 /* Debug */, + D72F0D6F17B78D1E010E4228CAA1849B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -994,35 +1107,35 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 13E96A645A77DAD1FD4F541F18F5DDBF /* Debug */, - 862AF3139CD84E18D34FAF2F43CD0DA6 /* Release */, + 8B33C5230DE4A9DFA6D8F46505DD7AF7 /* Debug */, + B42B54097A876E8A982CBF5DAA91B1AB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - ADADAE9FE27DDC723F1609E84052A924 /* Build configuration list for PBXNativeTarget "RocketData" */ = { + 483ECA1F8F3E1AF3A5A61F0D70AE8993 /* Build configuration list for PBXNativeTarget "PINCache" */ = { isa = XCConfigurationList; buildConfigurations = ( - E8407493AEDB1E44A7FD1647B710F6D3 /* Debug */, - 7764579AF786E7CF3D72EC5CF423D54C /* Release */, + B0A8E3DE75886256951081A62E997AE9 /* Debug */, + 2C787187582D38368409273FA9810EF7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D4860273489427FA3BC8FD45AEB05BD3 /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { + 80400AB863598523A87EB65199C8BBFD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7492D528FEDCA4E49E96A7723C51F482 /* Debug */, - DADE78EE9F187306B1A7CFD1189BC2B8 /* Release */, + 577BFFB58EEA5E24100123808057FE0D /* Debug */, + 933454B4B8C3CDF0903FE242174F5E35 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - EEC88EFEE538B8E091D1CD1A93DA96E8 /* Build configuration list for PBXNativeTarget "PINCache" */ = { + B65C056ED639215FD29F9E556DCC89D8 /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */ = { isa = XCConfigurationList; buildConfigurations = ( - 6F3E919C2D457E0799B4644A633F1766 /* Debug */, - 20405E1F17DA8745C2D7DFC1637D7585 /* Release */, + EB6FF20C23A7A4248CDC7D9816B0C7BB /* Debug */, + 643A93998AD8F7DB1A95853BC4E8A584 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch b/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch index aa992a4..beb2a24 100644 --- a/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch +++ b/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch @@ -1,4 +1,12 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h b/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h index b87136c..ab808c9 100644 --- a/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h +++ b/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig b/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig index 57888fb..64ebd78 100644 --- a/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig +++ b/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig @@ -1,10 +1,10 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/ConsistencyManager PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES diff --git a/SampleApp/Pods/Target Support Files/ConsistencyManager/Info.plist b/SampleApp/Pods/Target Support Files/ConsistencyManager/Info.plist index 3424ca6..82c355f 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 - 4.0.0 + 5.2.0 CFBundleSignature ???? CFBundleVersion diff --git a/SampleApp/Pods/Target Support Files/PINCache/PINCache-prefix.pch b/SampleApp/Pods/Target Support Files/PINCache/PINCache-prefix.pch index 5e15de4..2b29dbc 100644 --- a/SampleApp/Pods/Target Support Files/PINCache/PINCache-prefix.pch +++ b/SampleApp/Pods/Target Support Files/PINCache/PINCache-prefix.pch @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif #ifndef TARGET_OS_WATCH diff --git a/SampleApp/Pods/Target Support Files/PINCache/PINCache-umbrella.h b/SampleApp/Pods/Target Support Files/PINCache/PINCache-umbrella.h index 9d87866..21338cf 100644 --- a/SampleApp/Pods/Target Support Files/PINCache/PINCache-umbrella.h +++ b/SampleApp/Pods/Target Support Files/PINCache/PINCache-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif #import "Nullability.h" diff --git a/SampleApp/Pods/Target Support Files/PINCache/PINCache.xcconfig b/SampleApp/Pods/Target Support Files/PINCache/PINCache.xcconfig index a0013ab..1d77264 100644 --- a/SampleApp/Pods/Target Support Files/PINCache/PINCache.xcconfig +++ b/SampleApp/Pods/Target Support Files/PINCache/PINCache.xcconfig @@ -1,9 +1,9 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/PINCache +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PINCache GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = -framework "Foundation" -weak_framework "UIKit" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/PINCache PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES diff --git a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh index f82c24b..6b27743 100755 --- a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh +++ b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh @@ -1,11 +1,28 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework install_framework() { if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then @@ -23,9 +40,9 @@ install_framework() 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}" + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" local basename basename="$(basename -s .framework "$1")" @@ -54,24 +71,65 @@ install_framework() fi } +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + 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 + 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" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" fi } # Strip invalid architectures strip_invalid_archs() { binary="$1" - # Get architectures for current file - archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi stripped="" - for arch in $archs; do - if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place lipo -remove "$arch" -output "$binary" "$binary" || exit 1 stripped="$stripped $arch" @@ -80,16 +138,20 @@ strip_invalid_archs() { if [[ "$stripped" ]]; then echo "Stripped $binary of architectures:$stripped" fi + STRIP_BINARY_RETVAL=1 } if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/ConsistencyManager/ConsistencyManager.framework" - install_framework "$BUILT_PRODUCTS_DIR/PINCache/PINCache.framework" - install_framework "$BUILT_PRODUCTS_DIR/RocketData/RocketData.framework" + install_framework "${BUILT_PRODUCTS_DIR}/ConsistencyManager/ConsistencyManager.framework" + install_framework "${BUILT_PRODUCTS_DIR}/PINCache/PINCache.framework" + install_framework "${BUILT_PRODUCTS_DIR}/RocketData/RocketData.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "$BUILT_PRODUCTS_DIR/ConsistencyManager/ConsistencyManager.framework" - install_framework "$BUILT_PRODUCTS_DIR/PINCache/PINCache.framework" - install_framework "$BUILT_PRODUCTS_DIR/RocketData/RocketData.framework" + install_framework "${BUILT_PRODUCTS_DIR}/ConsistencyManager/ConsistencyManager.framework" + install_framework "${BUILT_PRODUCTS_DIR}/PINCache/PINCache.framework" + install_framework "${BUILT_PRODUCTS_DIR}/RocketData/RocketData.framework" +fi +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait fi diff --git a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-resources.sh b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-resources.sh index 25e9d37..fe3f9c7 100755 --- a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-resources.sh +++ b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-resources.sh @@ -1,5 +1,13 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then + # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy + # resources to, so exit 0 (signalling the script phase was successful). + exit 0 +fi mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" @@ -8,7 +16,11 @@ RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt XCASSET_FILES=() -case "${TARGETED_DEVICE_FAMILY}" in +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +case "${TARGETED_DEVICE_FAMILY:-}" in 1,2) TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" ;; @@ -18,6 +30,12 @@ case "${TARGETED_DEVICE_FAMILY}" in 2) TARGET_DEVICE_ARGS="--target-device ipad" ;; + 3) + TARGET_DEVICE_ARGS="--target-device tv" + ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; *) TARGET_DEVICE_ARGS="--target-device mac" ;; @@ -38,29 +56,29 @@ EOM fi case $RESOURCE_PATH in *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} ;; *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" ;; *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" ;; *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" ;; *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" ;; *.xcassets) @@ -68,7 +86,7 @@ EOM XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") ;; *) - echo "$RESOURCE_PATH" + echo "$RESOURCE_PATH" || true echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" ;; esac @@ -82,7 +100,7 @@ if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then fi rm -f "$RESOURCES_TO_COPY" -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] then # Find all other xcassets (this unfortunately includes those of path pods and other targets). OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) @@ -92,5 +110,9 @@ then fi done <<<"$OTHER_XCASSETS" - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + else + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_BUILD_DIR}/assetcatalog_generated_info.plist" + fi fi diff --git a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-umbrella.h b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-umbrella.h index 8c6d3be..9436e1c 100644 --- a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-umbrella.h +++ b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif 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..6eab943 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,11 +1,11 @@ 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" +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 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager/ConsistencyManager.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PINCache/PINCache.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RocketData/RocketData.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PINCache/PINCache.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RocketData/RocketData.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "PINCache" -framework "RocketData" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods 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..6eab943 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,11 +1,11 @@ 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" +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 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager/ConsistencyManager.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/PINCache/PINCache.framework/Headers" -iquote "$PODS_CONFIGURATION_BUILD_DIR/RocketData/RocketData.framework/Headers" +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PINCache/PINCache.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RocketData/RocketData.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "PINCache" -framework "RocketData" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods diff --git a/SampleApp/Pods/Target Support Files/RocketData/Info.plist b/SampleApp/Pods/Target Support Files/RocketData/Info.plist index b672cd7..e2771ff 100644 --- a/SampleApp/Pods/Target Support Files/RocketData/Info.plist +++ b/SampleApp/Pods/Target Support Files/RocketData/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.0.1 + 5.0.0 CFBundleSignature ???? CFBundleVersion diff --git a/SampleApp/Pods/Target Support Files/RocketData/RocketData-prefix.pch b/SampleApp/Pods/Target Support Files/RocketData/RocketData-prefix.pch index aa992a4..beb2a24 100644 --- a/SampleApp/Pods/Target Support Files/RocketData/RocketData-prefix.pch +++ b/SampleApp/Pods/Target Support Files/RocketData/RocketData-prefix.pch @@ -1,4 +1,12 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/SampleApp/Pods/Target Support Files/RocketData/RocketData-umbrella.h b/SampleApp/Pods/Target Support Files/RocketData/RocketData-umbrella.h index 6c51a62..e50ecb0 100644 --- a/SampleApp/Pods/Target Support Files/RocketData/RocketData-umbrella.h +++ b/SampleApp/Pods/Target Support Files/RocketData/RocketData-umbrella.h @@ -1,5 +1,13 @@ #ifdef __OBJC__ #import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif #endif diff --git a/SampleApp/Pods/Target Support Files/RocketData/RocketData.xcconfig b/SampleApp/Pods/Target Support Files/RocketData/RocketData.xcconfig index 34a6037..b25df67 100644 --- a/SampleApp/Pods/Target Support Files/RocketData/RocketData.xcconfig +++ b/SampleApp/Pods/Target Support Files/RocketData/RocketData.xcconfig @@ -1,11 +1,11 @@ -CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/RocketData -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/ConsistencyManager" +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RocketData +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" OTHER_LDFLAGS = -framework "Foundation" OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = $BUILD_DIR -PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES diff --git a/SampleApp/SampleApp.xcodeproj/project.pbxproj b/SampleApp/SampleApp.xcodeproj/project.pbxproj index e03b828..1f9b1e7 100644 --- a/SampleApp/SampleApp.xcodeproj/project.pbxproj +++ b/SampleApp/SampleApp.xcodeproj/project.pbxproj @@ -159,7 +159,6 @@ 61C795A01D428D1000631563 /* Frameworks */, 61C795A11D428D1000631563 /* Resources */, B600ADE6AABE1F257B77E3F6 /* [CP] Embed Pods Frameworks */, - 3B8B9C3D6B577E30DF32834A /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -177,12 +176,12 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = LinkedIn; TargetAttributes = { 61C795A21D428D1000631563 = { CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 0930; }; }; }; @@ -219,34 +218,22 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B8B9C3D6B577E30DF32834A /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; 884BE47D6F3DE542B671C73C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-SampleApp-checkManifestLockResult.txt", ); 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_PODFILE_DIR_PATH}/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# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; B600ADE6AABE1F257B77E3F6 /* [CP] Embed Pods Frameworks */ = { @@ -255,9 +242,16 @@ files = ( ); inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/ConsistencyManager/ConsistencyManager.framework", + "${BUILT_PRODUCTS_DIR}/PINCache/PINCache.framework", + "${BUILT_PRODUCTS_DIR}/RocketData/RocketData.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ConsistencyManager.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PINCache.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RocketData.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -307,14 +301,22 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -356,14 +358,22 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -400,7 +410,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.plivesey.SampleApp; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -415,7 +425,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.plivesey.SampleApp; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; diff --git a/SampleApp/SampleApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/SampleApp/SampleApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/SampleApp/SampleApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/SampleApp/SampleApp/RocketDataHelpers/RocketDataCacheDelegate.swift b/SampleApp/SampleApp/RocketDataHelpers/RocketDataCacheDelegate.swift index dbc210a..57be76a 100644 --- a/SampleApp/SampleApp/RocketDataHelpers/RocketDataCacheDelegate.swift +++ b/SampleApp/SampleApp/RocketDataHelpers/RocketDataCacheDelegate.swift @@ -53,7 +53,7 @@ class RocketDataCacheDelegate: CacheDelegate { // For this app, we've decided to save the models from collections seperately // So, collectionCacheValue is an array of ids. We'll try to resolved each of these ids to a real object in the cache // If one fails, that's ok. We'll still return as much as we can - let collection: [T] = collectionCacheValue.flatMap { + let collection: [T] = collectionCacheValue.compactMap { guard let data = self.cache.object(forKey: $0) as? [AnyHashable: Any] else { return nil } @@ -74,7 +74,7 @@ class RocketDataCacheDelegate: CacheDelegate { } } - let collectionCacheValue = collection.flatMap { + let collectionCacheValue = collection.compactMap { return $0.modelIdentifier } From 5d23a6a848fa380da2e10f9d665ebcc4419c12b9 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Fri, 25 May 2018 16:21:59 -0700 Subject: [PATCH 14/33] Cleaning up the sample app to remove swift 3 references and remove the upgrade to swift 4 warning --- SampleApp/Podfile | 13 +- SampleApp/Podfile.lock | 23 +- .../ConsistencyManager.swift | 2 +- .../DataStructures/Array+Weak.swift | 2 +- .../DataStructures/BatchUpdateModel.swift | 2 +- SampleApp/Pods/ConsistencyManager/README.md | 18 +- .../Local Podspecs/RocketData.podspec.json | 6 +- SampleApp/Pods/Manifest.lock | 23 +- SampleApp/Pods/Pods.xcodeproj/project.pbxproj | 310 +++++++++--------- .../ConsistencyManager/Info.plist | 2 +- .../RocketData/Info.plist | 2 +- 11 files changed, 188 insertions(+), 215 deletions(-) diff --git a/SampleApp/Podfile b/SampleApp/Podfile index a904fda..295b7b3 100644 --- a/SampleApp/Podfile +++ b/SampleApp/Podfile @@ -2,17 +2,6 @@ use_frameworks! target :SampleApp do pod 'RocketData', :path => '..' - pod 'PINCache', :git => 'https://github.com/pinterest/PINCache.git', :commit => '58635e4ff8d00fcd25084259a625c0615e9d071a' -end - -# This is necessary to convert the target to swift 3.0 -# This isn't detected automatically by cocoapods or supported in the podspec -# We can remove this once Cocoapods has a better solution -post_install do |installer| - installer.pods_project.targets.each do |target| - target.build_configurations.each do |config| - config.build_settings['SWIFT_VERSION'] = '3.0' - end - end + pod 'PINCache' end diff --git a/SampleApp/Podfile.lock b/SampleApp/Podfile.lock index 6f23568..952841e 100644 --- a/SampleApp/Podfile.lock +++ b/SampleApp/Podfile.lock @@ -1,34 +1,27 @@ PODS: - - ConsistencyManager (5.2.0) + - ConsistencyManager (6.0.0) - PINCache (2.3) - - RocketData (5.0.0): - - ConsistencyManager (~> 5.2.0) + - RocketData (6.0.0): + - ConsistencyManager (~> 6.0.0) DEPENDENCIES: - - PINCache (from `https://github.com/pinterest/PINCache.git`, commit `58635e4ff8d00fcd25084259a625c0615e9d071a`) + - PINCache - RocketData (from `..`) SPEC REPOS: https://github.com/CocoaPods/Specs.git: - ConsistencyManager + - PINCache EXTERNAL SOURCES: - PINCache: - :commit: 58635e4ff8d00fcd25084259a625c0615e9d071a - :git: https://github.com/pinterest/PINCache.git RocketData: :path: ".." -CHECKOUT OPTIONS: - PINCache: - :commit: 58635e4ff8d00fcd25084259a625c0615e9d071a - :git: https://github.com/pinterest/PINCache.git - SPEC CHECKSUMS: - ConsistencyManager: 66a94b64e767a85698c2cb8c0184885760810fdc + ConsistencyManager: 10d92488107167a8d9df3cd93e529a15282ceaec PINCache: ce36ed282031b92fc7733ffe831f474ff80fddc2 - RocketData: 15de5666f229bd9eeba4854fbe224b532c79ae03 + RocketData: 407c9aeff026cf9281683717d78d26e15f6f8a98 -PODFILE CHECKSUM: b5eb42e36b4847085a928ca720bb30354bb63d2e +PODFILE CHECKSUM: cb6653d292a93b194174111d0be6bb93b45e1b23 COCOAPODS: 1.5.0 diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift index 2d5d063..c3fcc2a 100644 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift @@ -636,7 +636,7 @@ open class ConsistencyManager { } // Given the current model, let's generate new models for each listener - let results: [(listener: ConsistencyManagerListener, newModel: ConsistencyManagerModel?, modelUpdates: ModelUpdates)] = currentModels.flatMap { (listener, currentModel) in + let results: [(listener: ConsistencyManagerListener, newModel: ConsistencyManagerModel?, modelUpdates: ModelUpdates)] = currentModels.compactMap { (listener, currentModel) in guard let currentModel = currentModel else { // Else the model has disappeared (so the listener isn't listening to anything anymore). // Let's not remove the listener though, because we could screw something up due to timing issues (we are on a different thread) diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift index 70f6d79..a6dbd3d 100644 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift @@ -71,7 +71,7 @@ extension Array where Element: WeakHolder { Note how you need to specify the types of the flatMap so it doesn't conflict with the default flatMap. */ public func flatMap(_ transform: (Element.Element?) throws -> T?) rethrows -> [U] where U.Element == T { - return try flatMap { (weakHolder: Element) in + return try compactMap { (weakHolder: Element) in let newElement = try transform(weakHolder.element) return newElement.flatMap(U.init) } diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchUpdateModel.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchUpdateModel.swift index 1b7f39c..d37d4a2 100644 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchUpdateModel.swift +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchUpdateModel.swift @@ -65,7 +65,7 @@ public final class BatchUpdateModel: ConsistencyManagerModel { } public func forEach(_ visit: (ConsistencyManagerModel) -> Void) { - models.flatMap { $0 }.forEach(visit) + models.compactMap { $0 }.forEach(visit) } public func isEqualToModel(_ other: ConsistencyManagerModel) -> Bool { diff --git a/SampleApp/Pods/ConsistencyManager/README.md b/SampleApp/Pods/ConsistencyManager/README.md index e26974a..8f51a5e 100644 --- a/SampleApp/Pods/ConsistencyManager/README.md +++ b/SampleApp/Pods/ConsistencyManager/README.md @@ -1,8 +1,8 @@ # Overview -[![Build Status](https://travis-ci.org/linkedin/ConsistencyManager-iOS.svg?branch=master)](https://travis-ci.org/linkedin/ConsistencyManager-iOS) -[![codecov](https://codecov.io/gh/linkedin/ConsistencyManager-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/linkedin/ConsistencyManager-iOS) -[![GitHub release](https://img.shields.io/github/release/linkedin/ConsistencyManager-iOS.svg?maxAge=86400)](https://github.com/linkedin/ConsistencyManager-iOS/releases) +[![Build Status](https://travis-ci.org/plivesey/ConsistencyManager-iOS.svg?branch=master)](https://travis-ci.org/linkedin/ConsistencyManager-iOS) +[![codecov](https://codecov.io/gh/plivesey/ConsistencyManager-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/linkedin/ConsistencyManager-iOS) +[![GitHub release](https://img.shields.io/github/release/plivesey/ConsistencyManager-iOS.svg?maxAge=86400)](https://github.com/linkedin/ConsistencyManager-iOS/releases) ![Platforms](https://img.shields.io/badge/platforms-iOS%20%7C%20tvOS%20%7C%20macOS-blue.svg) This library provides a way of keeping immutable models consistent. First, listeners listen to an immutable model. Whenever this model (or any child model) is updated, the Consistency Manager will generate a new model and notify its listeners. @@ -11,9 +11,9 @@ This library provides a way of keeping immutable models consistent. First, liste If you are interested in this project, you may want to consider using Rocket Data which provides a higher level API for the Consistency Manager. It implements caching, collection support, and conflict resolution. It's the recommended way for consuming the Consistency Manager. -GitHub: https://github.com/linkedin/RocketData +GitHub: https://github.com/plivesey/RocketData -Documentation: https://linkedin.github.io/RocketData +Documentation: https://plivesey.github.io/RocketData ## Installation @@ -29,7 +29,7 @@ Immutable models have many advantages including thread-safety, performance, and Immutable models can be visualized as trees. Each model has fields representing data (strings, ints, etc.) and pointers to other immutable models. Each model also may have an id to uniquely identify themselves. For instance, a messaging application could have these two models: -
+
In the application, two view controllers would register with the Consistency Manager that they are listening on these models. @@ -40,7 +40,7 @@ ConsistencyManager.sharedInstance.listenForUpdates(self) Later in the application, some source, like a network request, push notification, or user action, indicates that a person with id = 12 has come online. The application can then create a new person model which looks like this: -
+
Then, the application would update this model in the consistency manager. @@ -50,7 +50,7 @@ ConsistencyManager.sharedInstance.updateWithNewModel(personModel) The Consistency Manager finds that two models, Message and Contacts, need updating and creates new copies of these models with the updated Person model: -
+
The Consistency Manager then delivers the updated models to the subscribed listeners (view controllers in this case) via delegate callbacks. The view controller simply needs to set the new data and refresh its view. @@ -58,7 +58,7 @@ The Consistency Manager then delivers the updated models to the subscribed liste To get started, you should take a look at the docs: -https://linkedin.github.io/ConsistencyManager-iOS +https://plivesey.github.io/ConsistencyManager-iOS ## Swift Version diff --git a/SampleApp/Pods/Local Podspecs/RocketData.podspec.json b/SampleApp/Pods/Local Podspecs/RocketData.podspec.json index ce6e5bd..dc41146 100644 --- a/SampleApp/Pods/Local Podspecs/RocketData.podspec.json +++ b/SampleApp/Pods/Local Podspecs/RocketData.podspec.json @@ -1,6 +1,6 @@ { "name": "RocketData", - "version": "5.0.0", + "version": "6.0.0", "license": { "type": "Apache License, Version 2.0" }, @@ -9,7 +9,7 @@ "summary": "A non-blocking CoreData replacement which uses immutable models.", "source": { "git": "https://github.com/plivesey/RocketData.git", - "tag": "5.0.0" + "tag": "6.0.0" }, "source_files": "RocketData/**/*.swift", "platforms": { @@ -18,7 +18,7 @@ "frameworks": "Foundation", "dependencies": { "ConsistencyManager": [ - "~> 5.2.0" + "~> 6.0.0" ] } } diff --git a/SampleApp/Pods/Manifest.lock b/SampleApp/Pods/Manifest.lock index 6f23568..952841e 100644 --- a/SampleApp/Pods/Manifest.lock +++ b/SampleApp/Pods/Manifest.lock @@ -1,34 +1,27 @@ PODS: - - ConsistencyManager (5.2.0) + - ConsistencyManager (6.0.0) - PINCache (2.3) - - RocketData (5.0.0): - - ConsistencyManager (~> 5.2.0) + - RocketData (6.0.0): + - ConsistencyManager (~> 6.0.0) DEPENDENCIES: - - PINCache (from `https://github.com/pinterest/PINCache.git`, commit `58635e4ff8d00fcd25084259a625c0615e9d071a`) + - PINCache - RocketData (from `..`) SPEC REPOS: https://github.com/CocoaPods/Specs.git: - ConsistencyManager + - PINCache EXTERNAL SOURCES: - PINCache: - :commit: 58635e4ff8d00fcd25084259a625c0615e9d071a - :git: https://github.com/pinterest/PINCache.git RocketData: :path: ".." -CHECKOUT OPTIONS: - PINCache: - :commit: 58635e4ff8d00fcd25084259a625c0615e9d071a - :git: https://github.com/pinterest/PINCache.git - SPEC CHECKSUMS: - ConsistencyManager: 66a94b64e767a85698c2cb8c0184885760810fdc + ConsistencyManager: 10d92488107167a8d9df3cd93e529a15282ceaec PINCache: ce36ed282031b92fc7733ffe831f474ff80fddc2 - RocketData: 15de5666f229bd9eeba4854fbe224b532c79ae03 + RocketData: 407c9aeff026cf9281683717d78d26e15f6f8a98 -PODFILE CHECKSUM: b5eb42e36b4847085a928ca720bb30354bb63d2e +PODFILE CHECKSUM: cb6653d292a93b194174111d0be6bb93b45e1b23 COCOAPODS: 1.5.0 diff --git a/SampleApp/Pods/Pods.xcodeproj/project.pbxproj b/SampleApp/Pods/Pods.xcodeproj/project.pbxproj index f9ee018..6b41b98 100644 --- a/SampleApp/Pods/Pods.xcodeproj/project.pbxproj +++ b/SampleApp/Pods/Pods.xcodeproj/project.pbxproj @@ -14,11 +14,13 @@ 263707EA21F73AFEB8A3CC633DB6997A /* WeakHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 733B9C1E910C94400F04F1F685C49C19 /* WeakHolder.swift */; }; 27E2ACAB5553AF46488DDAAF0B8537D2 /* PINCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A60392FC3899980B67CD5ADABE3B73D5 /* PINCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; 283A9AE0309CB9B25265B87DC9E6AD2B /* WeakBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8550AC39285335C0A5F724B97B2B69F4 /* WeakBox.swift */; }; - 2A0F504A48C6B6E8149AA25ECBA882BC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47D0A3C0EAB75F037978F58E44BFC6CC /* Foundation.framework */; }; - 2FF1D28805C55D445C47D34BBB668A3E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EEF064E748A8EABDAAD551109A60398E /* UIKit.framework */; }; + 2F341F5146023710BD347AEB3E9E40CB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DDD76805BAA9A0B459C3304AC44AC79 /* UIKit.framework */; }; + 344D168B7F4F11306C702333CBADCD8D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */; }; 36AC1E4F6E829EFF7EED533BA42B54DC /* Array+Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9501E69B03FC3FB8F1E054CFDEDFBC24 /* Array+Weak.swift */; }; 3B69F7A493CC6D9BA7AAE82C3AB4EF09 /* ModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 292D121928E7D89D1F4098258FDECE2A /* ModelChange.swift */; }; 3ECAC56FEBB145EFE4FE9C22AB3D8BB5 /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B19F0C6F6A3D9B6C43534142D1CC226B /* ConsistencyManager-dummy.m */; }; + 41244A50E29EAE3F0AAA7A41C3659AB5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */; }; + 4258E8714B4290FD60EBAA55BCCE42E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */; }; 4479A3765D16BC2D340B5057405C9143 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1313DE66A3785B7BBA205244397F41F9 /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 461FBE8B2B0822FAC78BDB61FA568044 /* CollectionChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = D445078350992F7CFCFEAD3AFA77895F /* CollectionChange.swift */; }; 4B065B337B479561160E13B01EAEA0A1 /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B25DE55BF762317600372F34CB51263 /* BatchUpdateModel.swift */; }; @@ -27,7 +29,6 @@ 552C54E8B87986D31C0733ED2F766043 /* SharedCollectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F33A648C0DA5195760B9C7E360FD6C /* SharedCollectionManager.swift */; }; 631B06351A176767C9F4BFE43D20F9DF /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE6F1213FB02BA5DFAC290351C88F /* ConsistencyManagerModel.swift */; }; 68A966DC9FE75F46B517A0A01458F0DD /* PINCache-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F42BF1E618F362FA4F1A29E01D43CC51 /* PINCache-dummy.m */; }; - 6CE66B52EA65DF5B232359DC23937968 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47D0A3C0EAB75F037978F58E44BFC6CC /* Foundation.framework */; }; 7577D28FE99166790C3295B1D76CB27B /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB130AC0264A6AA35B4FC8D838CD6584 /* ConsistencyManagerListener.swift */; }; 7D00332C0E554E00DCFAC03EDCCCA5FC /* Nullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 15CD9C4BF96AB280478EC0BFFC811DCA /* Nullability.h */; settings = {ATTRIBUTES = (Public, ); }; }; 822307BE07734344679FA644970CF8CD /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E252B14D461FAC83AC5FB05B5C56FB7 /* BatchListener.swift */; }; @@ -35,7 +36,6 @@ 82A3580BC75BF9DBC758DD60A4FC7EEC /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FACA43E67C5A9A73E880F0D07ABA1EE /* Logger.swift */; }; 835A5B07EC488F10E4F139334882D8FF /* RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F965A8EEFCC269A926AA2CFAFB39BCE7 /* RocketData-dummy.m */; }; 839428B9193A80D3CD2A236BA0F36E19 /* ParsingHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 695A477312ABD35395C93FA57791512F /* ParsingHelpers.swift */; }; - 926D5C8ECA28352A2F83E2C5C2C665EF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47D0A3C0EAB75F037978F58E44BFC6CC /* Foundation.framework */; }; 97379C494F6B1B55557C23006061AACE /* BatchDataProviderListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DE415DA8E1BB6CB557AE351514C6CA8 /* BatchDataProviderListener.swift */; }; 9A0CD6C72C3C7D3CE1CE428C24690114 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14460E333A1F091A1CDFAA63EF051D2C /* ModelUpdates.swift */; }; A15B4BD94D1228657D7A49E33CE0877C /* WeakSharedCollectionArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC73ADB215D0464E4A58CD2028E74554 /* WeakSharedCollectionArray.swift */; }; @@ -56,7 +56,7 @@ D7478D2C64DE55D95C734C1FA789D562 /* DataModelManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ABFDF7627234F2215D390E0F44F4D3A /* DataModelManager.swift */; }; D76F64AC6718611B6D42CE69B17B2DB9 /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BFD4B7F1F388E7110C23DD2BBEC252 /* CollectionHelpers.swift */; }; E2563B0F0411A2EF3B06D52E50266581 /* DataHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9B41ED2BABCD66474FC65B3DDC0C41F /* DataHolder.swift */; }; - F93B8C96B745676D18D9FFADA3825155 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47D0A3C0EAB75F037978F58E44BFC6CC /* Foundation.framework */; }; + E357CB7BDBC61274F850B5D8E0183C79 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */; }; FA06D33C566A0EDE94B1FC295465C5E9 /* DataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 165CABA1494A8265D9BE601DD6C51887 /* DataProvider.swift */; }; FB3C4D6291C393F0DBA06AFA53C28F2E /* ConsistencyManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D49C9E86A88F4A4E6F5F6B112E0A8035 /* ConsistencyManager.framework */; }; FD744C29B5D44CB24577829D164C76C9 /* RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 342074D70E6F1B7308166F8FF244AD05 /* RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -121,7 +121,6 @@ 3F8CA378484B42E0CF4F444A4DA1E275 /* Model.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Model.swift; path = RocketData/Model.swift; sourceTree = ""; }; 43E0836AB7F78D7F2563BA2715E694C8 /* Pods-SampleApp-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SampleApp-umbrella.h"; sourceTree = ""; }; 4661B3F1717111BADD79722F3340199B /* 090_otherFeatures.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 090_otherFeatures.rst; path = docs/pages/090_otherFeatures.rst; sourceTree = ""; }; - 47D0A3C0EAB75F037978F58E44BFC6CC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 490B90C7CC2786512B8C62A66654FDFC /* 020_requirements.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 020_requirements.rst; path = docs/pages/020_requirements.rst; sourceTree = ""; }; 49E88278043A13D7FDE2AF83963F7D0E /* PINCache.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PINCache.xcconfig; sourceTree = ""; }; 4B4423CD6B4DD332ADA0F40052EF64A4 /* PINCacheObjectSubscripting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCacheObjectSubscripting.h; path = PINCache/PINCacheObjectSubscripting.h; sourceTree = ""; }; @@ -150,12 +149,14 @@ 8550AC39285335C0A5F724B97B2B69F4 /* WeakBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakBox.swift; path = ConsistencyManager/DataStructures/WeakBox.swift; sourceTree = ""; }; 8F043E69E2FE266738809045309E6300 /* exampleModels.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = exampleModels.png; path = docs/images/exampleModels.png; sourceTree = ""; }; 9095B6655763153D63D23DDB872ABEBF /* CollectionDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionDataProvider.swift; path = RocketData/CollectionDataProvider.swift; sourceTree = ""; }; + 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 91E34C2187030136F6DB77752E5F4911 /* Pods-SampleApp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SampleApp-dummy.m"; sourceTree = ""; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9501E69B03FC3FB8F1E054CFDEDFBC24 /* Array+Weak.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Weak.swift"; path = "ConsistencyManager/DataStructures/Array+Weak.swift"; sourceTree = ""; }; 95A918B2ADF80A146100A75403D6666F /* PINMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINMemoryCache.m; path = PINCache/PINMemoryCache.m; sourceTree = ""; }; 99EC2D3F6E0AA3D387164D1E15C93A31 /* Pods_SampleApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_SampleApp.framework; path = "Pods-SampleApp.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 9ABFDF7627234F2215D390E0F44F4D3A /* DataModelManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataModelManager.swift; path = RocketData/DataModelManager.swift; sourceTree = ""; }; + 9DDD76805BAA9A0B459C3304AC44AC79 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 9DE415DA8E1BB6CB557AE351514C6CA8 /* BatchDataProviderListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchDataProviderListener.swift; path = RocketData/BatchDataProviderListener.swift; sourceTree = ""; }; 9F138238A2B36EAD88014DADD999B56B /* PINCache.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PINCache.modulemap; sourceTree = ""; }; 9FC24ED114BB46404756B7BDBB0C306D /* PINDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINDiskCache.m; path = PINCache/PINDiskCache.m; sourceTree = ""; }; @@ -190,7 +191,6 @@ E7C84F8FE00F8693DF4DDD6013DD0B5C /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; E8FD1522BAF9AB40CDEE436868B4393C /* Pods-SampleApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp.release.xcconfig"; sourceTree = ""; }; ED5F43458CE2ECC4F9BF87D646DABD8D /* 040_setup.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 040_setup.rst; path = docs/pages/040_setup.rst; sourceTree = ""; }; - EEF064E748A8EABDAAD551109A60398E /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; F0F580B8DAAB408CD914D45F3FAF0C92 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; F193CEEB6AEE7BCF7ED788E55342F2EF /* RocketData.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RocketData.xcconfig; sourceTree = ""; }; F416922ACFF853066487097292FCDA5F /* README */ = {isa = PBXFileReference; includeInIndex = 1; name = README; path = docs/README; sourceTree = ""; }; @@ -204,7 +204,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 926D5C8ECA28352A2F83E2C5C2C665EF /* Foundation.framework in Frameworks */, + 344D168B7F4F11306C702333CBADCD8D /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -212,7 +212,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6CE66B52EA65DF5B232359DC23937968 /* Foundation.framework in Frameworks */, + 4258E8714B4290FD60EBAA55BCCE42E4 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -221,7 +221,7 @@ buildActionMask = 2147483647; files = ( FB3C4D6291C393F0DBA06AFA53C28F2E /* ConsistencyManager.framework in Frameworks */, - 2A0F504A48C6B6E8149AA25ECBA882BC /* Foundation.framework in Frameworks */, + E357CB7BDBC61274F850B5D8E0183C79 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -229,8 +229,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F93B8C96B745676D18D9FFADA3825155 /* Foundation.framework in Frameworks */, - 2FF1D28805C55D445C47D34BBB668A3E /* UIKit.framework in Frameworks */, + 41244A50E29EAE3F0AAA7A41C3659AB5 /* Foundation.framework in Frameworks */, + 2F341F5146023710BD347AEB3E9E40CB /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -281,20 +281,11 @@ name = "Targets Support Files"; sourceTree = ""; }; - 46C8C884D88B997F60FF4CBD86D1D85B /* iOS */ = { - isa = PBXGroup; - children = ( - 47D0A3C0EAB75F037978F58E44BFC6CC /* Foundation.framework */, - EEF064E748A8EABDAAD551109A60398E /* UIKit.framework */, - ); - name = iOS; - sourceTree = ""; - }; 49F432E7CB094AD693C0A3BA8443D356 /* Frameworks */ = { isa = PBXGroup; children = ( D49C9E86A88F4A4E6F5F6B112E0A8035 /* ConsistencyManager.framework */, - 46C8C884D88B997F60FF4CBD86D1D85B /* iOS */, + 5DD1349B4F350C0F70771411DD3A3311 /* iOS */, ); name = Frameworks; sourceTree = ""; @@ -324,6 +315,15 @@ path = ConsistencyManager; sourceTree = ""; }; + 5DD1349B4F350C0F70771411DD3A3311 /* iOS */ = { + isa = PBXGroup; + children = ( + 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */, + 9DDD76805BAA9A0B459C3304AC44AC79 /* UIKit.framework */, + ); + name = iOS; + sourceTree = ""; + }; 6B65B1AE67F46E7DDBD3F4C1879BF4EA /* PINCache */ = { isa = PBXGroup; children = ( @@ -706,7 +706,39 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 2C787187582D38368409273FA9810EF7 /* Release */ = { + 1E9AF75DA2158A381A9CAA0F21A50707 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 74DE64890C60B56276093828BBDE9CF3 /* ConsistencyManager.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + 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"; + PRODUCT_MODULE_NAME = ConsistencyManager; + PRODUCT_NAME = ConsistencyManager; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 46774D57E95E35FEAB957D3AF79410CF /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 49E88278043A13D7FDE2AF83963F7D0E /* PINCache.xcconfig */; buildSettings = { @@ -730,7 +762,7 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -738,9 +770,9 @@ }; name = Release; }; - 577BFFB58EEA5E24100123808057FE0D /* Debug */ = { + 4E795B133BB0926A33C3CF1D08CAFDC1 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 74DE64890C60B56276093828BBDE9CF3 /* ConsistencyManager.xcconfig */; + baseConfigurationReference = F193CEEB6AEE7BCF7ED788E55342F2EF /* RocketData.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -751,26 +783,26 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ConsistencyManager/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 = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; - PRODUCT_MODULE_NAME = ConsistencyManager; - PRODUCT_NAME = ConsistencyManager; + MODULEMAP_FILE = "Target Support Files/RocketData/RocketData.modulemap"; + PRODUCT_MODULE_NAME = RocketData; + PRODUCT_NAME = RocketData; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 643A93998AD8F7DB1A95853BC4E8A584 /* Release */ = { + 575A15207BC67831ABEEBCE81D539338 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = E8FD1522BAF9AB40CDEE436868B4393C /* Pods-SampleApp.release.xcconfig */; buildSettings = { @@ -798,7 +830,6 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -806,6 +837,72 @@ }; name = Release; }; + 665729E6C0C0BFD76FD743B9BCB179F2 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 49E88278043A13D7FDE2AF83963F7D0E /* PINCache.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/PINCache/PINCache-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/PINCache/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/PINCache/PINCache.modulemap"; + PRODUCT_MODULE_NAME = PINCache; + PRODUCT_NAME = PINCache; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 7F750EC93A605D6E94943E7380073A7B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E3428D834FFEECC083594BDB801435A3 /* Pods-SampleApp.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-SampleApp/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + 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"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 8B33C5230DE4A9DFA6D8F46505DD7AF7 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -869,102 +966,6 @@ }; name = Debug; }; - 933454B4B8C3CDF0903FE242174F5E35 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 74DE64890C60B56276093828BBDE9CF3 /* ConsistencyManager.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - 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"; - PRODUCT_MODULE_NAME = ConsistencyManager; - PRODUCT_NAME = ConsistencyManager; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 9D2FDBBCC655B62A18904FC498BDFD62 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F193CEEB6AEE7BCF7ED788E55342F2EF /* RocketData.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - 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"; - PRODUCT_MODULE_NAME = RocketData; - PRODUCT_NAME = RocketData; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B0A8E3DE75886256951081A62E997AE9 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 49E88278043A13D7FDE2AF83963F7D0E /* PINCache.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PINCache/PINCache-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PINCache/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/PINCache/PINCache.modulemap"; - PRODUCT_MODULE_NAME = PINCache; - PRODUCT_NAME = PINCache; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; B42B54097A876E8A982CBF5DAA91B1AB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1023,7 +1024,7 @@ }; name = Release; }; - D72F0D6F17B78D1E010E4228CAA1849B /* Release */ = { + DAF828628021EF8B2965BED4F438889A /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = F193CEEB6AEE7BCF7ED788E55342F2EF /* RocketData.xcconfig */; buildSettings = { @@ -1048,7 +1049,7 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -1056,11 +1057,10 @@ }; name = Release; }; - EB6FF20C23A7A4248CDC7D9816B0C7BB /* Debug */ = { + E2C8B07B26D896B5532177519A843674 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E3428D834FFEECC083594BDB801435A3 /* Pods-SampleApp.debug.xcconfig */; + baseConfigurationReference = 74DE64890C60B56276093828BBDE9CF3 /* ConsistencyManager.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1070,27 +1070,25 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-SampleApp/Info.plist"; + 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 = 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"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; + PRODUCT_MODULE_NAME = ConsistencyManager; + PRODUCT_NAME = ConsistencyManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; /* End XCBuildConfiguration section */ @@ -1098,8 +1096,8 @@ 0BE2C1FEB39544146C09159C2106261F /* Build configuration list for PBXNativeTarget "RocketData" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9D2FDBBCC655B62A18904FC498BDFD62 /* Debug */, - D72F0D6F17B78D1E010E4228CAA1849B /* Release */, + 4E795B133BB0926A33C3CF1D08CAFDC1 /* Debug */, + DAF828628021EF8B2965BED4F438889A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1116,8 +1114,8 @@ 483ECA1F8F3E1AF3A5A61F0D70AE8993 /* Build configuration list for PBXNativeTarget "PINCache" */ = { isa = XCConfigurationList; buildConfigurations = ( - B0A8E3DE75886256951081A62E997AE9 /* Debug */, - 2C787187582D38368409273FA9810EF7 /* Release */, + 665729E6C0C0BFD76FD743B9BCB179F2 /* Debug */, + 46774D57E95E35FEAB957D3AF79410CF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1125,8 +1123,8 @@ 80400AB863598523A87EB65199C8BBFD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 577BFFB58EEA5E24100123808057FE0D /* Debug */, - 933454B4B8C3CDF0903FE242174F5E35 /* Release */, + 1E9AF75DA2158A381A9CAA0F21A50707 /* Debug */, + E2C8B07B26D896B5532177519A843674 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1134,8 +1132,8 @@ B65C056ED639215FD29F9E556DCC89D8 /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */ = { isa = XCConfigurationList; buildConfigurations = ( - EB6FF20C23A7A4248CDC7D9816B0C7BB /* Debug */, - 643A93998AD8F7DB1A95853BC4E8A584 /* Release */, + 7F750EC93A605D6E94943E7380073A7B /* Debug */, + 575A15207BC67831ABEEBCE81D539338 /* 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 82c355f..e92eb78 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 - 5.2.0 + 6.0.0 CFBundleSignature ???? CFBundleVersion diff --git a/SampleApp/Pods/Target Support Files/RocketData/Info.plist b/SampleApp/Pods/Target Support Files/RocketData/Info.plist index e2771ff..e92eb78 100644 --- a/SampleApp/Pods/Target Support Files/RocketData/Info.plist +++ b/SampleApp/Pods/Target Support Files/RocketData/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 5.0.0 + 6.0.0 CFBundleSignature ???? CFBundleVersion From fee52d004129f1fa3a67c0488c415dd66086597e Mon Sep 17 00:00:00 2001 From: Elijah Dou Date: Thu, 23 Aug 2018 23:50:02 +0800 Subject: [PATCH 15/33] fix thinking Model to SimpleMode error (#80) --- RocketData/Model.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RocketData/Model.swift b/RocketData/Model.swift index 769bc5d..91b9dbf 100644 --- a/RocketData/Model.swift +++ b/RocketData/Model.swift @@ -118,7 +118,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 { + if let model = model as? SimpleModel { return isEqual(to: model) } else { return false From f1e9733d6a82efd9305eb2b4f8764520cee235e8 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Thu, 23 Aug 2018 08:51:25 -0700 Subject: [PATCH 16/33] Bumping to 6.0.1 --- RocketData.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RocketData.podspec b/RocketData.podspec index bbd4eda..27d12dd 100644 --- a/RocketData.podspec +++ b/RocketData.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'RocketData' - spec.version = '6.0.0' + spec.version = '6.0.1' spec.license = { :type => 'Apache License, Version 2.0' } spec.homepage = 'https://plivesey.github.io/RocketData' spec.authors = 'plivesey' From e683826b3dede0ee59f6586f48e9aac6a9df2b62 Mon Sep 17 00:00:00 2001 From: Heberti Almeida Date: Mon, 10 Sep 2018 13:30:37 -0400 Subject: [PATCH 17/33] Update Cartfile to use new version of ConsistencyManager (#81) --- Cartfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Cartfile b/Cartfile index 2c45f6c..f6aa58a 100644 --- a/Cartfile +++ b/Cartfile @@ -1,3 +1 @@ -github "linkedin/ConsistencyManager-iOS" ~> 5.0.0 - - +github "plivesey/ConsistencyManager-iOS" ~> 6.0.0 From 2d7cb0d5091cea7eb5fac92a7bbf1c2d36a36de3 Mon Sep 17 00:00:00 2001 From: Elijah Dou Date: Fri, 21 Sep 2018 00:27:35 +0800 Subject: [PATCH 18/33] improve performance when has data conflicts (#84) * improve performance when has data conflicts * replace _ = with discardableResult --- RocketData/BatchDataProviderListener.swift | 2 +- RocketData/CollectionDataProvider.swift | 41 +++++++++++++------ RocketData/DataHolder.swift | 6 ++- RocketData/DataModelManager.swift | 4 +- RocketData/DataProvider.swift | 14 +++++-- RocketData/Logger.swift | 2 +- SampleApp/Podfile.lock | 8 ++-- .../Local Podspecs/RocketData.podspec.json | 4 +- SampleApp/Pods/Manifest.lock | 8 ++-- .../Pods-SampleApp-resources.sh | 2 +- .../RocketData/Info.plist | 2 +- 11 files changed, 60 insertions(+), 33 deletions(-) diff --git a/RocketData/BatchDataProviderListener.swift b/RocketData/BatchDataProviderListener.swift index fdc9523..af2be92 100644 --- a/RocketData/BatchDataProviderListener.swift +++ b/RocketData/BatchDataProviderListener.swift @@ -30,7 +30,7 @@ open class BatchDataProviderListener: BatchListenerDelegate { open weak var delegate: BatchDataProviderListenerDelegate? /// The consistency manager which is backed by this instance - open let consistencyManager: ConsistencyManager + public let consistencyManager: ConsistencyManager /// This is the batch listener from the consistency manager which contains most of the logic for doing batch listening private let batchListener: BatchListener diff --git a/RocketData/CollectionDataProvider.swift b/RocketData/CollectionDataProvider.swift index 89f53d2..073d9c1 100644 --- a/RocketData/CollectionDataProvider.swift +++ b/RocketData/CollectionDataProvider.swift @@ -43,7 +43,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B } /// The DataModelManager which backs this data provider. - open let dataModelManager: DataModelManager + public let dataModelManager: DataModelManager /// This saves the batchListener instance. It is public because it implements the BatchListenable protocol. You should never edit this directly. open weak var batchListener: BatchDataProviderListener? @@ -129,7 +129,10 @@ open class CollectionDataProvider: ConsistencyManagerListener, B anything else you want. */ open func setData(_ data: [T], cacheKey: String?, shouldCache: Bool = true, context: Any? = nil) { - self.dataHolder.setData(data, changeTime: ChangeTime()) + let isSuccess = self.dataHolder.setData(data, changeTime: ChangeTime()) + if !isSuccess { + return + } self.cacheKey = cacheKey if shouldCache, let cacheKey = cacheKey { dataModelManager.cacheCollection(data, forKey: cacheKey, context: context) @@ -193,7 +196,12 @@ open class CollectionDataProvider: ConsistencyManagerListener, B if cacheKey != self.cacheKey && cacheDataFresh { if let collection = collection { - self.dataHolder.setData(collection, changeTime: ChangeTime()) + let isSuccess = self.dataHolder.setData(collection, changeTime: ChangeTime()) + // If the method such as setData is not called from the main thread, there may still be conflicts. If so, just return + if !isSuccess { + return + } + self.listenForUpdates() self.cacheKey = cacheKey } @@ -220,8 +228,11 @@ open class CollectionDataProvider: ConsistencyManagerListener, B if newData.count > 0 { var updatedData = data updatedData.insert(contentsOf: newData, at: index) - dataHolder.setData(updatedData, changeTime: ChangeTime()) - + let isSuccess = dataHolder.setData(updatedData, changeTime: ChangeTime()) + if !isSuccess { + return + } + if shouldCache, let cacheKey = cacheKey { dataModelManager.cacheCollection(data, forKey: cacheKey, context: context) } @@ -267,7 +278,10 @@ open class CollectionDataProvider: ConsistencyManagerListener, B open func update(_ element: T, at index: Int, shouldCache: Bool = true, context: Any? = nil) { var updatedData = data updatedData[index] = element - dataHolder.setData(updatedData, changeTime: ChangeTime()) + let isSuccess = dataHolder.setData(updatedData, changeTime: ChangeTime()) + if !isSuccess { + return + } if shouldCache, let cacheKey = cacheKey { self.dataModelManager.cacheCollection(data, forKey: cacheKey, context: context) @@ -298,7 +312,10 @@ open class CollectionDataProvider: ConsistencyManagerListener, B open func remove(at index: Int, shouldCache: Bool = true, context: Any? = nil) { var updatedData = data updatedData.remove(at: index) - dataHolder.setData(updatedData, changeTime: ChangeTime()) + let isSuccess = dataHolder.setData(updatedData, changeTime: ChangeTime()) + if !isSuccess { + return + } if shouldCache, let cacheKey = cacheKey { dataModelManager.cacheCollection(data, forKey: cacheKey, context: context) @@ -327,7 +344,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B - parameter dataModelManager: The data model manager to associate with this change. - parameter context: This context will be passed onto the cache delegate. Default nil. */ - open static func setData(_ data: [T], cacheKey: String, dataModelManager: DataModelManager, context: Any? = nil) { + public static func setData(_ data: [T], cacheKey: String, dataModelManager: DataModelManager, context: Any? = nil) { let collectionDataProvider = CollectionDataProvider(dataModelManager: dataModelManager) collectionDataProvider.setData(data, cacheKey: cacheKey, context: context) } @@ -347,7 +364,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B - parameter completion: This completion block is called when the insert has succeeded (but the data may not yet be propegated to the cache). If there is no data in the cache for this cacheKey, it will return an error as the insert has failed. Default nil. */ - open static func insert(_ newData: [T], at index: @escaping (([T])->Int), cacheKey: String, dataModelManager: DataModelManager, context: Any? = nil, completion: ((NSError?)->())? = nil) { + public 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(withCacheKey: cacheKey) { cachedData, error in if let cachedData = cachedData { @@ -370,7 +387,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B - parameter completion: This completion block is called when the insert has succeeded (but the data may not yet be propegated to the cache). If there is no data in the cache for this cacheKey, it will return an error as the insert has failed. Default nil. */ - open static func append(_ newData: [T], cacheKey: String, dataModelManager: DataModelManager, context: Any? = nil, completion: ((NSError?)->())? = nil) { + public static func append(_ newData: [T], cacheKey: String, dataModelManager: DataModelManager, context: Any? = nil, completion: ((NSError?)->())? = nil) { let collectionDataProvider = CollectionDataProvider(dataModelManager: dataModelManager) collectionDataProvider.fetchDataFromCache(withCacheKey: cacheKey) { cachedData, error in collectionDataProvider.append(newData, context: context) @@ -393,7 +410,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B - parameter completion: This completion block is called when the insert has succeeded (but the data may not yet be propegated to the cache). If there is no data in the cache for this cacheKey, it will return an error as the insert has failed. Default nil. */ - open static func update(_ element: T, at index: @escaping (([T])->Int), cacheKey: String, dataModelManager: DataModelManager, context: Any? = nil, completion: ((NSError?)->())? = nil) { + public 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(withCacheKey: cacheKey) { cachedData, error in if let cachedData = cachedData { @@ -417,7 +434,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B - parameter completion: This completion block is called when the insert has succeeded (but the data may not yet be propegated to the cache). If there is no data in the cache for this cacheKey, it will return an error as the insert has failed. Default nil. */ - open static func removeAtIndex(_ index: @escaping (([T])->Int), cacheKey: String, dataModelManager: DataModelManager, context: Any? = nil, completion: ((NSError?)->())? = nil) { + public static func removeAtIndex(_ index: @escaping (([T])->Int), cacheKey: String, dataModelManager: DataModelManager, context: Any? = nil, completion: ((NSError?)->())? = nil) { let collectionDataProvider = CollectionDataProvider(dataModelManager: dataModelManager) collectionDataProvider.fetchDataFromCache(withCacheKey: cacheKey) { cachedData, error in if let cachedData = cachedData { diff --git a/RocketData/DataHolder.swift b/RocketData/DataHolder.swift index e11dc94..b041036 100644 --- a/RocketData/DataHolder.swift +++ b/RocketData/DataHolder.swift @@ -34,12 +34,14 @@ struct DataHolder { This modifies the data in the data holder. - parameter data: The new data. - parameter changeTime: The new change time to set on lastUpdated. + - Returns: whether to successfully set the data */ - mutating func setData(_ data: T, changeTime: ChangeTime) { + @discardableResult mutating func setData(_ data: T, changeTime: ChangeTime) -> Bool { if lastUpdated.after(changeTime) { - return + return false } self.data = data lastUpdated = changeTime + return true } } diff --git a/RocketData/DataModelManager.swift b/RocketData/DataModelManager.swift index 0b5d1a4..ffdf8ad 100644 --- a/RocketData/DataModelManager.swift +++ b/RocketData/DataModelManager.swift @@ -30,10 +30,10 @@ import ConsistencyManager open class DataModelManager { /// Cache Delegate. This is strongly retained since it is required by the library. - open let cacheDelegate: CacheDelegate + public let cacheDelegate: CacheDelegate /// Consistency Manager. - open let consistencyManager = ConsistencyManager() + public let consistencyManager = ConsistencyManager() let sharedCollectionManager = SharedCollectionManager() diff --git a/RocketData/DataProvider.swift b/RocketData/DataProvider.swift index 1a6fff3..57b2e59 100644 --- a/RocketData/DataProvider.swift +++ b/RocketData/DataProvider.swift @@ -28,7 +28,7 @@ open class DataProvider: ConsistencyManagerListener, BatchListen open weak var delegate: DataProviderDelegate? /// The data model manager which is backing this DataProvider - open let dataModelManager: DataModelManager + public let dataModelManager: DataModelManager /** You can set this variable to pause and unpause listening for changes to data. @@ -129,7 +129,11 @@ open class DataProvider: ConsistencyManagerListener, BatchListen or anything else you want. */ open func setData(_ data: T?, updateCache: Bool = true, context: Any? = nil) { - self.dataHolder.setData(data, changeTime: ChangeTime()) + let isSuccess = self.dataHolder.setData(data, changeTime: ChangeTime()) + if !isSuccess { + return + } + if let data = data { if let cacheKey = data.modelIdentifier , updateCache { dataModelManager.cacheModel(data, forKey: cacheKey, context: context) @@ -171,7 +175,11 @@ open class DataProvider: ConsistencyManagerListener, BatchListen if cacheDataFresh { if let model = model { - self.dataHolder.setData(model, changeTime: ChangeTime()) + let isSuccess = self.dataHolder.setData(model, changeTime: ChangeTime()) + if !isSuccess { + return + } + self.listenForUpdates() } completion(model, error) diff --git a/RocketData/Logger.swift b/RocketData/Logger.swift index de47525..670fc1d 100644 --- a/RocketData/Logger.swift +++ b/RocketData/Logger.swift @@ -16,7 +16,7 @@ import Foundation open class Log { /// Singleton accessor - open static let sharedInstance = Log() + public static let sharedInstance = Log() /// Delegate for the class. If nil, then it will do default logging. Otherwise, it will leave it up to the delegate. open weak var delegate: LogDelegate? diff --git a/SampleApp/Podfile.lock b/SampleApp/Podfile.lock index 952841e..050f053 100644 --- a/SampleApp/Podfile.lock +++ b/SampleApp/Podfile.lock @@ -1,7 +1,7 @@ PODS: - ConsistencyManager (6.0.0) - PINCache (2.3) - - RocketData (6.0.0): + - RocketData (6.0.1): - ConsistencyManager (~> 6.0.0) DEPENDENCIES: @@ -9,7 +9,7 @@ DEPENDENCIES: - RocketData (from `..`) SPEC REPOS: - https://github.com/CocoaPods/Specs.git: + https://github.com/cocoapods/specs.git: - ConsistencyManager - PINCache @@ -20,8 +20,8 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: ConsistencyManager: 10d92488107167a8d9df3cd93e529a15282ceaec PINCache: ce36ed282031b92fc7733ffe831f474ff80fddc2 - RocketData: 407c9aeff026cf9281683717d78d26e15f6f8a98 + RocketData: 2663345b70a12a0dcfb0752fb438c799866d450f PODFILE CHECKSUM: cb6653d292a93b194174111d0be6bb93b45e1b23 -COCOAPODS: 1.5.0 +COCOAPODS: 1.5.3 diff --git a/SampleApp/Pods/Local Podspecs/RocketData.podspec.json b/SampleApp/Pods/Local Podspecs/RocketData.podspec.json index dc41146..14de5c9 100644 --- a/SampleApp/Pods/Local Podspecs/RocketData.podspec.json +++ b/SampleApp/Pods/Local Podspecs/RocketData.podspec.json @@ -1,6 +1,6 @@ { "name": "RocketData", - "version": "6.0.0", + "version": "6.0.1", "license": { "type": "Apache License, Version 2.0" }, @@ -9,7 +9,7 @@ "summary": "A non-blocking CoreData replacement which uses immutable models.", "source": { "git": "https://github.com/plivesey/RocketData.git", - "tag": "6.0.0" + "tag": "6.0.1" }, "source_files": "RocketData/**/*.swift", "platforms": { diff --git a/SampleApp/Pods/Manifest.lock b/SampleApp/Pods/Manifest.lock index 952841e..050f053 100644 --- a/SampleApp/Pods/Manifest.lock +++ b/SampleApp/Pods/Manifest.lock @@ -1,7 +1,7 @@ PODS: - ConsistencyManager (6.0.0) - PINCache (2.3) - - RocketData (6.0.0): + - RocketData (6.0.1): - ConsistencyManager (~> 6.0.0) DEPENDENCIES: @@ -9,7 +9,7 @@ DEPENDENCIES: - RocketData (from `..`) SPEC REPOS: - https://github.com/CocoaPods/Specs.git: + https://github.com/cocoapods/specs.git: - ConsistencyManager - PINCache @@ -20,8 +20,8 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: ConsistencyManager: 10d92488107167a8d9df3cd93e529a15282ceaec PINCache: ce36ed282031b92fc7733ffe831f474ff80fddc2 - RocketData: 407c9aeff026cf9281683717d78d26e15f6f8a98 + RocketData: 2663345b70a12a0dcfb0752fb438c799866d450f PODFILE CHECKSUM: cb6653d292a93b194174111d0be6bb93b45e1b23 -COCOAPODS: 1.5.0 +COCOAPODS: 1.5.3 diff --git a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-resources.sh b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-resources.sh index fe3f9c7..345301f 100755 --- a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-resources.sh +++ b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-resources.sh @@ -113,6 +113,6 @@ then if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" else - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_BUILD_DIR}/assetcatalog_generated_info.plist" + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" fi fi diff --git a/SampleApp/Pods/Target Support Files/RocketData/Info.plist b/SampleApp/Pods/Target Support Files/RocketData/Info.plist index e92eb78..5f6d93f 100644 --- a/SampleApp/Pods/Target Support Files/RocketData/Info.plist +++ b/SampleApp/Pods/Target Support Files/RocketData/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 6.0.0 + 6.0.1 CFBundleSignature ???? CFBundleVersion From 437cd5c2263c757862d3a08e1d56927c090f2667 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Thu, 20 Sep 2018 10:21:17 -0700 Subject: [PATCH 19/33] More swift 4.2 migration Updating travis and build.sh to build on Xcode 10 Adding a simulator to test iOS 12 on travis Updating Consistency Manager Since consistency manager version is backwards incompatible because of a swift 4.2 change, bumping the major version --- .travis.yml | 2 +- README.md | 3 ++- RocketData.podspec | 4 ++-- RocketData.xcodeproj/project.pbxproj | 16 ++++++---------- RocketData/ParsingHelpers.swift | 8 ++++---- build.sh | 1 + 6 files changed, 16 insertions(+), 18 deletions(-) diff --git a/.travis.yml b/.travis.yml index d59432b..021ee7a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: objective-c -osx_image: xcode9.3 +osx_image: xcode10 script: sh build.sh after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/README.md b/README.md index 2949053..f0bf8ad 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ NOTE: Currently, `--platform ios` is necessary for some reason. We are investiga ### Swift Version -We are currently not maintaining separate branches for different Swift versions. You can use an older version of Rocket Data for older versions of Swift though. HEAD currently supports Swift 4. +We are currently not maintaining separate branches for different Swift versions. You can use an older version of Rocket Data for older versions of Swift though. HEAD currently supports Swift 4.2. | Swift Version | Rocket Data Version | |---------------|------------------------------| @@ -57,6 +57,7 @@ We are currently not maintaining separate branches for different Swift versions. | 3 (Easy migration API) | 2.0.0 | | 3 (Better API) | 4.x.x | | 4 | 5.x.x | +| 4.2 | 7.x.x | NOTE: If you are migrating to Swift 3, consider using version 2.0.0 first, then migrating to 3.x.x. 3.0.0 migrates the code to the new syntax without making any API changes. 3.x.x introduces a better API which is more consistent with the new Swift 3 API guidelines. diff --git a/RocketData.podspec b/RocketData.podspec index 27d12dd..b1645f8 100644 --- a/RocketData.podspec +++ b/RocketData.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'RocketData' - spec.version = '6.0.1' + spec.version = '7.0.0' spec.license = { :type => 'Apache License, Version 2.0' } spec.homepage = 'https://plivesey.github.io/RocketData' spec.authors = 'plivesey' @@ -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', '~> 6.0.0' + spec.dependency 'ConsistencyManager', '~> 7.0.0' end diff --git a/RocketData.xcodeproj/project.pbxproj b/RocketData.xcodeproj/project.pbxproj index 0795968..c9836e5 100644 --- a/RocketData.xcodeproj/project.pbxproj +++ b/RocketData.xcodeproj/project.pbxproj @@ -327,11 +327,11 @@ TargetAttributes = { 612242B01C7B85D40017B0C4 = { CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 0930; + LastSwiftMigration = 1000; }; 612242BA1C7B85D40017B0C4 = { CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 0930; + LastSwiftMigration = 1000; }; }; }; @@ -648,8 +648,7 @@ PRODUCT_NAME = RocketData; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -670,8 +669,7 @@ PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketData; PRODUCT_NAME = RocketData; SKIP_INSTALL = YES; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; }; name = Release; }; @@ -684,8 +682,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketDataTests; PRODUCT_NAME = RocketDataTests; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -698,8 +695,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketDataTests; PRODUCT_NAME = RocketDataTests; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; }; name = Release; }; diff --git a/RocketData/ParsingHelpers.swift b/RocketData/ParsingHelpers.swift index 28d2805..4546db3 100644 --- a/RocketData/ParsingHelpers.swift +++ b/RocketData/ParsingHelpers.swift @@ -30,7 +30,7 @@ open class ParsingHelpers { Sadly, this does not work if U is a protocol due to a Swift bug. In this case, you'll need to optionally cast manually. */ - open static func parseModel(_ parseBlock: (U.Type) -> U?) -> (T?, NSError?) { + public static func parseModel(_ parseBlock: (U.Type) -> U?) -> (T?, NSError?) { if let Model = T.self as? U.Type { let model = parseBlock(Model) as? T return (model, nil) @@ -60,7 +60,7 @@ open class ParsingHelpers { Sadly, this does not work if U is a protocol due to a Swift bug. In this case, you'll need to optionally cast manually. */ - open static func parseModel(_ parseBlock: (U.Type) -> (U?, NSError?)) -> (T?, NSError?) { + public static func parseModel(_ parseBlock: (U.Type) -> (U?, NSError?)) -> (T?, NSError?) { if let Model = T.self as? U.Type { let model = parseBlock(Model) return (model.0 as? T, model.1) @@ -88,7 +88,7 @@ open class ParsingHelpers { Sadly, this does not work if U is a protocol due to a Swift bug. In this case, you'll need to optionally cast manually. */ - open static func parseCollection(_ parseBlock: (U.Type) -> [U]?) -> ([T]?, NSError?) { + public static func parseCollection(_ parseBlock: (U.Type) -> [U]?) -> ([T]?, NSError?) { if let Model = T.self as? U.Type { let model = parseBlock(Model) // Though this is a flat map, this should never fail since T is a subtype of U @@ -120,7 +120,7 @@ open class ParsingHelpers { Sadly, this does not work if U is a protocol due to a Swift bug. In this case, you'll need to optionally cast manually. */ - open static func parseCollection(_ parseBlock: (U.Type) -> ([U]?, NSError?)) -> ([T]?, NSError?) { + public static func parseCollection(_ parseBlock: (U.Type) -> ([U]?, NSError?)) -> ([T]?, NSError?) { if let Model = T.self as? U.Type { let model = parseBlock(Model) // Though this is a flat map, this should never fail since T is a subtype of U diff --git a/build.sh b/build.sh index d7c59c4..fcad574 100755 --- a/build.sh +++ b/build.sh @@ -7,6 +7,7 @@ time xcodebuild clean test \ -sdk iphonesimulator \ -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.3' \ -destination 'platform=iOS Simulator,name=iPhone X,OS=11.1' \ + -destination 'platform=iOS Simulator,name=iPhone XS Max,OS=12.0' \ | xcpretty # Disabling 8.4 because it's very flaky on travis From b52ef107bca5d252663367a75858da2c568c5866 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Fri, 21 Sep 2018 09:24:32 -0700 Subject: [PATCH 20/33] Updating swift version --- .swift-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.swift-version b/.swift-version index 8ef0f50..5e2d215 100644 --- a/.swift-version +++ b/.swift-version @@ -1,2 +1,2 @@ -3.0 +4.2 From dd39e41331b7b521271e00004baecd82a148ac51 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Fri, 21 Sep 2018 09:46:33 -0700 Subject: [PATCH 21/33] Updating the consistency manager to version 7.0.0 Fixing the sample app for swift 4.2 --- Podfile | 4 +- Podfile.lock | 14 +- .../ConsistencyManager.swift | 4 +- .../DataStructures/BatchListener.swift | 2 +- Pods/ConsistencyManager/README.md | 6 +- Pods/Manifest.lock | 14 +- Pods/Pods.xcodeproj/project.pbxproj | 580 +++++------ .../ConsistencyManager-Info.plist | 26 + .../ConsistencyManager.xcconfig | 5 +- .../Pods-RocketData-Info.plist | 26 + .../Pods-RocketData-acknowledgements.plist | 239 +---- .../Pods-RocketData.debug.xcconfig | 4 +- .../Pods-RocketData.release.xcconfig | 4 +- .../Pods-RocketDataTests-Info.plist | 26 + ...ods-RocketDataTests-acknowledgements.plist | 239 +---- .../Pods-RocketDataTests-frameworks.sh | 20 +- .../Pods-RocketDataTests.debug.xcconfig | 4 +- .../Pods-RocketDataTests.release.xcconfig | 4 +- RocketData.xcodeproj/project.pbxproj | 36 +- SampleApp/Podfile.lock | 12 +- .../ConsistencyManager.swift | 4 +- .../DataStructures/BatchListener.swift | 2 +- SampleApp/Pods/ConsistencyManager/README.md | 6 +- .../Local Podspecs/RocketData.podspec.json | 6 +- SampleApp/Pods/Manifest.lock | 12 +- SampleApp/Pods/Pods.xcodeproj/project.pbxproj | 908 +++++++++--------- .../ConsistencyManager-Info.plist | 26 + .../ConsistencyManager.xcconfig | 4 +- .../PINCache/PINCache-Info.plist | 26 + .../PINCache/PINCache.xcconfig | 2 +- .../Pods-SampleApp/Pods-SampleApp-Info.plist | 26 + .../Pods-SampleApp-acknowledgements.plist | 663 +------------ .../Pods-SampleApp-frameworks.sh | 9 +- .../Pods-SampleApp.debug.xcconfig | 4 +- .../Pods-SampleApp.release.xcconfig | 4 +- .../RocketData/RocketData-Info.plist | 26 + .../RocketData/RocketData.xcconfig | 4 +- SampleApp/SampleApp.xcodeproj/project.pbxproj | 8 +- SampleApp/SampleApp/AppDelegate.swift | 2 +- 39 files changed, 1060 insertions(+), 1951 deletions(-) create mode 100644 Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist create mode 100644 Pods/Target Support Files/Pods-RocketData/Pods-RocketData-Info.plist create mode 100644 Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-Info.plist create mode 100644 SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist create mode 100644 SampleApp/Pods/Target Support Files/PINCache/PINCache-Info.plist create mode 100644 SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-Info.plist create mode 100644 SampleApp/Pods/Target Support Files/RocketData/RocketData-Info.plist diff --git a/Podfile b/Podfile index eb83791..a172fb6 100644 --- a/Podfile +++ b/Podfile @@ -3,10 +3,10 @@ use_frameworks! target :'RocketData' do - pod 'ConsistencyManager', '~> 6.0.0' + pod 'ConsistencyManager', '~> 7.0.0' end target :'RocketDataTests' do - pod 'ConsistencyManager', '~> 6.0.0' + pod 'ConsistencyManager', '~> 7.0.0' end diff --git a/Podfile.lock b/Podfile.lock index 8d4890f..7873e88 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,12 +1,16 @@ PODS: - - ConsistencyManager (6.0.0) + - ConsistencyManager (7.0.0) DEPENDENCIES: - - ConsistencyManager (~> 6.0.0) + - ConsistencyManager (~> 7.0.0) + +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - ConsistencyManager SPEC CHECKSUMS: - ConsistencyManager: 10d92488107167a8d9df3cd93e529a15282ceaec + ConsistencyManager: f6209893e3974579109bf10b9df65fe1f024cc6f -PODFILE CHECKSUM: 23217410773c338b8571eb56301ac0b04b43d886 +PODFILE CHECKSUM: e6242e3b997e6035fc5876eba5df08c1c3215ae8 -COCOAPODS: 1.4.0 +COCOAPODS: 1.6.0.beta.1 diff --git a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift index c3fcc2a..5830866 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift @@ -119,7 +119,7 @@ open class ConsistencyManager { // MARK: - Initializers /// Singleton accessor for the consistency manager. - open static let sharedInstance = ConsistencyManager() + public static let sharedInstance = ConsistencyManager() /** Designated initializer. @@ -836,7 +836,7 @@ open class ConsistencyManager { super.init() #if os(iOS) // On OSX, we don't need this since there are no memory warnings. - NotificationCenter.default.addObserver(self, selector: #selector(UIApplicationDelegate.applicationDidReceiveMemoryWarning(_:)), name: NSNotification.Name.UIApplicationDidReceiveMemoryWarning, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(UIApplicationDelegate.applicationDidReceiveMemoryWarning(_:)), name: UIApplication.didReceiveMemoryWarningNotification, object: nil) #endif } diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift index 2bacf3a..a535cf5 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift @@ -27,7 +27,7 @@ import Foundation */ open class BatchListener: ConsistencyManagerListener { - open let listeners: [ConsistencyManagerListener] + public let listeners: [ConsistencyManagerListener] /// The delegate that is called after one or more listeners in the `listeners` array are updated open weak var delegate: BatchListenerDelegate? diff --git a/Pods/ConsistencyManager/README.md b/Pods/ConsistencyManager/README.md index 8f51a5e..b7eda12 100644 --- a/Pods/ConsistencyManager/README.md +++ b/Pods/ConsistencyManager/README.md @@ -1,8 +1,8 @@ # Overview -[![Build Status](https://travis-ci.org/plivesey/ConsistencyManager-iOS.svg?branch=master)](https://travis-ci.org/linkedin/ConsistencyManager-iOS) -[![codecov](https://codecov.io/gh/plivesey/ConsistencyManager-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/linkedin/ConsistencyManager-iOS) -[![GitHub release](https://img.shields.io/github/release/plivesey/ConsistencyManager-iOS.svg?maxAge=86400)](https://github.com/linkedin/ConsistencyManager-iOS/releases) +[![Build Status](https://travis-ci.org/plivesey/ConsistencyManager-iOS.svg?branch=master)](https://travis-ci.org/plivesey/ConsistencyManager-iOS) +[![codecov](https://codecov.io/gh/plivesey/ConsistencyManager-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/plivesey/ConsistencyManager-iOS) +[![GitHub release](https://img.shields.io/github/release/plivesey/ConsistencyManager-iOS.svg?maxAge=86400)](https://github.com/plivesey/ConsistencyManager-iOS/releases) ![Platforms](https://img.shields.io/badge/platforms-iOS%20%7C%20tvOS%20%7C%20macOS-blue.svg) This library provides a way of keeping immutable models consistent. First, listeners listen to an immutable model. Whenever this model (or any child model) is updated, the Consistency Manager will generate a new model and notify its listeners. diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 8d4890f..7873e88 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,12 +1,16 @@ PODS: - - ConsistencyManager (6.0.0) + - ConsistencyManager (7.0.0) DEPENDENCIES: - - ConsistencyManager (~> 6.0.0) + - ConsistencyManager (~> 7.0.0) + +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - ConsistencyManager SPEC CHECKSUMS: - ConsistencyManager: 10d92488107167a8d9df3cd93e529a15282ceaec + ConsistencyManager: f6209893e3974579109bf10b9df65fe1f024cc6f -PODFILE CHECKSUM: 23217410773c338b8571eb56301ac0b04b43d886 +PODFILE CHECKSUM: e6242e3b997e6035fc5876eba5df08c1c3215ae8 -COCOAPODS: 1.4.0 +COCOAPODS: 1.6.0.beta.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 78919d0..27d4c9b 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,171 +7,160 @@ objects = { /* Begin PBXBuildFile section */ - 001DCC828873428A98B99A0BC22CE1F2 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */; }; - 0C58787D7D27B7C77AFCE5D9E7907AF4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; }; - 1D1C8F94417AB6BC3998EACC64C39007 /* Pods-RocketDataTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FCFE89BA9F05DED6E65029D382EE890D /* Pods-RocketDataTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2616F72C653C085A30DD4BCDE48A75BC /* TypeErasedWeakHolders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */; }; - 263707EA21F73AFEB8A3CC633DB6997A /* WeakHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */; }; - 283A9AE0309CB9B25265B87DC9E6AD2B /* WeakBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */; }; - 2FF1D28805C55D445C47D34BBB668A3E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */; }; - 36AC1E4F6E829EFF7EED533BA42B54DC /* Array+Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37F300E88B2CA90D3A3D10A6870FB9C6 /* Array+Weak.swift */; }; - 391F3198E7E11104DD405EC50F5B293F /* Pods-RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 640EA154695DF3ED5D6FD672F1D4C133 /* Pods-RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B69F7A493CC6D9BA7AAE82C3AB4EF09 /* ModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF654149B647AF0EFBE4E06EB29AE85D /* ModelChange.swift */; }; - 3ECAC56FEBB145EFE4FE9C22AB3D8BB5 /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 76F4BD78A6CE5E42944AA52B2CCAF956 /* ConsistencyManager-dummy.m */; }; - 4479A3765D16BC2D340B5057405C9143 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B9D837D2271F96375DF74247A3B4E09F /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4B065B337B479561160E13B01EAEA0A1 /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */; }; - 631B06351A176767C9F4BFE43D20F9DF /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15CE41697344C2A35DFC834791C3786 /* ConsistencyManagerModel.swift */; }; - 7577D28FE99166790C3295B1D76CB27B /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05A0C2047B975238584455CCEB992E58 /* ConsistencyManagerListener.swift */; }; - 822307BE07734344679FA644970CF8CD /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = B05401DC4854691A4F1241428F9578FE /* BatchListener.swift */; }; - 825E2EC9D8B391C8787D9CFD444575BF /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */; }; - 9A0CD6C72C3C7D3CE1CE428C24690114 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9F2FE8BE50356D478F128EF00B1E04 /* ModelUpdates.swift */; }; - B71C08B6AADC997123138F3B1D2E614D /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4488732A640B0CA0563771E757B590F7 /* ConsistencyManagerDelegate.swift */; }; - B7BE190C9AF52186CA9132AD684CF205 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; }; - C4077D53936DFBC6E42745A1E9A70AC0 /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */; }; - D19F59FE7170377F2C74E93B2D99BFE2 /* ConsistencyManagerUpdatesListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F07F9958F8B878BAFFD46112074114F /* ConsistencyManagerUpdatesListener.swift */; }; - D76F64AC6718611B6D42CE69B17B2DB9 /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17F50305EFF1336458DB721E18C3AEC5 /* CollectionHelpers.swift */; }; - E11D211087E861CA3756E3F6C36C1F84 /* Pods-RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F06FAD2EA179899E7D880426B96477FD /* Pods-RocketData-dummy.m */; }; - E665318A7006E2C694EC9A58B2306E0E /* Pods-RocketDataTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9321986CE83DCE94805F366607BA7472 /* Pods-RocketDataTests-dummy.m */; }; - F93B8C96B745676D18D9FFADA3825155 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */; }; + 05B35533A0547DD0471C846BFFC1F043 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */; }; + 0C9ECF9FC34B5CF0C60B048166262686 /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15CE41697344C2A35DFC834791C3786 /* ConsistencyManagerModel.swift */; }; + 13F05FAE9BB53755AF0590E41709CCE9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; + 2267435A90F9EFDFAB5581BE0C8095F1 /* ModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF654149B647AF0EFBE4E06EB29AE85D /* ModelChange.swift */; }; + 23E63FF1C23124C71F1E7AEBC14D2EA4 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9F2FE8BE50356D478F128EF00B1E04 /* ModelUpdates.swift */; }; + 2A51D0DB50357B6C41D9CBB5F181CE30 /* TypeErasedWeakHolders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */; }; + 2EEA6279BB75E76C979252F1582EB6D4 /* Pods-RocketDataTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 21B114D36330832526A04433BC57CCB1 /* Pods-RocketDataTests-dummy.m */; }; + 43FD4DCA5BC75E8F291DF9A037539E1A /* Pods-RocketDataTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0055FC5683A3F67A0D310CC970024ADE /* Pods-RocketDataTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4E84117CE35C34AF1E0A1FA78304BC32 /* Pods-RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F20676343DA0DA79F24E237038825DA4 /* Pods-RocketData-dummy.m */; }; + 57CA270C9864F6DD8DC1AF27686DF986 /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D8E3ED8C82CF99668578943B06F779C3 /* ConsistencyManager-dummy.m */; }; + 5F0283586E9BF8797C69BD7E2A513CDB /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4488732A640B0CA0563771E757B590F7 /* ConsistencyManagerDelegate.swift */; }; + 845007C350B76A79DE42511F549A49FA /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */; }; + 939C808B5AAFBC5998B016BA55BB9F9E /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C51B93EFE53A618B6D99B67BCDA17F7B /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 96D0A024B7ECC4D89D4CFAC5ACEFD66D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; + 9B2E2BC14E97E86929C78B7C633CDC3A /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */; }; + 9ED6D433C2599ED87508A0197AFA3FCD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC2C02191C153C1554B35DEE8B2D09D4 /* UIKit.framework */; }; + A09D146346D2B04E9D9098969DB62480 /* Pods-RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C2A8093513B73581EC78019640BD7D5 /* Pods-RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A43FDF5FF4FB9B42BF7C0DBB872A54D1 /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */; }; + ADB130C4205457AC1A1FC3A2C7F42D7F /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17F50305EFF1336458DB721E18C3AEC5 /* CollectionHelpers.swift */; }; + B256EA38DA613681B2E7F174C2A22AAD /* WeakBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */; }; + B61EC74E4F5D08BB1A95BD9314402C1C /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05A0C2047B975238584455CCEB992E58 /* ConsistencyManagerListener.swift */; }; + C1B6BDF2CB6C1B45C96B56E63A12CFBD /* Array+Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37F300E88B2CA90D3A3D10A6870FB9C6 /* Array+Weak.swift */; }; + D148C9BA38D9C382597E69352C0CDC93 /* WeakHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */; }; + D73D26F3F15143620C69F6476875EAD5 /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = B05401DC4854691A4F1241428F9578FE /* BatchListener.swift */; }; + E33F594DEB8660468F7F57EB4B7CD16B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; + EB91FB625D549C02049A6459A15BE454 /* ConsistencyManagerUpdatesListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F07F9958F8B878BAFFD46112074114F /* ConsistencyManagerUpdatesListener.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 7BCAA72880A6EA07AFCC7B1A07168399 /* PBXContainerItemProxy */ = { + 8E088FF873447ED8DBE9248B0F596406 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = CD959F3131ECC7808D5179105D8A95E2; + remoteGlobalIDString = 2FD7AD31842596051CCB9958DFCEC67A; remoteInfo = ConsistencyManager; }; - B0AC03400DFBFBBE1BCAA238BD5EF07A /* PBXContainerItemProxy */ = { + 984FB88BCE156A742B6B4B03AD7FEB95 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = CD959F3131ECC7808D5179105D8A95E2; + remoteGlobalIDString = 2FD7AD31842596051CCB9958DFCEC67A; remoteInfo = ConsistencyManager; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 0055FC5683A3F67A0D310CC970024ADE /* Pods-RocketDataTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketDataTests-umbrella.h"; sourceTree = ""; }; + 01E6BFAD5F2A35A8016BE0150437B4E2 /* Pods-RocketDataTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.debug.xcconfig"; sourceTree = ""; }; 05A0C2047B975238584455CCEB992E58 /* ConsistencyManagerListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerListener.swift; sourceTree = ""; }; - 0DBC04CE87A7226C017D96509ADD8667 /* Pods-RocketData.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.release.xcconfig"; sourceTree = ""; }; + 06568BBF1399743EE1B19A890E0B84EE /* Pods-RocketDataTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketDataTests-acknowledgements.markdown"; sourceTree = ""; }; + 0C2A8093513B73581EC78019640BD7D5 /* Pods-RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketData-umbrella.h"; sourceTree = ""; }; + 129F97D6BF6342A050FA9187E581A26B /* Pods-RocketData.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.debug.xcconfig"; sourceTree = ""; }; 17F50305EFF1336458DB721E18C3AEC5 /* CollectionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionHelpers.swift; path = ConsistencyManager/Helpers/CollectionHelpers.swift; sourceTree = ""; }; - 20EB819382157D91824F47F5DB37E846 /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; + 197499414DC01353345D4FCC7B7F4C20 /* ConsistencyManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ConsistencyManager-Info.plist"; sourceTree = ""; }; + 21B114D36330832526A04433BC57CCB1 /* Pods-RocketDataTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketDataTests-dummy.m"; sourceTree = ""; }; 2F07F9958F8B878BAFFD46112074114F /* ConsistencyManagerUpdatesListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerUpdatesListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift; sourceTree = ""; }; 37F300E88B2CA90D3A3D10A6870FB9C6 /* Array+Weak.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Weak.swift"; path = "ConsistencyManager/DataStructures/Array+Weak.swift"; sourceTree = ""; }; - 418B2E5484F0C314317449CE6E9128CE /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 39B08B48CFE331CFB558F4952002FC73 /* Pods-RocketDataTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-acknowledgements.plist"; sourceTree = ""; }; 4488732A640B0CA0563771E757B590F7 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; - 45987E2D20C7D13FAC35225FA433BDAB /* Pods-RocketDataTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.release.xcconfig"; sourceTree = ""; }; - 51A08B6DC11755D612003FDC0969E421 /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ConsistencyManager.modulemap; sourceTree = ""; }; - 52D0EF913F46A935528A2910C167694D /* Pods-RocketData-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketData-acknowledgements.markdown"; sourceTree = ""; }; - 52F9BA55026D5DEC797CFCF3DE392B53 /* Pods-RocketDataTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-frameworks.sh"; sourceTree = ""; }; - 579B7BB1EC6D986A6CBAD2AADD7962F0 /* Pods-RocketDataTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-acknowledgements.plist"; sourceTree = ""; }; + 4C26296B08F0F009C7F5D210D821E36E /* Pods-RocketDataTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RocketDataTests.modulemap"; sourceTree = ""; }; + 59218D9136E2AB3165CC20DBC0C31850 /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; sourceTree = ""; }; - 640EA154695DF3ED5D6FD672F1D4C133 /* Pods-RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketData-umbrella.h"; sourceTree = ""; }; - 6D7E99C8CD3B24BAE717D423020748A3 /* Pods-RocketDataTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-resources.sh"; sourceTree = ""; }; - 76F4BD78A6CE5E42944AA52B2CCAF956 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TypeErasedWeakHolders.swift; path = ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift; sourceTree = ""; }; + 857F44A144AAC4157786145DA04E61B7 /* Pods-RocketDataTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.release.xcconfig"; sourceTree = ""; }; 85F646650D2CB8D60E0A9B610A5C3CDB /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ConsistencyManager.framework; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90F77EF7F396C0AE0B705BA254FD54B0 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9321986CE83DCE94805F366607BA7472 /* Pods-RocketDataTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketDataTests-dummy.m"; sourceTree = ""; }; + 8FC341751578F136D2BCDD25B75DD47D /* Pods-RocketData-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketData-Info.plist"; sourceTree = ""; }; + 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 94BF3A5610A4DDF5B6E1CC06709758FA /* Pods-RocketData.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.release.xcconfig"; sourceTree = ""; }; 9E9F2FE8BE50356D478F128EF00B1E04 /* ModelUpdates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelUpdates.swift; path = ConsistencyManager/DataStructures/ModelUpdates.swift; sourceTree = ""; }; 9ED23AF9DC693ED95F963C33D83DF07D /* Pods_RocketDataTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketDataTests.framework; path = "Pods-RocketDataTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 9ED2CC48213888D8E95A6DB28E20FAD6 /* Pods-RocketDataTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RocketDataTests.modulemap"; sourceTree = ""; }; - A438013FC01794F626CEA7D8E4974692 /* Pods-RocketData-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketData-acknowledgements.plist"; sourceTree = ""; }; - A53CBDA185D4B377A4439231D8AE8378 /* Pods-RocketDataTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketDataTests-acknowledgements.markdown"; sourceTree = ""; }; - AB7CE9A2A6EDDD705B3BAF99DD2BFBE5 /* Pods-RocketDataTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.debug.xcconfig"; sourceTree = ""; }; B05401DC4854691A4F1241428F9578FE /* BatchListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchListener.swift; path = ConsistencyManager/DataStructures/BatchListener.swift; sourceTree = ""; }; B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; - B39A3B1FB6AA29AA46E55445F50E5459 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B4486E390C3341A54D024676ADB7D077 /* Pods_RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketData.framework; path = "Pods-RocketData.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - B9D837D2271F96375DF74247A3B4E09F /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; + BC2C02191C153C1554B35DEE8B2D09D4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakHolder.swift; path = ConsistencyManager/DataStructures/WeakHolder.swift; sourceTree = ""; }; + BFD9A0C901E8D4CBEE41BA1B16D91CFE /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ConsistencyManager.modulemap; sourceTree = ""; }; + C4B6A167C9F790C6C7E6ED3EDF220597 /* Pods-RocketDataTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-Info.plist"; sourceTree = ""; }; + C51B93EFE53A618B6D99B67BCDA17F7B /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; + CE598E3A129387D64A06CECF2EE9243B /* Pods-RocketData-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketData-acknowledgements.markdown"; sourceTree = ""; }; D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakArray.swift; path = ConsistencyManager/DataStructures/WeakArray.swift; sourceTree = ""; }; - D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + D27B3EB74397010EDCFF02BD803317F3 /* Pods-RocketDataTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-frameworks.sh"; sourceTree = ""; }; + D8E3ED8C82CF99668578943B06F779C3 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; + DBC6C8602C75BB592E6447BC6A674D7B /* Pods-RocketData-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketData-acknowledgements.plist"; sourceTree = ""; }; E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManager.swift; path = ConsistencyManager/ConsistencyManager.swift; sourceTree = ""; }; - E2C96F80C45B4D86D749C289CCC8BC7B /* Pods-RocketData.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.debug.xcconfig"; sourceTree = ""; }; - E3A4FF53D462A8AC016807C7536413FB /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakBox.swift; path = ConsistencyManager/DataStructures/WeakBox.swift; sourceTree = ""; }; - F06FAD2EA179899E7D880426B96477FD /* Pods-RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketData-dummy.m"; sourceTree = ""; }; F15CE41697344C2A35DFC834791C3786 /* ConsistencyManagerModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerModel.swift; path = ConsistencyManager/Protocols/ConsistencyManagerModel.swift; sourceTree = ""; }; - F31930C9F4C5EC0B3584B3CFD32FBF6E /* Pods-RocketData-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketData-resources.sh"; sourceTree = ""; }; - F9AF8BCD15EE2CF2F67AFD1334B14E09 /* Pods-RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RocketData.modulemap"; sourceTree = ""; }; - FCFE89BA9F05DED6E65029D382EE890D /* Pods-RocketDataTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketDataTests-umbrella.h"; sourceTree = ""; }; + F20676343DA0DA79F24E237038825DA4 /* Pods-RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketData-dummy.m"; sourceTree = ""; }; + F5342A4A23494E7A2C166939C048CBE1 /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; + F5792B633BC8CE5C5EE9590B5068D459 /* Pods-RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RocketData.modulemap"; sourceTree = ""; }; FF654149B647AF0EFBE4E06EB29AE85D /* ModelChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelChange.swift; path = ConsistencyManager/DataStructures/ModelChange.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 093C5A43E698E7D8C78DD6B8ECC3A755 /* Frameworks */ = { + 39A3737CC8A74690CAE226C86F987C71 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0C58787D7D27B7C77AFCE5D9E7907AF4 /* Foundation.framework in Frameworks */, + 13F05FAE9BB53755AF0590E41709CCE9 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A6B7797C85794D7644B8D86897867FCD /* Frameworks */ = { + B87A7965465C16EC4E0A3C07C4BC4D6D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B7BE190C9AF52186CA9132AD684CF205 /* Foundation.framework in Frameworks */, + 96D0A024B7ECC4D89D4CFAC5ACEFD66D /* Foundation.framework in Frameworks */, + 9ED6D433C2599ED87508A0197AFA3FCD /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F4C89EB621DA3443C7CC196FA7783897 /* Frameworks */ = { + BF4740A20EA805D33801C6FD708F549C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F93B8C96B745676D18D9FFADA3825155 /* Foundation.framework in Frameworks */, - 2FF1D28805C55D445C47D34BBB668A3E /* UIKit.framework in Frameworks */, + E33F594DEB8660468F7F57EB4B7CD16B /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 238C853B1FADD6E1E003A8131E6D6A86 /* Pods-RocketData */ = { + 10DEDCB394BAA0C7FEDEBE330207B074 /* iOS */ = { isa = PBXGroup; children = ( - 418B2E5484F0C314317449CE6E9128CE /* Info.plist */, - F9AF8BCD15EE2CF2F67AFD1334B14E09 /* Pods-RocketData.modulemap */, - 52D0EF913F46A935528A2910C167694D /* Pods-RocketData-acknowledgements.markdown */, - A438013FC01794F626CEA7D8E4974692 /* Pods-RocketData-acknowledgements.plist */, - F06FAD2EA179899E7D880426B96477FD /* Pods-RocketData-dummy.m */, - F31930C9F4C5EC0B3584B3CFD32FBF6E /* Pods-RocketData-resources.sh */, - 640EA154695DF3ED5D6FD672F1D4C133 /* Pods-RocketData-umbrella.h */, - E2C96F80C45B4D86D749C289CCC8BC7B /* Pods-RocketData.debug.xcconfig */, - 0DBC04CE87A7226C017D96509ADD8667 /* Pods-RocketData.release.xcconfig */, + 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */, + BC2C02191C153C1554B35DEE8B2D09D4 /* UIKit.framework */, ); - name = "Pods-RocketData"; - path = "Target Support Files/Pods-RocketData"; - sourceTree = ""; - }; - 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { - isa = PBXGroup; - children = ( - 438B396F6B4147076630CAEFE34282C1 /* iOS */, - ); - name = Frameworks; + name = iOS; sourceTree = ""; }; - 438B396F6B4147076630CAEFE34282C1 /* iOS */ = { + 4286189E81E556AC82787B67D23C7B76 /* Pods-RocketDataTests */ = { isa = PBXGroup; children = ( - D88AAE1F92055A60CC2FC970D7D34634 /* Foundation.framework */, - B63C6A64CF66340668996F78DA6BB482 /* UIKit.framework */, + 4C26296B08F0F009C7F5D210D821E36E /* Pods-RocketDataTests.modulemap */, + 06568BBF1399743EE1B19A890E0B84EE /* Pods-RocketDataTests-acknowledgements.markdown */, + 39B08B48CFE331CFB558F4952002FC73 /* Pods-RocketDataTests-acknowledgements.plist */, + 21B114D36330832526A04433BC57CCB1 /* Pods-RocketDataTests-dummy.m */, + D27B3EB74397010EDCFF02BD803317F3 /* Pods-RocketDataTests-frameworks.sh */, + C4B6A167C9F790C6C7E6ED3EDF220597 /* Pods-RocketDataTests-Info.plist */, + 0055FC5683A3F67A0D310CC970024ADE /* Pods-RocketDataTests-umbrella.h */, + 01E6BFAD5F2A35A8016BE0150437B4E2 /* Pods-RocketDataTests.debug.xcconfig */, + 857F44A144AAC4157786145DA04E61B7 /* Pods-RocketDataTests.release.xcconfig */, ); - name = iOS; + name = "Pods-RocketDataTests"; + path = "Target Support Files/Pods-RocketDataTests"; sourceTree = ""; }; - 4C755ACC96D46765BA54509600A21819 /* Targets Support Files */ = { + 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { isa = PBXGroup; children = ( - 238C853B1FADD6E1E003A8131E6D6A86 /* Pods-RocketData */, - 97D5DBB7AFDFC8B62152FBBBDAE82429 /* Pods-RocketDataTests */, + 10DEDCB394BAA0C7FEDEBE330207B074 /* iOS */, ); - name = "Targets Support Files"; + name = Frameworks; sourceTree = ""; }; 76D721B535F72D6F714AFAB1A05514EA /* Pods */ = { @@ -182,18 +171,20 @@ name = Pods; sourceTree = ""; }; - 79425952A22F3ADFD6062569480027E3 /* Support Files */ = { + 7B62B345BCA21EF6F1741DC37C7EBEC7 /* Pods-RocketData */ = { isa = PBXGroup; children = ( - 51A08B6DC11755D612003FDC0969E421 /* ConsistencyManager.modulemap */, - E3A4FF53D462A8AC016807C7536413FB /* ConsistencyManager.xcconfig */, - 76F4BD78A6CE5E42944AA52B2CCAF956 /* ConsistencyManager-dummy.m */, - 20EB819382157D91824F47F5DB37E846 /* ConsistencyManager-prefix.pch */, - B9D837D2271F96375DF74247A3B4E09F /* ConsistencyManager-umbrella.h */, - 90F77EF7F396C0AE0B705BA254FD54B0 /* Info.plist */, + F5792B633BC8CE5C5EE9590B5068D459 /* Pods-RocketData.modulemap */, + CE598E3A129387D64A06CECF2EE9243B /* Pods-RocketData-acknowledgements.markdown */, + DBC6C8602C75BB592E6447BC6A674D7B /* Pods-RocketData-acknowledgements.plist */, + F20676343DA0DA79F24E237038825DA4 /* Pods-RocketData-dummy.m */, + 8FC341751578F136D2BCDD25B75DD47D /* Pods-RocketData-Info.plist */, + 0C2A8093513B73581EC78019640BD7D5 /* Pods-RocketData-umbrella.h */, + 129F97D6BF6342A050FA9187E581A26B /* Pods-RocketData.debug.xcconfig */, + 94BF3A5610A4DDF5B6E1CC06709758FA /* Pods-RocketData.release.xcconfig */, ); - name = "Support Files"; - path = "../Target Support Files/ConsistencyManager"; + name = "Pods-RocketData"; + path = "Target Support Files/Pods-RocketData"; sourceTree = ""; }; 7DB346D0F39D3F0E887471402A8071AB = { @@ -203,7 +194,7 @@ 433CD3331B6C3787F473C941B61FC68F /* Frameworks */, 76D721B535F72D6F714AFAB1A05514EA /* Pods */, A7FBE01DFB35645CFAE846405EBBF44C /* Products */, - 4C755ACC96D46765BA54509600A21819 /* Targets Support Files */, + 94A674C002A793512AF337EF53A556AD /* Targets Support Files */, ); sourceTree = ""; }; @@ -226,28 +217,19 @@ D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */, EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */, BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */, - 79425952A22F3ADFD6062569480027E3 /* Support Files */, + FC1DEA1999FC97C5ECCC86A8FF71423E /* Support Files */, ); name = ConsistencyManager; path = ConsistencyManager; sourceTree = ""; }; - 97D5DBB7AFDFC8B62152FBBBDAE82429 /* Pods-RocketDataTests */ = { + 94A674C002A793512AF337EF53A556AD /* Targets Support Files */ = { isa = PBXGroup; children = ( - B39A3B1FB6AA29AA46E55445F50E5459 /* Info.plist */, - 9ED2CC48213888D8E95A6DB28E20FAD6 /* Pods-RocketDataTests.modulemap */, - A53CBDA185D4B377A4439231D8AE8378 /* Pods-RocketDataTests-acknowledgements.markdown */, - 579B7BB1EC6D986A6CBAD2AADD7962F0 /* Pods-RocketDataTests-acknowledgements.plist */, - 9321986CE83DCE94805F366607BA7472 /* Pods-RocketDataTests-dummy.m */, - 52F9BA55026D5DEC797CFCF3DE392B53 /* Pods-RocketDataTests-frameworks.sh */, - 6D7E99C8CD3B24BAE717D423020748A3 /* Pods-RocketDataTests-resources.sh */, - FCFE89BA9F05DED6E65029D382EE890D /* Pods-RocketDataTests-umbrella.h */, - AB7CE9A2A6EDDD705B3BAF99DD2BFBE5 /* Pods-RocketDataTests.debug.xcconfig */, - 45987E2D20C7D13FAC35225FA433BDAB /* Pods-RocketDataTests.release.xcconfig */, + 7B62B345BCA21EF6F1741DC37C7EBEC7 /* Pods-RocketData */, + 4286189E81E556AC82787B67D23C7B76 /* Pods-RocketDataTests */, ); - name = "Pods-RocketDataTests"; - path = "Target Support Files/Pods-RocketDataTests"; + name = "Targets Support Files"; sourceTree = ""; }; A7FBE01DFB35645CFAE846405EBBF44C /* Products */ = { @@ -260,87 +242,104 @@ name = Products; sourceTree = ""; }; + FC1DEA1999FC97C5ECCC86A8FF71423E /* Support Files */ = { + isa = PBXGroup; + children = ( + BFD9A0C901E8D4CBEE41BA1B16D91CFE /* ConsistencyManager.modulemap */, + 59218D9136E2AB3165CC20DBC0C31850 /* ConsistencyManager.xcconfig */, + D8E3ED8C82CF99668578943B06F779C3 /* ConsistencyManager-dummy.m */, + 197499414DC01353345D4FCC7B7F4C20 /* ConsistencyManager-Info.plist */, + F5342A4A23494E7A2C166939C048CBE1 /* ConsistencyManager-prefix.pch */, + C51B93EFE53A618B6D99B67BCDA17F7B /* ConsistencyManager-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/ConsistencyManager"; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 251EED542950AD3534D3C8DB411E104A /* Headers */ = { + 17E6EB5C9C7598BEBCC8C5FC3B03F0F6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4479A3765D16BC2D340B5057405C9143 /* ConsistencyManager-umbrella.h in Headers */, + A09D146346D2B04E9D9098969DB62480 /* Pods-RocketData-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - DCEE71D2156BE2A22E3D166DA9D133F3 /* Headers */ = { + 8010CDEBD35D08A151DEBB043D8FD7B5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 391F3198E7E11104DD405EC50F5B293F /* Pods-RocketData-umbrella.h in Headers */, + 43FD4DCA5BC75E8F291DF9A037539E1A /* Pods-RocketDataTests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - F8D3177848AA0139E2898B221566EBC9 /* Headers */ = { + A090FDD01AE6AF1502D55FE2341125D0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1D1C8F94417AB6BC3998EACC64C39007 /* Pods-RocketDataTests-umbrella.h in Headers */, + 939C808B5AAFBC5998B016BA55BB9F9E /* ConsistencyManager-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 39C6FF70BB46CC2C60AA45D245142401 /* Pods-RocketData */ = { + 2FD7AD31842596051CCB9958DFCEC67A /* ConsistencyManager */ = { isa = PBXNativeTarget; - buildConfigurationList = 435914460B92FF01EAA710E813152A3F /* Build configuration list for PBXNativeTarget "Pods-RocketData" */; + buildConfigurationList = 4D08CE93465F824C5C0BF8274EF90D9E /* Build configuration list for PBXNativeTarget "ConsistencyManager" */; buildPhases = ( - 70A47E0169C6B4BD0FEC55074AAB2794 /* Sources */, - 093C5A43E698E7D8C78DD6B8ECC3A755 /* Frameworks */, - DCEE71D2156BE2A22E3D166DA9D133F3 /* Headers */, + A090FDD01AE6AF1502D55FE2341125D0 /* Headers */, + 3EE25B59750D854EA891DBBB710B84D7 /* Sources */, + B87A7965465C16EC4E0A3C07C4BC4D6D /* Frameworks */, + 6A4CFFFFE016ED4D88CB516973E09096 /* Resources */, ); buildRules = ( ); dependencies = ( - CE6381E52994DCF6A323C7039ACDEF76 /* PBXTargetDependency */, ); - name = "Pods-RocketData"; - productName = "Pods-RocketData"; - productReference = B4486E390C3341A54D024676ADB7D077 /* Pods_RocketData.framework */; + name = ConsistencyManager; + productName = ConsistencyManager; + productReference = 85F646650D2CB8D60E0A9B610A5C3CDB /* ConsistencyManager.framework */; productType = "com.apple.product-type.framework"; }; - 87F9683EFDF83DDAC86926FBA4B669CE /* Pods-RocketDataTests */ = { + 57A35791766425C77885F0E029F15585 /* Pods-RocketData */ = { isa = PBXNativeTarget; - buildConfigurationList = A3B67548C5FDA3FA1AA7C2A8C53037FF /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */; + buildConfigurationList = AC569550E7E33D16C6936BF16C9671D5 /* Build configuration list for PBXNativeTarget "Pods-RocketData" */; buildPhases = ( - 3601AF1CCC4E6347E83CE2DDF0E1D7CF /* Sources */, - A6B7797C85794D7644B8D86897867FCD /* Frameworks */, - F8D3177848AA0139E2898B221566EBC9 /* Headers */, + 17E6EB5C9C7598BEBCC8C5FC3B03F0F6 /* Headers */, + 27EC284B368AD5617D0B877376799C5A /* Sources */, + 39A3737CC8A74690CAE226C86F987C71 /* Frameworks */, + A01E85E32C74883A6BEB8142480BD29B /* Resources */, ); buildRules = ( ); dependencies = ( - 5A28733EA8708D092E27CC43AFA7D976 /* PBXTargetDependency */, + 6ECD14F0523B86489EE6570C52F3F4FF /* PBXTargetDependency */, ); - name = "Pods-RocketDataTests"; - productName = "Pods-RocketDataTests"; - productReference = 9ED23AF9DC693ED95F963C33D83DF07D /* Pods_RocketDataTests.framework */; + name = "Pods-RocketData"; + productName = "Pods-RocketData"; + productReference = B4486E390C3341A54D024676ADB7D077 /* Pods_RocketData.framework */; productType = "com.apple.product-type.framework"; }; - CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */ = { + 84FB67F4465E0B938B946463CA87C257 /* Pods-RocketDataTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 80400AB863598523A87EB65199C8BBFD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */; + buildConfigurationList = BA5C34F5074487978C60F395D7A37FD0 /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */; buildPhases = ( - 24AA018C28F97A8058C45EEB3A292825 /* Sources */, - F4C89EB621DA3443C7CC196FA7783897 /* Frameworks */, - 251EED542950AD3534D3C8DB411E104A /* Headers */, + 8010CDEBD35D08A151DEBB043D8FD7B5 /* Headers */, + 1E89F44917216EFAB8EA75F4565EC44E /* Sources */, + BF4740A20EA805D33801C6FD708F549C /* Frameworks */, + 343BA70A6CDFAB1FB9843DC7E9B33018 /* Resources */, ); buildRules = ( ); dependencies = ( + ED7312B0F15E37BA4A96F5FE23471194 /* PBXTargetDependency */, ); - name = ConsistencyManager; - productName = ConsistencyManager; - productReference = 85F646650D2CB8D60E0A9B610A5C3CDB /* ConsistencyManager.framework */; + name = "Pods-RocketDataTests"; + productName = "Pods-RocketDataTests"; + productReference = 9ED23AF9DC693ED95F963C33D83DF07D /* Pods_RocketDataTests.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -364,76 +363,135 @@ projectDirPath = ""; projectRoot = ""; targets = ( - CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */, - 39C6FF70BB46CC2C60AA45D245142401 /* Pods-RocketData */, - 87F9683EFDF83DDAC86926FBA4B669CE /* Pods-RocketDataTests */, + 2FD7AD31842596051CCB9958DFCEC67A /* ConsistencyManager */, + 57A35791766425C77885F0E029F15585 /* Pods-RocketData */, + 84FB67F4465E0B938B946463CA87C257 /* Pods-RocketDataTests */, ); }; /* End PBXProject section */ +/* Begin PBXResourcesBuildPhase section */ + 343BA70A6CDFAB1FB9843DC7E9B33018 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6A4CFFFFE016ED4D88CB516973E09096 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A01E85E32C74883A6BEB8142480BD29B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ - 24AA018C28F97A8058C45EEB3A292825 /* Sources */ = { + 1E89F44917216EFAB8EA75F4565EC44E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 36AC1E4F6E829EFF7EED533BA42B54DC /* Array+Weak.swift in Sources */, - 822307BE07734344679FA644970CF8CD /* BatchListener.swift in Sources */, - 4B065B337B479561160E13B01EAEA0A1 /* BatchUpdateModel.swift in Sources */, - D76F64AC6718611B6D42CE69B17B2DB9 /* CollectionHelpers.swift in Sources */, - 3ECAC56FEBB145EFE4FE9C22AB3D8BB5 /* ConsistencyManager-dummy.m in Sources */, - C4077D53936DFBC6E42745A1E9A70AC0 /* ConsistencyManager.swift in Sources */, - B71C08B6AADC997123138F3B1D2E614D /* ConsistencyManagerDelegate.swift in Sources */, - 7577D28FE99166790C3295B1D76CB27B /* ConsistencyManagerListener.swift in Sources */, - 631B06351A176767C9F4BFE43D20F9DF /* ConsistencyManagerModel.swift in Sources */, - D19F59FE7170377F2C74E93B2D99BFE2 /* ConsistencyManagerUpdatesListener.swift in Sources */, - 001DCC828873428A98B99A0BC22CE1F2 /* ErrorManager.swift in Sources */, - 3B69F7A493CC6D9BA7AAE82C3AB4EF09 /* ModelChange.swift in Sources */, - 9A0CD6C72C3C7D3CE1CE428C24690114 /* ModelUpdates.swift in Sources */, - 2616F72C653C085A30DD4BCDE48A75BC /* TypeErasedWeakHolders.swift in Sources */, - 825E2EC9D8B391C8787D9CFD444575BF /* WeakArray.swift in Sources */, - 283A9AE0309CB9B25265B87DC9E6AD2B /* WeakBox.swift in Sources */, - 263707EA21F73AFEB8A3CC633DB6997A /* WeakHolder.swift in Sources */, + 2EEA6279BB75E76C979252F1582EB6D4 /* Pods-RocketDataTests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3601AF1CCC4E6347E83CE2DDF0E1D7CF /* Sources */ = { + 27EC284B368AD5617D0B877376799C5A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E665318A7006E2C694EC9A58B2306E0E /* Pods-RocketDataTests-dummy.m in Sources */, + 4E84117CE35C34AF1E0A1FA78304BC32 /* Pods-RocketData-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 70A47E0169C6B4BD0FEC55074AAB2794 /* Sources */ = { + 3EE25B59750D854EA891DBBB710B84D7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E11D211087E861CA3756E3F6C36C1F84 /* Pods-RocketData-dummy.m in Sources */, + C1B6BDF2CB6C1B45C96B56E63A12CFBD /* Array+Weak.swift in Sources */, + D73D26F3F15143620C69F6476875EAD5 /* BatchListener.swift in Sources */, + 9B2E2BC14E97E86929C78B7C633CDC3A /* BatchUpdateModel.swift in Sources */, + ADB130C4205457AC1A1FC3A2C7F42D7F /* CollectionHelpers.swift in Sources */, + 57CA270C9864F6DD8DC1AF27686DF986 /* ConsistencyManager-dummy.m in Sources */, + 845007C350B76A79DE42511F549A49FA /* ConsistencyManager.swift in Sources */, + 5F0283586E9BF8797C69BD7E2A513CDB /* ConsistencyManagerDelegate.swift in Sources */, + B61EC74E4F5D08BB1A95BD9314402C1C /* ConsistencyManagerListener.swift in Sources */, + 0C9ECF9FC34B5CF0C60B048166262686 /* ConsistencyManagerModel.swift in Sources */, + EB91FB625D549C02049A6459A15BE454 /* ConsistencyManagerUpdatesListener.swift in Sources */, + 05B35533A0547DD0471C846BFFC1F043 /* ErrorManager.swift in Sources */, + 2267435A90F9EFDFAB5581BE0C8095F1 /* ModelChange.swift in Sources */, + 23E63FF1C23124C71F1E7AEBC14D2EA4 /* ModelUpdates.swift in Sources */, + 2A51D0DB50357B6C41D9CBB5F181CE30 /* TypeErasedWeakHolders.swift in Sources */, + A43FDF5FF4FB9B42BF7C0DBB872A54D1 /* WeakArray.swift in Sources */, + B256EA38DA613681B2E7F174C2A22AAD /* WeakBox.swift in Sources */, + D148C9BA38D9C382597E69352C0CDC93 /* WeakHolder.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 5A28733EA8708D092E27CC43AFA7D976 /* PBXTargetDependency */ = { + 6ECD14F0523B86489EE6570C52F3F4FF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ConsistencyManager; - target = CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */; - targetProxy = 7BCAA72880A6EA07AFCC7B1A07168399 /* PBXContainerItemProxy */; + target = 2FD7AD31842596051CCB9958DFCEC67A /* ConsistencyManager */; + targetProxy = 984FB88BCE156A742B6B4B03AD7FEB95 /* PBXContainerItemProxy */; }; - CE6381E52994DCF6A323C7039ACDEF76 /* PBXTargetDependency */ = { + ED7312B0F15E37BA4A96F5FE23471194 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ConsistencyManager; - target = CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */; - targetProxy = B0AC03400DFBFBBE1BCAA238BD5EF07A /* PBXContainerItemProxy */; + target = 2FD7AD31842596051CCB9958DFCEC67A /* ConsistencyManager */; + targetProxy = 8E088FF873447ED8DBE9248B0F596406 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 170640A925F8C537A5A04B49F3EC0FB8 /* Release */ = { + 0467B3B6E357B36B0E536342C4D4AE1B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 59218D9136E2AB3165CC20DBC0C31850 /* ConsistencyManager.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ConsistencyManager/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"; + PRODUCT_MODULE_NAME = ConsistencyManager; + PRODUCT_NAME = ConsistencyManager; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 26924CDDA9332FA1C2720D9ADFA0D107 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 45987E2D20C7D13FAC35225FA433BDAB /* Pods-RocketDataTests.release.xcconfig */; + baseConfigurationReference = 857F44A144AAC4157786145DA04E61B7 /* Pods-RocketDataTests.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -443,7 +501,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-RocketDataTests/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-RocketDataTests/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"; @@ -453,10 +511,11 @@ OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_RocketDataTests; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -464,9 +523,9 @@ }; name = Release; }; - 20CCA969089CBC42024E2E50A9DE0BF3 /* Debug */ = { + 35E88DE762242B29DB05CA35B776D71B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E2C96F80C45B4D86D749C289CCC8BC7B /* Pods-RocketData.debug.xcconfig */; + baseConfigurationReference = 59218D9136E2AB3165CC20DBC0C31850 /* ConsistencyManager.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -477,31 +536,30 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-RocketData/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ConsistencyManager/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"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-RocketData/Pods-RocketData.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_RocketData; + MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; + PRODUCT_MODULE_NAME = ConsistencyManager; + PRODUCT_NAME = ConsistencyManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 43A3A8A14F5DDC70AFE66DC3C82A95A9 /* Release */ = { + 6981C9B9A254395C1497970E2167C98B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0DBC04CE87A7226C017D96509ADD8667 /* Pods-RocketData.release.xcconfig */; + baseConfigurationReference = 94BF3A5610A4DDF5B6E1CC06709758FA /* Pods-RocketData.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -511,7 +569,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-RocketData/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-RocketData/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"; @@ -521,10 +579,11 @@ OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_RocketData; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -532,10 +591,11 @@ }; name = Release; }; - 691AC778963B2CE58112181683F4B418 /* Debug */ = { + 6BC2F2E23FE01133C47A04A7A9B3B44D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AB7CE9A2A6EDDD705B3BAF99DD2BFBE5 /* Pods-RocketDataTests.debug.xcconfig */; + baseConfigurationReference = 01E6BFAD5F2A35A8016BE0150437B4E2 /* Pods-RocketDataTests.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -545,7 +605,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-RocketDataTests/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-RocketDataTests/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"; @@ -555,7 +615,7 @@ OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = Pods_RocketDataTests; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; @@ -566,10 +626,11 @@ }; name = Debug; }; - A783EA57EC2CD3782C0E7AF55F812CB9 /* Debug */ = { + 7F9395E20D0E7558218060799D4E64B0 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E3A4FF53D462A8AC016807C7536413FB /* ConsistencyManager.xcconfig */; + baseConfigurationReference = 129F97D6BF6342A050FA9187E581A26B /* Pods-RocketData.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -579,25 +640,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ConsistencyManager/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-RocketData/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"; - MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; - PRODUCT_NAME = ConsistencyManager; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-RocketData/Pods-RocketData.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - C3E37FB098AE76440E29106ADBF00CEB /* Debug */ = { + 96434B6C8FF320C976A10DAD7174A4BB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -629,18 +693,16 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", + "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -650,49 +712,15 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SYMROOT = "${SRCROOT}/../build"; }; - name = Debug; - }; - C3FC67C922AAEE495E94E5AB8B2E7C7E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E3A4FF53D462A8AC016807C7536413FB /* ConsistencyManager.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - 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"; - PRODUCT_NAME = ConsistencyManager; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; name = Release; }; - DA03565BE765DB55C6448FB363A44481 /* Release */ = { + D11C82AF2204B41B80412B8DC9C1D652 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -724,15 +752,19 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; + DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -742,13 +774,15 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SYMROOT = "${SRCROOT}/../build"; }; - name = Release; + name = Debug; }; /* End XCBuildConfiguration section */ @@ -756,35 +790,35 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - C3E37FB098AE76440E29106ADBF00CEB /* Debug */, - DA03565BE765DB55C6448FB363A44481 /* Release */, + D11C82AF2204B41B80412B8DC9C1D652 /* Debug */, + 96434B6C8FF320C976A10DAD7174A4BB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 435914460B92FF01EAA710E813152A3F /* Build configuration list for PBXNativeTarget "Pods-RocketData" */ = { + 4D08CE93465F824C5C0BF8274EF90D9E /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 20CCA969089CBC42024E2E50A9DE0BF3 /* Debug */, - 43A3A8A14F5DDC70AFE66DC3C82A95A9 /* Release */, + 35E88DE762242B29DB05CA35B776D71B /* Debug */, + 0467B3B6E357B36B0E536342C4D4AE1B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 80400AB863598523A87EB65199C8BBFD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { + AC569550E7E33D16C6936BF16C9671D5 /* Build configuration list for PBXNativeTarget "Pods-RocketData" */ = { isa = XCConfigurationList; buildConfigurations = ( - A783EA57EC2CD3782C0E7AF55F812CB9 /* Debug */, - C3FC67C922AAEE495E94E5AB8B2E7C7E /* Release */, + 7F9395E20D0E7558218060799D4E64B0 /* Debug */, + 6981C9B9A254395C1497970E2167C98B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A3B67548C5FDA3FA1AA7C2A8C53037FF /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */ = { + BA5C34F5074487978C60F395D7A37FD0 /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 691AC778963B2CE58112181683F4B418 /* Debug */, - 170640A925F8C537A5A04B49F3EC0FB8 /* Release */, + 6BC2F2E23FE01133C47A04A7A9B3B44D /* Debug */, + 26924CDDA9332FA1C2720D9ADFA0D107 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist new file mode 100644 index 0000000..df97cf8 --- /dev/null +++ b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 7.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig index 8baf7c0..36aa2bb 100644 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig +++ b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig @@ -1,8 +1,7 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" -OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-Info.plist b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + 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..7c82be4 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist @@ -1,242 +1,5 @@ - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2016 LinkedIn Corp. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - 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 License, Version 2.0 - Title - ConsistencyManager - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - https://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - + 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 87a1f9f..fc73510 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig @@ -2,8 +2,8 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Consisten GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 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 87a1f9f..fc73510 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig @@ -2,8 +2,8 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Consisten GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-Info.plist b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + 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..7c82be4 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist @@ -1,242 +1,5 @@ - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2016 LinkedIn Corp. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - 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 License, Version 2.0 - Title - ConsistencyManager - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - https://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - + diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh index 1a53cc6..eecae94 100755 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh @@ -1,9 +1,18 @@ #!/bin/sh set -e +set -u +set -o pipefail + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" # Used as a return value for each invocation of `strip_invalid_archs` function. @@ -38,8 +47,13 @@ install_framework() local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device @@ -92,10 +106,10 @@ install_dsym() { # 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 + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then code_sign_cmd="$code_sign_cmd &" 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 fedd0ca..e2ea9e8 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig @@ -3,8 +3,8 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Consisten GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 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 fedd0ca..e2ea9e8 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig @@ -3,8 +3,8 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Consisten GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/RocketData.xcodeproj/project.pbxproj b/RocketData.xcodeproj/project.pbxproj index c9836e5..9d09d4b 100644 --- a/RocketData.xcodeproj/project.pbxproj +++ b/RocketData.xcodeproj/project.pbxproj @@ -283,7 +283,6 @@ 612242AD1C7B85D40017B0C4 /* Frameworks */, 612242AE1C7B85D40017B0C4 /* Headers */, 612242AF1C7B85D40017B0C4 /* Resources */, - 89AFBA691259AA065FB83006 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -303,7 +302,6 @@ 612242B81C7B85D40017B0C4 /* Frameworks */, 612242B91C7B85D40017B0C4 /* Resources */, F23AEA2B7986D85FBAEE25DF /* [CP] Embed Pods Frameworks */, - 847D25B4EF98CC9562130A23 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -371,36 +369,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 847D25B4EF98CC9562130A23 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 89AFBA691259AA065FB83006 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; BAD9CFA1BEB4289CD8554F62 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -443,7 +411,7 @@ files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh", "${BUILT_PRODUCTS_DIR}/ConsistencyManager/ConsistencyManager.framework", ); name = "[CP] Embed Pods Frameworks"; @@ -452,7 +420,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ diff --git a/SampleApp/Podfile.lock b/SampleApp/Podfile.lock index 050f053..a166c1f 100644 --- a/SampleApp/Podfile.lock +++ b/SampleApp/Podfile.lock @@ -1,8 +1,8 @@ PODS: - - ConsistencyManager (6.0.0) + - ConsistencyManager (7.0.0) - PINCache (2.3) - - RocketData (6.0.1): - - ConsistencyManager (~> 6.0.0) + - RocketData (7.0.0): + - ConsistencyManager (~> 7.0.0) DEPENDENCIES: - PINCache @@ -18,10 +18,10 @@ EXTERNAL SOURCES: :path: ".." SPEC CHECKSUMS: - ConsistencyManager: 10d92488107167a8d9df3cd93e529a15282ceaec + ConsistencyManager: f6209893e3974579109bf10b9df65fe1f024cc6f PINCache: ce36ed282031b92fc7733ffe831f474ff80fddc2 - RocketData: 2663345b70a12a0dcfb0752fb438c799866d450f + RocketData: 75eb1312f5cbe20c5f2ff3ee2445dca90afc0f25 PODFILE CHECKSUM: cb6653d292a93b194174111d0be6bb93b45e1b23 -COCOAPODS: 1.5.3 +COCOAPODS: 1.6.0.beta.1 diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift index c3fcc2a..5830866 100644 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift @@ -119,7 +119,7 @@ open class ConsistencyManager { // MARK: - Initializers /// Singleton accessor for the consistency manager. - open static let sharedInstance = ConsistencyManager() + public static let sharedInstance = ConsistencyManager() /** Designated initializer. @@ -836,7 +836,7 @@ open class ConsistencyManager { super.init() #if os(iOS) // On OSX, we don't need this since there are no memory warnings. - NotificationCenter.default.addObserver(self, selector: #selector(UIApplicationDelegate.applicationDidReceiveMemoryWarning(_:)), name: NSNotification.Name.UIApplicationDidReceiveMemoryWarning, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(UIApplicationDelegate.applicationDidReceiveMemoryWarning(_:)), name: UIApplication.didReceiveMemoryWarningNotification, object: nil) #endif } diff --git a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift index 2bacf3a..a535cf5 100644 --- a/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift +++ b/SampleApp/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift @@ -27,7 +27,7 @@ import Foundation */ open class BatchListener: ConsistencyManagerListener { - open let listeners: [ConsistencyManagerListener] + public let listeners: [ConsistencyManagerListener] /// The delegate that is called after one or more listeners in the `listeners` array are updated open weak var delegate: BatchListenerDelegate? diff --git a/SampleApp/Pods/ConsistencyManager/README.md b/SampleApp/Pods/ConsistencyManager/README.md index 8f51a5e..b7eda12 100644 --- a/SampleApp/Pods/ConsistencyManager/README.md +++ b/SampleApp/Pods/ConsistencyManager/README.md @@ -1,8 +1,8 @@ # Overview -[![Build Status](https://travis-ci.org/plivesey/ConsistencyManager-iOS.svg?branch=master)](https://travis-ci.org/linkedin/ConsistencyManager-iOS) -[![codecov](https://codecov.io/gh/plivesey/ConsistencyManager-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/linkedin/ConsistencyManager-iOS) -[![GitHub release](https://img.shields.io/github/release/plivesey/ConsistencyManager-iOS.svg?maxAge=86400)](https://github.com/linkedin/ConsistencyManager-iOS/releases) +[![Build Status](https://travis-ci.org/plivesey/ConsistencyManager-iOS.svg?branch=master)](https://travis-ci.org/plivesey/ConsistencyManager-iOS) +[![codecov](https://codecov.io/gh/plivesey/ConsistencyManager-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/plivesey/ConsistencyManager-iOS) +[![GitHub release](https://img.shields.io/github/release/plivesey/ConsistencyManager-iOS.svg?maxAge=86400)](https://github.com/plivesey/ConsistencyManager-iOS/releases) ![Platforms](https://img.shields.io/badge/platforms-iOS%20%7C%20tvOS%20%7C%20macOS-blue.svg) This library provides a way of keeping immutable models consistent. First, listeners listen to an immutable model. Whenever this model (or any child model) is updated, the Consistency Manager will generate a new model and notify its listeners. diff --git a/SampleApp/Pods/Local Podspecs/RocketData.podspec.json b/SampleApp/Pods/Local Podspecs/RocketData.podspec.json index 14de5c9..e96348d 100644 --- a/SampleApp/Pods/Local Podspecs/RocketData.podspec.json +++ b/SampleApp/Pods/Local Podspecs/RocketData.podspec.json @@ -1,6 +1,6 @@ { "name": "RocketData", - "version": "6.0.1", + "version": "7.0.0", "license": { "type": "Apache License, Version 2.0" }, @@ -9,7 +9,7 @@ "summary": "A non-blocking CoreData replacement which uses immutable models.", "source": { "git": "https://github.com/plivesey/RocketData.git", - "tag": "6.0.1" + "tag": "7.0.0" }, "source_files": "RocketData/**/*.swift", "platforms": { @@ -18,7 +18,7 @@ "frameworks": "Foundation", "dependencies": { "ConsistencyManager": [ - "~> 6.0.0" + "~> 7.0.0" ] } } diff --git a/SampleApp/Pods/Manifest.lock b/SampleApp/Pods/Manifest.lock index 050f053..a166c1f 100644 --- a/SampleApp/Pods/Manifest.lock +++ b/SampleApp/Pods/Manifest.lock @@ -1,8 +1,8 @@ PODS: - - ConsistencyManager (6.0.0) + - ConsistencyManager (7.0.0) - PINCache (2.3) - - RocketData (6.0.1): - - ConsistencyManager (~> 6.0.0) + - RocketData (7.0.0): + - ConsistencyManager (~> 7.0.0) DEPENDENCIES: - PINCache @@ -18,10 +18,10 @@ EXTERNAL SOURCES: :path: ".." SPEC CHECKSUMS: - ConsistencyManager: 10d92488107167a8d9df3cd93e529a15282ceaec + ConsistencyManager: f6209893e3974579109bf10b9df65fe1f024cc6f PINCache: ce36ed282031b92fc7733ffe831f474ff80fddc2 - RocketData: 2663345b70a12a0dcfb0752fb438c799866d450f + RocketData: 75eb1312f5cbe20c5f2ff3ee2445dca90afc0f25 PODFILE CHECKSUM: cb6653d292a93b194174111d0be6bb93b45e1b23 -COCOAPODS: 1.5.3 +COCOAPODS: 1.6.0.beta.1 diff --git a/SampleApp/Pods/Pods.xcodeproj/project.pbxproj b/SampleApp/Pods/Pods.xcodeproj/project.pbxproj index 6b41b98..44134cf 100644 --- a/SampleApp/Pods/Pods.xcodeproj/project.pbxproj +++ b/SampleApp/Pods/Pods.xcodeproj/project.pbxproj @@ -7,230 +7,229 @@ objects = { /* Begin PBXBuildFile section */ - 001DCC828873428A98B99A0BC22CE1F2 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7C84F8FE00F8693DF4DDD6013DD0B5C /* ErrorManager.swift */; }; - 03C13E8EF242C959B5203B3CDF7DFD53 /* CacheDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5489A921310DF466CF85D8833A65D0A8 /* CacheDelegate.swift */; }; - 0BFE56DC2EDC8B1037451D0AE0C0A92F /* Pods-SampleApp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E34C2187030136F6DB77752E5F4911 /* Pods-SampleApp-dummy.m */; }; - 2616F72C653C085A30DD4BCDE48A75BC /* TypeErasedWeakHolders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0033A662D6B7345E44F888A9736D1AE6 /* TypeErasedWeakHolders.swift */; }; - 263707EA21F73AFEB8A3CC633DB6997A /* WeakHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 733B9C1E910C94400F04F1F685C49C19 /* WeakHolder.swift */; }; - 27E2ACAB5553AF46488DDAAF0B8537D2 /* PINCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A60392FC3899980B67CD5ADABE3B73D5 /* PINCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 283A9AE0309CB9B25265B87DC9E6AD2B /* WeakBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8550AC39285335C0A5F724B97B2B69F4 /* WeakBox.swift */; }; - 2F341F5146023710BD347AEB3E9E40CB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DDD76805BAA9A0B459C3304AC44AC79 /* UIKit.framework */; }; - 344D168B7F4F11306C702333CBADCD8D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */; }; - 36AC1E4F6E829EFF7EED533BA42B54DC /* Array+Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9501E69B03FC3FB8F1E054CFDEDFBC24 /* Array+Weak.swift */; }; - 3B69F7A493CC6D9BA7AAE82C3AB4EF09 /* ModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 292D121928E7D89D1F4098258FDECE2A /* ModelChange.swift */; }; - 3ECAC56FEBB145EFE4FE9C22AB3D8BB5 /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B19F0C6F6A3D9B6C43534142D1CC226B /* ConsistencyManager-dummy.m */; }; - 41244A50E29EAE3F0AAA7A41C3659AB5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */; }; - 4258E8714B4290FD60EBAA55BCCE42E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */; }; - 4479A3765D16BC2D340B5057405C9143 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1313DE66A3785B7BBA205244397F41F9 /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 461FBE8B2B0822FAC78BDB61FA568044 /* CollectionChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = D445078350992F7CFCFEAD3AFA77895F /* CollectionChange.swift */; }; - 4B065B337B479561160E13B01EAEA0A1 /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B25DE55BF762317600372F34CB51263 /* BatchUpdateModel.swift */; }; - 4D8A1FB7701C95E1B3CDCE125FA16463 /* PINDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FC24ED114BB46404756B7BDBB0C306D /* PINDiskCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 4E1C1B888CA1C3AF1299FB177B9AFA52 /* PINDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C862771F3A6A0C704362204BF714063 /* PINDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 552C54E8B87986D31C0733ED2F766043 /* SharedCollectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F33A648C0DA5195760B9C7E360FD6C /* SharedCollectionManager.swift */; }; - 631B06351A176767C9F4BFE43D20F9DF /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE6F1213FB02BA5DFAC290351C88F /* ConsistencyManagerModel.swift */; }; - 68A966DC9FE75F46B517A0A01458F0DD /* PINCache-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F42BF1E618F362FA4F1A29E01D43CC51 /* PINCache-dummy.m */; }; - 7577D28FE99166790C3295B1D76CB27B /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB130AC0264A6AA35B4FC8D838CD6584 /* ConsistencyManagerListener.swift */; }; - 7D00332C0E554E00DCFAC03EDCCCA5FC /* Nullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 15CD9C4BF96AB280478EC0BFFC811DCA /* Nullability.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 822307BE07734344679FA644970CF8CD /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E252B14D461FAC83AC5FB05B5C56FB7 /* BatchListener.swift */; }; - 825E2EC9D8B391C8787D9CFD444575BF /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22105AF15720755009B3A5DA4F6D7F07 /* WeakArray.swift */; }; - 82A3580BC75BF9DBC758DD60A4FC7EEC /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FACA43E67C5A9A73E880F0D07ABA1EE /* Logger.swift */; }; - 835A5B07EC488F10E4F139334882D8FF /* RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F965A8EEFCC269A926AA2CFAFB39BCE7 /* RocketData-dummy.m */; }; - 839428B9193A80D3CD2A236BA0F36E19 /* ParsingHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 695A477312ABD35395C93FA57791512F /* ParsingHelpers.swift */; }; - 97379C494F6B1B55557C23006061AACE /* BatchDataProviderListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DE415DA8E1BB6CB557AE351514C6CA8 /* BatchDataProviderListener.swift */; }; - 9A0CD6C72C3C7D3CE1CE428C24690114 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14460E333A1F091A1CDFAA63EF051D2C /* ModelUpdates.swift */; }; - A15B4BD94D1228657D7A49E33CE0877C /* WeakSharedCollectionArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC73ADB215D0464E4A58CD2028E74554 /* WeakSharedCollectionArray.swift */; }; - A4276999F7266A6C44E2CA706D24340F /* PINCache-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8091A2132DBBEEA453DD24ED28BA0872 /* PINCache-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A47FE0397CC14EF044F2131F170619EF /* ConsistencyContextWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C14191638533C1D31C835840DE99233 /* ConsistencyContextWrapper.swift */; }; - B00EC20A95367E3634CC70121385F419 /* PINCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 74E474A70F1D1317A942C09CF1AF87A4 /* PINCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B71C08B6AADC997123138F3B1D2E614D /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0F580B8DAAB408CD914D45F3FAF0C92 /* ConsistencyManagerDelegate.swift */; }; - B76ED9642CE2DA1D0C8A5A5467A0D82E /* ChangeTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66F5B5A9C68931A0882AB572A4FD655B /* ChangeTime.swift */; }; - B775AAE0A3D8D5287AA9C0AAF0A6219F /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F8CA378484B42E0CF4F444A4DA1E275 /* Model.swift */; }; - BC1D5B931D1BF52B67992F8AFA9FF099 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23B437B2331291F94425FD11A5ED2FC6 /* Errors.swift */; }; - C16B596869C3C9D73D9FC57D97BFD5DA /* CollectionDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9095B6655763153D63D23DDB872ABEBF /* CollectionDataProvider.swift */; }; - C4077D53936DFBC6E42745A1E9A70AC0 /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 320E72A3488CBAB19A62C30DE137F25D /* ConsistencyManager.swift */; }; - CDD4C556EA3F331E6DDA45B6B683F68D /* Pods-SampleApp-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 43E0836AB7F78D7F2563BA2715E694C8 /* Pods-SampleApp-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D15F7F93047B54CDC5A9AEB85AFCD5B6 /* PINCacheObjectSubscripting.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B4423CD6B4DD332ADA0F40052EF64A4 /* PINCacheObjectSubscripting.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D19F59FE7170377F2C74E93B2D99BFE2 /* ConsistencyManagerUpdatesListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA68BF8089F010B1EDA8ACF43F27B1AC /* ConsistencyManagerUpdatesListener.swift */; }; - D2E7CCC6FA04A436D5BCE04E5D639093 /* PINMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 95A918B2ADF80A146100A75403D6666F /* PINMemoryCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D4AB193A949BDB9210C7A3F60D035693 /* PINMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BDC7DC5E3EBEE2B02E0DA1299668EBA5 /* PINMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D7478D2C64DE55D95C734C1FA789D562 /* DataModelManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ABFDF7627234F2215D390E0F44F4D3A /* DataModelManager.swift */; }; - D76F64AC6718611B6D42CE69B17B2DB9 /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BFD4B7F1F388E7110C23DD2BBEC252 /* CollectionHelpers.swift */; }; - E2563B0F0411A2EF3B06D52E50266581 /* DataHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9B41ED2BABCD66474FC65B3DDC0C41F /* DataHolder.swift */; }; - E357CB7BDBC61274F850B5D8E0183C79 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */; }; - FA06D33C566A0EDE94B1FC295465C5E9 /* DataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 165CABA1494A8265D9BE601DD6C51887 /* DataProvider.swift */; }; - FB3C4D6291C393F0DBA06AFA53C28F2E /* ConsistencyManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D49C9E86A88F4A4E6F5F6B112E0A8035 /* ConsistencyManager.framework */; }; - FD744C29B5D44CB24577829D164C76C9 /* RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 342074D70E6F1B7308166F8FF244AD05 /* RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 036F0F8595B4D2A060ADC254C22E950B /* PINDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FC24ED114BB46404756B7BDBB0C306D /* PINDiskCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 05B35533A0547DD0471C846BFFC1F043 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7C84F8FE00F8693DF4DDD6013DD0B5C /* ErrorManager.swift */; }; + 0C210B2F94502D40C5AABB1DEDFBE6FD /* PINDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C862771F3A6A0C704362204BF714063 /* PINDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0C9ECF9FC34B5CF0C60B048166262686 /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51FE6F1213FB02BA5DFAC290351C88F /* ConsistencyManagerModel.swift */; }; + 11A1897735FCEDA2B86C6589E2473127 /* ChangeTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66F5B5A9C68931A0882AB572A4FD655B /* ChangeTime.swift */; }; + 1EB380FFE0FE3A916667D146262FDD49 /* RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E821797A510B38815A8DF318B21443EA /* RocketData-dummy.m */; }; + 2267435A90F9EFDFAB5581BE0C8095F1 /* ModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 292D121928E7D89D1F4098258FDECE2A /* ModelChange.swift */; }; + 23E63FF1C23124C71F1E7AEBC14D2EA4 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14460E333A1F091A1CDFAA63EF051D2C /* ModelUpdates.swift */; }; + 28E1864931E2D0E301CA7EE487268CA1 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23B437B2331291F94425FD11A5ED2FC6 /* Errors.swift */; }; + 2A51D0DB50357B6C41D9CBB5F181CE30 /* TypeErasedWeakHolders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0033A662D6B7345E44F888A9736D1AE6 /* TypeErasedWeakHolders.swift */; }; + 316A474FC858755724A3CC2B06105A71 /* CacheDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5489A921310DF466CF85D8833A65D0A8 /* CacheDelegate.swift */; }; + 346687984CF2DAE1DA2D2E88B80CE075 /* PINMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 95A918B2ADF80A146100A75403D6666F /* PINMemoryCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 4532FFDDB874E57B9A4A9E1D9E02ACFB /* ParsingHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 695A477312ABD35395C93FA57791512F /* ParsingHelpers.swift */; }; + 45F4A61A1B4FD66A4A273A168250686A /* RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BE3A49193014CDB129A5B1E02DBCD4C /* RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 55E87BEDCAED42BF24C3E1C4D81E1A87 /* BatchDataProviderListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DE415DA8E1BB6CB557AE351514C6CA8 /* BatchDataProviderListener.swift */; }; + 5759E8D382F13FF1A42D31B780AD042A /* WeakSharedCollectionArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC73ADB215D0464E4A58CD2028E74554 /* WeakSharedCollectionArray.swift */; }; + 57CA270C9864F6DD8DC1AF27686DF986 /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DEA53DC16974D127547208774EB4FD83 /* ConsistencyManager-dummy.m */; }; + 5F0283586E9BF8797C69BD7E2A513CDB /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0F580B8DAAB408CD914D45F3FAF0C92 /* ConsistencyManagerDelegate.swift */; }; + 611CD04FE6AE7E17012B22D47AC62AF2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */; }; + 6847A44B81CB4F57DB03E637A15CACEC /* CollectionChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = D445078350992F7CFCFEAD3AFA77895F /* CollectionChange.swift */; }; + 73320F83F7DC5F355CA6A32CBCFFDEF7 /* PINCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 74E474A70F1D1317A942C09CF1AF87A4 /* PINCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 73D1882905FEB1687C04A063A497E69B /* DataHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9B41ED2BABCD66474FC65B3DDC0C41F /* DataHolder.swift */; }; + 845007C350B76A79DE42511F549A49FA /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 320E72A3488CBAB19A62C30DE137F25D /* ConsistencyManager.swift */; }; + 857EFD7E698313B1A062FAB146D301BF /* PINCacheObjectSubscripting.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B4423CD6B4DD332ADA0F40052EF64A4 /* PINCacheObjectSubscripting.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8C4A1584E9C86ABA4EB5B190224BC124 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */; }; + 8EE56782DD740D9135E6DE4C41F43CC0 /* Nullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 15CD9C4BF96AB280478EC0BFFC811DCA /* Nullability.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8F92B1C8BB8589BCA4699973E4FFC7C6 /* Pods-SampleApp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 571735D0881890D68D554E759634A301 /* Pods-SampleApp-dummy.m */; }; + 939C808B5AAFBC5998B016BA55BB9F9E /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F668F064D942296E0300A78D017C628F /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 96D0A024B7ECC4D89D4CFAC5ACEFD66D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */; }; + 9745D8706E854D42CF46DA409CF6A49A /* DataModelManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ABFDF7627234F2215D390E0F44F4D3A /* DataModelManager.swift */; }; + 9B2E2BC14E97E86929C78B7C633CDC3A /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B25DE55BF762317600372F34CB51263 /* BatchUpdateModel.swift */; }; + 9ED6D433C2599ED87508A0197AFA3FCD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DDD76805BAA9A0B459C3304AC44AC79 /* UIKit.framework */; }; + A43FDF5FF4FB9B42BF7C0DBB872A54D1 /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22105AF15720755009B3A5DA4F6D7F07 /* WeakArray.swift */; }; + ADB130C4205457AC1A1FC3A2C7F42D7F /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3BFD4B7F1F388E7110C23DD2BBEC252 /* CollectionHelpers.swift */; }; + AE4CC6E65A367604D871C0BE28A021A9 /* CollectionDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9095B6655763153D63D23DDB872ABEBF /* CollectionDataProvider.swift */; }; + B060CAA3E91A22A43A10D2D143415E8A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */; }; + B256EA38DA613681B2E7F174C2A22AAD /* WeakBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8550AC39285335C0A5F724B97B2B69F4 /* WeakBox.swift */; }; + B61EC74E4F5D08BB1A95BD9314402C1C /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB130AC0264A6AA35B4FC8D838CD6584 /* ConsistencyManagerListener.swift */; }; + B6E1C080EA723C072C8ED83F9FA2142D /* PINCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A60392FC3899980B67CD5ADABE3B73D5 /* PINCache.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + BE18B1C898AE3712FC2154EC32BD4E87 /* ConsistencyManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D49C9E86A88F4A4E6F5F6B112E0A8035 /* ConsistencyManager.framework */; }; + C1B6BDF2CB6C1B45C96B56E63A12CFBD /* Array+Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9501E69B03FC3FB8F1E054CFDEDFBC24 /* Array+Weak.swift */; }; + D148C9BA38D9C382597E69352C0CDC93 /* WeakHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 733B9C1E910C94400F04F1F685C49C19 /* WeakHolder.swift */; }; + D284575879C89033BA4FC0D24A2AE998 /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F8CA378484B42E0CF4F444A4DA1E275 /* Model.swift */; }; + D73D26F3F15143620C69F6476875EAD5 /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E252B14D461FAC83AC5FB05B5C56FB7 /* BatchListener.swift */; }; + E0CE186BE77C17A0DC8C067DEA7C11AA /* Pods-SampleApp-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BC123CE7CA9BC63182309739226FB1FA /* Pods-SampleApp-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E5CD418739D09B426E4E57FC2768251D /* SharedCollectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F33A648C0DA5195760B9C7E360FD6C /* SharedCollectionManager.swift */; }; + E6489C3E61C7558952634DEA805B31A7 /* PINCache-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 02E4FEBA7B67310F5E527756A8A7C7E0 /* PINCache-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E6A751C838AF5799F546636C3CB637F9 /* PINCache-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A41687EC2ABDF1FD79CA6972C1AC579A /* PINCache-dummy.m */; }; + E6A9A426FFA0CE2597B4940852FB57D6 /* DataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 165CABA1494A8265D9BE601DD6C51887 /* DataProvider.swift */; }; + E8E04F4DCDD4E958F9988C3DD78299F7 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FACA43E67C5A9A73E880F0D07ABA1EE /* Logger.swift */; }; + EB91FB625D549C02049A6459A15BE454 /* ConsistencyManagerUpdatesListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA68BF8089F010B1EDA8ACF43F27B1AC /* ConsistencyManagerUpdatesListener.swift */; }; + EDFC7CB43AE66304BAE292CCB231FA6D /* ConsistencyContextWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C14191638533C1D31C835840DE99233 /* ConsistencyContextWrapper.swift */; }; + F20BCAFE2B1659F974FBDF14EC29D91C /* PINMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BDC7DC5E3EBEE2B02E0DA1299668EBA5 /* PINMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 10BB3F279A800629DB409D570B9EE7BB /* PBXContainerItemProxy */ = { + 027268F947EA1140355234F5652AB401 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = CD959F3131ECC7808D5179105D8A95E2; - remoteInfo = ConsistencyManager; + remoteGlobalIDString = 4CF9289805DD79BBABDC8ECA48BD3779; + remoteInfo = RocketData; }; - 13E284B044C0228CF3135DD561DDC00C /* PBXContainerItemProxy */ = { + 9630E5C99701E05DA3D78DF3C091E69C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 6A4878A4A87B118BAF0877A103373708; + remoteGlobalIDString = 82C1DBEF9EA6D5044021644373A6CC5D; remoteInfo = PINCache; }; - 49040E4CE974895E01CEDCAB7441C8E1 /* PBXContainerItemProxy */ = { + 9F3AFD50E47D93C75B6FD2C7D9962263 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = CC3A97A4DA7FC340C7B679B3494EA513; - remoteInfo = RocketData; + remoteGlobalIDString = 2FD7AD31842596051CCB9958DFCEC67A; + remoteInfo = ConsistencyManager; }; - D1296219415AA22AC088888393ABE126 /* PBXContainerItemProxy */ = { + DC46F7BC197859BC24F173EA010C437C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = CD959F3131ECC7808D5179105D8A95E2; + remoteGlobalIDString = 2FD7AD31842596051CCB9958DFCEC67A; remoteInfo = ConsistencyManager; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 0033A662D6B7345E44F888A9736D1AE6 /* TypeErasedWeakHolders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TypeErasedWeakHolders.swift; path = ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift; sourceTree = ""; }; - 0529F4E000E36E9A7D30A382859DD600 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + 02E4FEBA7B67310F5E527756A8A7C7E0 /* PINCache-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINCache-umbrella.h"; sourceTree = ""; }; + 0529F4E000E36E9A7D30A382859DD600 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 06A9EBED11C77579B84CA2C1EA00D87B /* Pods-SampleApp-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SampleApp-acknowledgements.plist"; sourceTree = ""; }; 08CCC3AE3772EB1055D7721CB517AA80 /* architecture.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = architecture.png; path = docs/images/architecture.png; sourceTree = ""; }; - 0906760393974A4778043FDFC2DF5043 /* 140_FAQ.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 140_FAQ.rst; path = docs/pages/140_FAQ.rst; sourceTree = ""; }; - 0A5AABFCEECC95DBA6FAEEE8BBA5C354 /* 050_models.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 050_models.rst; path = docs/pages/050_models.rst; sourceTree = ""; }; + 0906760393974A4778043FDFC2DF5043 /* 140_FAQ.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 140_FAQ.rst; path = docs/pages/140_FAQ.rst; sourceTree = ""; }; + 09DC25D977E35B12BAAFD515FB26A182 /* Pods-SampleApp.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-SampleApp.modulemap"; sourceTree = ""; }; + 0A5AABFCEECC95DBA6FAEEE8BBA5C354 /* 050_models.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 050_models.rst; path = docs/pages/050_models.rst; sourceTree = ""; }; 0B25DE55BF762317600372F34CB51263 /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; sourceTree = ""; }; - 106F5AA8B24AC58F9705F3FA7459B833 /* RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = RocketData.framework; path = RocketData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1313DE66A3785B7BBA205244397F41F9 /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; + 106F5AA8B24AC58F9705F3FA7459B833 /* RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RocketData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 140840FE5FC59CAEFF37E966985CEEB9 /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; 14460E333A1F091A1CDFAA63EF051D2C /* ModelUpdates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelUpdates.swift; path = ConsistencyManager/DataStructures/ModelUpdates.swift; sourceTree = ""; }; 15CD9C4BF96AB280478EC0BFFC811DCA /* Nullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nullability.h; path = PINCache/Nullability.h; sourceTree = ""; }; 165CABA1494A8265D9BE601DD6C51887 /* DataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataProvider.swift; path = RocketData/DataProvider.swift; sourceTree = ""; }; - 1AE00CB6A92ACA8953C69921D5620B9A /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 1C14191638533C1D31C835840DE99233 /* ConsistencyContextWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyContextWrapper.swift; path = RocketData/ConsistencyContextWrapper.swift; sourceTree = ""; }; + 1CF928FE1026A30B80B4145B2DAC8971 /* RocketData-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RocketData-prefix.pch"; sourceTree = ""; }; 1FACA43E67C5A9A73E880F0D07ABA1EE /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Logger.swift; path = RocketData/Logger.swift; sourceTree = ""; }; 1FE81EDDCE3F5652E60D6FEF3B37F913 /* update_theme.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; name = update_theme.sh; path = docs/bin/update_theme.sh; sourceTree = ""; }; 22105AF15720755009B3A5DA4F6D7F07 /* WeakArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakArray.swift; path = ConsistencyManager/DataStructures/WeakArray.swift; sourceTree = ""; }; 23B437B2331291F94425FD11A5ED2FC6 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = RocketData/Errors.swift; sourceTree = ""; }; - 254B60E7ED0981F8277E681A5C641FD9 /* Pods-SampleApp-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SampleApp-acknowledgements.markdown"; sourceTree = ""; }; 292D121928E7D89D1F4098258FDECE2A /* ModelChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelChange.swift; path = ConsistencyManager/DataStructures/ModelChange.swift; sourceTree = ""; }; + 30060F143A274E0AB6553758719B06DE /* RocketData.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RocketData.xcconfig; sourceTree = ""; }; 320E72A3488CBAB19A62C30DE137F25D /* ConsistencyManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManager.swift; path = ConsistencyManager/ConsistencyManager.swift; sourceTree = ""; }; - 342074D70E6F1B7308166F8FF244AD05 /* RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RocketData-umbrella.h"; sourceTree = ""; }; - 356D650062B0363D58C9164077D00662 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 3AD8D9812F4B36B5F8FD42B22E44B42D /* RocketData.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = RocketData.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 3D5B7AB63CD737E789F1E2288BBA6D01 /* 030_dataProviders.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 030_dataProviders.rst; path = docs/pages/030_dataProviders.rst; sourceTree = ""; }; + 3AD8D9812F4B36B5F8FD42B22E44B42D /* RocketData.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; path = RocketData.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 3D5B7AB63CD737E789F1E2288BBA6D01 /* 030_dataProviders.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 030_dataProviders.rst; path = docs/pages/030_dataProviders.rst; sourceTree = ""; }; 3F8CA378484B42E0CF4F444A4DA1E275 /* Model.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Model.swift; path = RocketData/Model.swift; sourceTree = ""; }; - 43E0836AB7F78D7F2563BA2715E694C8 /* Pods-SampleApp-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SampleApp-umbrella.h"; sourceTree = ""; }; - 4661B3F1717111BADD79722F3340199B /* 090_otherFeatures.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 090_otherFeatures.rst; path = docs/pages/090_otherFeatures.rst; sourceTree = ""; }; - 490B90C7CC2786512B8C62A66654FDFC /* 020_requirements.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 020_requirements.rst; path = docs/pages/020_requirements.rst; sourceTree = ""; }; - 49E88278043A13D7FDE2AF83963F7D0E /* PINCache.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PINCache.xcconfig; sourceTree = ""; }; + 4661B3F1717111BADD79722F3340199B /* 090_otherFeatures.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 090_otherFeatures.rst; path = docs/pages/090_otherFeatures.rst; sourceTree = ""; }; + 490B90C7CC2786512B8C62A66654FDFC /* 020_requirements.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 020_requirements.rst; path = docs/pages/020_requirements.rst; sourceTree = ""; }; 4B4423CD6B4DD332ADA0F40052EF64A4 /* PINCacheObjectSubscripting.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCacheObjectSubscripting.h; path = PINCache/PINCacheObjectSubscripting.h; sourceTree = ""; }; - 4CFE8F144720A26836322E40D34A76F7 /* 130_immutability.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 130_immutability.rst; path = docs/pages/130_immutability.rst; sourceTree = ""; }; - 4E13095E31AF5BB4A45792ED916FF23A /* Makefile */ = {isa = PBXFileReference; includeInIndex = 1; name = Makefile; path = docs/Makefile; sourceTree = ""; }; - 4E5C7F09F824A746F94C60F0E1F8B0E8 /* 095_projections.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 095_projections.rst; path = docs/pages/095_projections.rst; sourceTree = ""; }; - 4FFA9C7C1FB7653BA1B5C4CE05C4C0E6 /* PINCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PINCache.framework; path = PINCache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 527436AF74968873771D4B7F3CC47B06 /* 110_threading.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 110_threading.rst; path = docs/pages/110_threading.rst; sourceTree = ""; }; + 4C29B39AE586A70B59B2E91CEBCBFEBB /* Pods-SampleApp-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SampleApp-Info.plist"; sourceTree = ""; }; + 4CFE8F144720A26836322E40D34A76F7 /* 130_immutability.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 130_immutability.rst; path = docs/pages/130_immutability.rst; sourceTree = ""; }; + 4D937984FBA623D7F4A7B48C55282343 /* Pods-SampleApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp.debug.xcconfig"; sourceTree = ""; }; + 4E13095E31AF5BB4A45792ED916FF23A /* Makefile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.make; name = Makefile; path = docs/Makefile; sourceTree = ""; }; + 4E5C7F09F824A746F94C60F0E1F8B0E8 /* 095_projections.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 095_projections.rst; path = docs/pages/095_projections.rst; sourceTree = ""; }; + 4FFA9C7C1FB7653BA1B5C4CE05C4C0E6 /* PINCache.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PINCache.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 527436AF74968873771D4B7F3CC47B06 /* 110_threading.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 110_threading.rst; path = docs/pages/110_threading.rst; sourceTree = ""; }; 5489A921310DF466CF85D8833A65D0A8 /* CacheDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheDelegate.swift; path = RocketData/CacheDelegate.swift; sourceTree = ""; }; - 5DFB96594C56528FAF1036E784230A23 /* 015_architecture.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 015_architecture.rst; path = docs/pages/015_architecture.rst; sourceTree = ""; }; + 571735D0881890D68D554E759634A301 /* Pods-SampleApp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SampleApp-dummy.m"; sourceTree = ""; }; + 5DFB96594C56528FAF1036E784230A23 /* 015_architecture.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 015_architecture.rst; path = docs/pages/015_architecture.rst; sourceTree = ""; }; 5E252B14D461FAC83AC5FB05B5C56FB7 /* BatchListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchListener.swift; path = ConsistencyManager/DataStructures/BatchListener.swift; sourceTree = ""; }; - 5F5B411ED246412BE0ACFFF324E392C0 /* index.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = index.rst; path = docs/index.rst; sourceTree = ""; }; - 61C4E339881D068224E2EF678A4E7622 /* RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RocketData.modulemap; sourceTree = ""; }; + 5E33BE31A81C1C6A899734CA7660E123 /* Pods-SampleApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp.release.xcconfig"; sourceTree = ""; }; + 5F5B411ED246412BE0ACFFF324E392C0 /* index.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = index.rst; path = docs/index.rst; sourceTree = ""; }; 66F5B5A9C68931A0882AB572A4FD655B /* ChangeTime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChangeTime.swift; path = RocketData/ChangeTime.swift; sourceTree = ""; }; + 690BE5B9A690111C6D8694B183D50743 /* Pods-SampleApp-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SampleApp-frameworks.sh"; sourceTree = ""; }; 695A477312ABD35395C93FA57791512F /* ParsingHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParsingHelpers.swift; path = RocketData/ParsingHelpers.swift; sourceTree = ""; }; - 69D18085E1B44B0223ABB27D77E82351 /* 080_updatingModels.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 080_updatingModels.rst; path = docs/pages/080_updatingModels.rst; sourceTree = ""; }; + 69D18085E1B44B0223ABB27D77E82351 /* 080_updatingModels.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 080_updatingModels.rst; path = docs/pages/080_updatingModels.rst; sourceTree = ""; }; 6C862771F3A6A0C704362204BF714063 /* PINDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINDiskCache.h; path = PINCache/PINDiskCache.h; sourceTree = ""; }; 719F35AD435A83AACB1FA3BBB4857174 /* exampleModelsAfterChange.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = exampleModelsAfterChange.png; path = docs/images/exampleModelsAfterChange.png; sourceTree = ""; }; 733B9C1E910C94400F04F1F685C49C19 /* WeakHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakHolder.swift; path = ConsistencyManager/DataStructures/WeakHolder.swift; sourceTree = ""; }; - 74DE64890C60B56276093828BBDE9CF3 /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; 74E474A70F1D1317A942C09CF1AF87A4 /* PINCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINCache.h; path = PINCache/PINCache.h; sourceTree = ""; }; - 75A2EBADDDD74148BDC5B35E089A7C15 /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ConsistencyManager.modulemap; sourceTree = ""; }; - 7E5C017F130265CA45FE05D66C7A1B65 /* 120_testing.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 120_testing.rst; path = docs/pages/120_testing.rst; sourceTree = ""; }; - 7F9C1B52153A73A7DC8D38CA889C05DE /* Pods-SampleApp-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SampleApp-resources.sh"; sourceTree = ""; }; - 8091A2132DBBEEA453DD24ED28BA0872 /* PINCache-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINCache-umbrella.h"; sourceTree = ""; }; + 7E5C017F130265CA45FE05D66C7A1B65 /* 120_testing.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 120_testing.rst; path = docs/pages/120_testing.rst; sourceTree = ""; }; + 81FC1216D6269424A2B00008542AE14E /* RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RocketData.modulemap; sourceTree = ""; }; 8550AC39285335C0A5F724B97B2B69F4 /* WeakBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakBox.swift; path = ConsistencyManager/DataStructures/WeakBox.swift; sourceTree = ""; }; + 8BE3A49193014CDB129A5B1E02DBCD4C /* RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RocketData-umbrella.h"; sourceTree = ""; }; 8F043E69E2FE266738809045309E6300 /* exampleModels.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = exampleModels.png; path = docs/images/exampleModels.png; sourceTree = ""; }; 9095B6655763153D63D23DDB872ABEBF /* CollectionDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionDataProvider.swift; path = RocketData/CollectionDataProvider.swift; sourceTree = ""; }; 91DE01E34C83AB62A4E8135348A2E71B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 91E34C2187030136F6DB77752E5F4911 /* Pods-SampleApp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SampleApp-dummy.m"; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9501E69B03FC3FB8F1E054CFDEDFBC24 /* Array+Weak.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Weak.swift"; path = "ConsistencyManager/DataStructures/Array+Weak.swift"; sourceTree = ""; }; 95A918B2ADF80A146100A75403D6666F /* PINMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINMemoryCache.m; path = PINCache/PINMemoryCache.m; sourceTree = ""; }; - 99EC2D3F6E0AA3D387164D1E15C93A31 /* Pods_SampleApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_SampleApp.framework; path = "Pods-SampleApp.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 964D099EA73E05125FBCBC55A3F2E920 /* RocketData-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RocketData-Info.plist"; sourceTree = ""; }; + 98C1905F2176E875EA6D2E7C92F151DE /* ConsistencyManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ConsistencyManager-Info.plist"; sourceTree = ""; }; + 99EC2D3F6E0AA3D387164D1E15C93A31 /* Pods_SampleApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SampleApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A5B6E4EDA28C884131C724BAABBFBA7 /* PINCache.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PINCache.xcconfig; sourceTree = ""; }; 9ABFDF7627234F2215D390E0F44F4D3A /* DataModelManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataModelManager.swift; path = RocketData/DataModelManager.swift; sourceTree = ""; }; 9DDD76805BAA9A0B459C3304AC44AC79 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 9DE415DA8E1BB6CB557AE351514C6CA8 /* BatchDataProviderListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchDataProviderListener.swift; path = RocketData/BatchDataProviderListener.swift; sourceTree = ""; }; - 9F138238A2B36EAD88014DADD999B56B /* PINCache.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PINCache.modulemap; sourceTree = ""; }; 9FC24ED114BB46404756B7BDBB0C306D /* PINDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINDiskCache.m; path = PINCache/PINDiskCache.m; sourceTree = ""; }; - A265B35D0756A32DC93A9DECC10F17AA /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A41687EC2ABDF1FD79CA6972C1AC579A /* PINCache-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PINCache-dummy.m"; sourceTree = ""; }; A60392FC3899980B67CD5ADABE3B73D5 /* PINCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PINCache.m; path = PINCache/PINCache.m; sourceTree = ""; }; - AAFB37822E6649790503021BA1973116 /* 100_coreData.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 100_coreData.rst; path = docs/pages/100_coreData.rst; sourceTree = ""; }; + AAFB37822E6649790503021BA1973116 /* 100_coreData.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 100_coreData.rst; path = docs/pages/100_coreData.rst; sourceTree = ""; }; AB130AC0264A6AA35B4FC8D838CD6584 /* ConsistencyManagerListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerListener.swift; sourceTree = ""; }; - AE0C4D71174D2426CC932D25E179C198 /* Pods-SampleApp.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-SampleApp.modulemap"; sourceTree = ""; }; - B19F0C6F6A3D9B6C43534142D1CC226B /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; - B351F5BEFF43CB74BA2595BF03F330D7 /* 010_rocketData.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 010_rocketData.rst; path = docs/pages/010_rocketData.rst; sourceTree = ""; }; + B19AB4AE4758CE53180749C598A1A37C /* PINCache-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "PINCache-Info.plist"; sourceTree = ""; }; + B351F5BEFF43CB74BA2595BF03F330D7 /* 010_rocketData.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 010_rocketData.rst; path = docs/pages/010_rocketData.rst; sourceTree = ""; }; B3BFD4B7F1F388E7110C23DD2BBEC252 /* CollectionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionHelpers.swift; path = ConsistencyManager/Helpers/CollectionHelpers.swift; sourceTree = ""; }; - B51305017E5B04AC4CCBB4D3A5B00E87 /* 150_futurePlans.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 150_futurePlans.rst; path = docs/pages/150_futurePlans.rst; sourceTree = ""; }; + B51305017E5B04AC4CCBB4D3A5B00E87 /* 150_futurePlans.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 150_futurePlans.rst; path = docs/pages/150_futurePlans.rst; sourceTree = ""; }; B51FE6F1213FB02BA5DFAC290351C88F /* ConsistencyManagerModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerModel.swift; path = ConsistencyManager/Protocols/ConsistencyManagerModel.swift; sourceTree = ""; }; - B9B43DF05AFE196C8F30EB9D8D47DBCC /* Pods-SampleApp-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SampleApp-frameworks.sh"; sourceTree = ""; }; BA68BF8089F010B1EDA8ACF43F27B1AC /* ConsistencyManagerUpdatesListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerUpdatesListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift; sourceTree = ""; }; + BC123CE7CA9BC63182309739226FB1FA /* Pods-SampleApp-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SampleApp-umbrella.h"; sourceTree = ""; }; BDC7DC5E3EBEE2B02E0DA1299668EBA5 /* PINMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PINMemoryCache.h; path = PINCache/PINMemoryCache.h; sourceTree = ""; }; C9B41ED2BABCD66474FC65B3DDC0C41F /* DataHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataHolder.swift; path = RocketData/DataHolder.swift; sourceTree = ""; }; - CAAC90C777B1C8060FFA317199DB4287 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - CBA97F5884387AA14AB8EFA066145363 /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ConsistencyManager.framework; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CBA97F5884387AA14AB8EFA066145363 /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CC73ADB215D0464E4A58CD2028E74554 /* WeakSharedCollectionArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakSharedCollectionArray.swift; path = RocketData/WeakSharedCollectionArray.swift; sourceTree = ""; }; D0F33A648C0DA5195760B9C7E360FD6C /* SharedCollectionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SharedCollectionManager.swift; path = RocketData/SharedCollectionManager.swift; sourceTree = ""; }; - D1404030293EBE81C91BF765DC35C142 /* conf.py */ = {isa = PBXFileReference; includeInIndex = 1; name = conf.py; path = docs/conf.py; sourceTree = ""; }; - D2627EBD50DEBE4726510CDC7B3F66CB /* 060_cacheDelegate.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 060_cacheDelegate.rst; path = docs/pages/060_cacheDelegate.rst; sourceTree = ""; }; + D1404030293EBE81C91BF765DC35C142 /* conf.py */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.python; name = conf.py; path = docs/conf.py; sourceTree = ""; }; + D148EC02D762F5E3AA43709CEAEF02A0 /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; + D2627EBD50DEBE4726510CDC7B3F66CB /* 060_cacheDelegate.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 060_cacheDelegate.rst; path = docs/pages/060_cacheDelegate.rst; sourceTree = ""; }; D445078350992F7CFCFEAD3AFA77895F /* CollectionChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionChange.swift; path = RocketData/CollectionChange.swift; sourceTree = ""; }; D49C9E86A88F4A4E6F5F6B112E0A8035 /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E04572C869A3D5AD2F9ED3F2E9ED0653 /* Pods-SampleApp-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SampleApp-acknowledgements.plist"; sourceTree = ""; }; - E0FC48E859F454B844F5003B08E2774C /* PINCache-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINCache-prefix.pch"; sourceTree = ""; }; - E1592B03847F759689839BDB9100935E /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; - E3428D834FFEECC083594BDB801435A3 /* Pods-SampleApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp.debug.xcconfig"; sourceTree = ""; }; - E5737326A302DF0A7B6ACFD75437574F /* RocketData-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RocketData-prefix.pch"; sourceTree = ""; }; - E713382BE6FFD0D3C1564BEB1B1D8533 /* 070_networking.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 070_networking.rst; path = docs/pages/070_networking.rst; sourceTree = ""; }; + DEA53DC16974D127547208774EB4FD83 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; + E09800FB23D5CFF76D8E5D0E908488D7 /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ConsistencyManager.modulemap; sourceTree = ""; }; + E713382BE6FFD0D3C1564BEB1B1D8533 /* 070_networking.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 070_networking.rst; path = docs/pages/070_networking.rst; sourceTree = ""; }; E7C84F8FE00F8693DF4DDD6013DD0B5C /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; - E8FD1522BAF9AB40CDEE436868B4393C /* Pods-SampleApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SampleApp.release.xcconfig"; sourceTree = ""; }; - ED5F43458CE2ECC4F9BF87D646DABD8D /* 040_setup.rst */ = {isa = PBXFileReference; includeInIndex = 1; name = 040_setup.rst; path = docs/pages/040_setup.rst; sourceTree = ""; }; + E821797A510B38815A8DF318B21443EA /* RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RocketData-dummy.m"; sourceTree = ""; }; + ED5F43458CE2ECC4F9BF87D646DABD8D /* 040_setup.rst */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = 040_setup.rst; path = docs/pages/040_setup.rst; sourceTree = ""; }; F0F580B8DAAB408CD914D45F3FAF0C92 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; - F193CEEB6AEE7BCF7ED788E55342F2EF /* RocketData.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RocketData.xcconfig; sourceTree = ""; }; - F416922ACFF853066487097292FCDA5F /* README */ = {isa = PBXFileReference; includeInIndex = 1; name = README; path = docs/README; sourceTree = ""; }; - F42BF1E618F362FA4F1A29E01D43CC51 /* PINCache-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PINCache-dummy.m"; sourceTree = ""; }; - F5134B55DC3181BAB6F34FAD177845C0 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - F965A8EEFCC269A926AA2CFAFB39BCE7 /* RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RocketData-dummy.m"; sourceTree = ""; }; + F416922ACFF853066487097292FCDA5F /* README */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = README; path = docs/README; sourceTree = ""; }; + F5134B55DC3181BAB6F34FAD177845C0 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + F668F064D942296E0300A78D017C628F /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; + FBA86275935616EF43D44FC2E404BAD7 /* Pods-SampleApp-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SampleApp-acknowledgements.markdown"; sourceTree = ""; }; + FE619F1D27DD1DF5F37E50D6238D1102 /* PINCache.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PINCache.modulemap; sourceTree = ""; }; + FEED72BAF948ABA5E92DE8F95971B0F4 /* PINCache-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PINCache-prefix.pch"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 2ADE58A3F926DD0CB2216987A718EF25 /* Frameworks */ = { + 8F074E2CDB7C0F2C7088F5397EBA6569 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 344D168B7F4F11306C702333CBADCD8D /* Foundation.framework in Frameworks */, + BE18B1C898AE3712FC2154EC32BD4E87 /* ConsistencyManager.framework in Frameworks */, + 611CD04FE6AE7E17012B22D47AC62AF2 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 37FF3E6DD87189C874E974CBDD0ACA49 /* Frameworks */ = { + B87A7965465C16EC4E0A3C07C4BC4D6D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4258E8714B4290FD60EBAA55BCCE42E4 /* Foundation.framework in Frameworks */, + 96D0A024B7ECC4D89D4CFAC5ACEFD66D /* Foundation.framework in Frameworks */, + 9ED6D433C2599ED87508A0197AFA3FCD /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - CC1FCBD30F152F9CF52FF9362D5F21A9 /* Frameworks */ = { + C45B40F0A7D1C65389450AE05581CC58 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FB3C4D6291C393F0DBA06AFA53C28F2E /* ConsistencyManager.framework in Frameworks */, - E357CB7BDBC61274F850B5D8E0183C79 /* Foundation.framework in Frameworks */, + 8C4A1584E9C86ABA4EB5B190224BC124 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F4C89EB621DA3443C7CC196FA7783897 /* Frameworks */ = { + D813A7B71658ACFEAF02F8A111806114 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 41244A50E29EAE3F0AAA7A41C3659AB5 /* Foundation.framework in Frameworks */, - 2F341F5146023710BD347AEB3E9E40CB /* UIKit.framework in Frameworks */, + B060CAA3E91A22A43A10D2D143415E8A /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -245,38 +244,10 @@ name = "Development Pods"; sourceTree = ""; }; - 16AF09E3BC77807BDD84F92D7F7895F2 /* Support Files */ = { - isa = PBXGroup; - children = ( - 356D650062B0363D58C9164077D00662 /* Info.plist */, - 9F138238A2B36EAD88014DADD999B56B /* PINCache.modulemap */, - 49E88278043A13D7FDE2AF83963F7D0E /* PINCache.xcconfig */, - F42BF1E618F362FA4F1A29E01D43CC51 /* PINCache-dummy.m */, - E0FC48E859F454B844F5003B08E2774C /* PINCache-prefix.pch */, - 8091A2132DBBEEA453DD24ED28BA0872 /* PINCache-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/PINCache"; - sourceTree = ""; - }; - 173656856653E1457F7DC5946095B5C0 /* Support Files */ = { - isa = PBXGroup; - children = ( - 1AE00CB6A92ACA8953C69921D5620B9A /* Info.plist */, - 61C4E339881D068224E2EF678A4E7622 /* RocketData.modulemap */, - F193CEEB6AEE7BCF7ED788E55342F2EF /* RocketData.xcconfig */, - F965A8EEFCC269A926AA2CFAFB39BCE7 /* RocketData-dummy.m */, - E5737326A302DF0A7B6ACFD75437574F /* RocketData-prefix.pch */, - 342074D70E6F1B7308166F8FF244AD05 /* RocketData-umbrella.h */, - ); - name = "Support Files"; - path = "SampleApp/Pods/Target Support Files/RocketData"; - sourceTree = ""; - }; - 3D38DD4AFCE429A93844A67994A1F277 /* Targets Support Files */ = { + 318054F67A8974B9DB7818AFADE027F4 /* Targets Support Files */ = { isa = PBXGroup; children = ( - 9E802E60A113B9EE20B7AF71223511DA /* Pods-SampleApp */, + 534407025D619BFC84210077CEE74486 /* Pods-SampleApp */, ); name = "Targets Support Files"; sourceTree = ""; @@ -309,12 +280,28 @@ 22105AF15720755009B3A5DA4F6D7F07 /* WeakArray.swift */, 8550AC39285335C0A5F724B97B2B69F4 /* WeakBox.swift */, 733B9C1E910C94400F04F1F685C49C19 /* WeakHolder.swift */, - 6EDD92D030E0CAB541C94B5170B22E81 /* Support Files */, + 866C13D809F536BA4305B1735D0430D6 /* Support Files */, ); - name = ConsistencyManager; path = ConsistencyManager; sourceTree = ""; }; + 534407025D619BFC84210077CEE74486 /* Pods-SampleApp */ = { + isa = PBXGroup; + children = ( + 09DC25D977E35B12BAAFD515FB26A182 /* Pods-SampleApp.modulemap */, + FBA86275935616EF43D44FC2E404BAD7 /* Pods-SampleApp-acknowledgements.markdown */, + 06A9EBED11C77579B84CA2C1EA00D87B /* Pods-SampleApp-acknowledgements.plist */, + 571735D0881890D68D554E759634A301 /* Pods-SampleApp-dummy.m */, + 690BE5B9A690111C6D8694B183D50743 /* Pods-SampleApp-frameworks.sh */, + 4C29B39AE586A70B59B2E91CEBCBFEBB /* Pods-SampleApp-Info.plist */, + BC123CE7CA9BC63182309739226FB1FA /* Pods-SampleApp-umbrella.h */, + 4D937984FBA623D7F4A7B48C55282343 /* Pods-SampleApp.debug.xcconfig */, + 5E33BE31A81C1C6A899734CA7660E123 /* Pods-SampleApp.release.xcconfig */, + ); + name = "Pods-SampleApp"; + path = "Target Support Files/Pods-SampleApp"; + sourceTree = ""; + }; 5DD1349B4F350C0F70771411DD3A3311 /* iOS */ = { isa = PBXGroup; children = ( @@ -335,26 +322,11 @@ 9FC24ED114BB46404756B7BDBB0C306D /* PINDiskCache.m */, BDC7DC5E3EBEE2B02E0DA1299668EBA5 /* PINMemoryCache.h */, 95A918B2ADF80A146100A75403D6666F /* PINMemoryCache.m */, - 16AF09E3BC77807BDD84F92D7F7895F2 /* Support Files */, + E8FEE060FA3F0F3CDA47F3590BE1B945 /* Support Files */, ); - name = PINCache; path = PINCache; sourceTree = ""; }; - 6EDD92D030E0CAB541C94B5170B22E81 /* Support Files */ = { - isa = PBXGroup; - children = ( - 75A2EBADDDD74148BDC5B35E089A7C15 /* ConsistencyManager.modulemap */, - 74DE64890C60B56276093828BBDE9CF3 /* ConsistencyManager.xcconfig */, - B19F0C6F6A3D9B6C43534142D1CC226B /* ConsistencyManager-dummy.m */, - E1592B03847F759689839BDB9100935E /* ConsistencyManager-prefix.pch */, - 1313DE66A3785B7BBA205244397F41F9 /* ConsistencyManager-umbrella.h */, - A265B35D0756A32DC93A9DECC10F17AA /* Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/ConsistencyManager"; - sourceTree = ""; - }; 7AB423BAF8548B19913168F5E90DDF2C /* Products */ = { isa = PBXGroup; children = ( @@ -374,26 +346,22 @@ 49F432E7CB094AD693C0A3BA8443D356 /* Frameworks */, A40F26D97255EF0C634A4428B9727EC1 /* Pods */, 7AB423BAF8548B19913168F5E90DDF2C /* Products */, - 3D38DD4AFCE429A93844A67994A1F277 /* Targets Support Files */, + 318054F67A8974B9DB7818AFADE027F4 /* Targets Support Files */, ); sourceTree = ""; }; - 9E802E60A113B9EE20B7AF71223511DA /* Pods-SampleApp */ = { + 866C13D809F536BA4305B1735D0430D6 /* Support Files */ = { isa = PBXGroup; children = ( - CAAC90C777B1C8060FFA317199DB4287 /* Info.plist */, - AE0C4D71174D2426CC932D25E179C198 /* Pods-SampleApp.modulemap */, - 254B60E7ED0981F8277E681A5C641FD9 /* Pods-SampleApp-acknowledgements.markdown */, - E04572C869A3D5AD2F9ED3F2E9ED0653 /* Pods-SampleApp-acknowledgements.plist */, - 91E34C2187030136F6DB77752E5F4911 /* Pods-SampleApp-dummy.m */, - B9B43DF05AFE196C8F30EB9D8D47DBCC /* Pods-SampleApp-frameworks.sh */, - 7F9C1B52153A73A7DC8D38CA889C05DE /* Pods-SampleApp-resources.sh */, - 43E0836AB7F78D7F2563BA2715E694C8 /* Pods-SampleApp-umbrella.h */, - E3428D834FFEECC083594BDB801435A3 /* Pods-SampleApp.debug.xcconfig */, - E8FD1522BAF9AB40CDEE436868B4393C /* Pods-SampleApp.release.xcconfig */, + E09800FB23D5CFF76D8E5D0E908488D7 /* ConsistencyManager.modulemap */, + D148EC02D762F5E3AA43709CEAEF02A0 /* ConsistencyManager.xcconfig */, + DEA53DC16974D127547208774EB4FD83 /* ConsistencyManager-dummy.m */, + 98C1905F2176E875EA6D2E7C92F151DE /* ConsistencyManager-Info.plist */, + 140840FE5FC59CAEFF37E966985CEEB9 /* ConsistencyManager-prefix.pch */, + F668F064D942296E0300A78D017C628F /* ConsistencyManager-umbrella.h */, ); - name = "Pods-SampleApp"; - path = "Target Support Files/Pods-SampleApp"; + name = "Support Files"; + path = "../Target Support Files/ConsistencyManager"; sourceTree = ""; }; A40F26D97255EF0C634A4428B9727EC1 /* Pods */ = { @@ -405,6 +373,20 @@ name = Pods; sourceTree = ""; }; + AB278D30F7E4989873CD63860F878D4B /* Support Files */ = { + isa = PBXGroup; + children = ( + 81FC1216D6269424A2B00008542AE14E /* RocketData.modulemap */, + 30060F143A274E0AB6553758719B06DE /* RocketData.xcconfig */, + E821797A510B38815A8DF318B21443EA /* RocketData-dummy.m */, + 964D099EA73E05125FBCBC55A3F2E920 /* RocketData-Info.plist */, + 1CF928FE1026A30B80B4145B2DAC8971 /* RocketData-prefix.pch */, + 8BE3A49193014CDB129A5B1E02DBCD4C /* RocketData-umbrella.h */, + ); + name = "Support Files"; + path = "SampleApp/Pods/Target Support Files/RocketData"; + sourceTree = ""; + }; B2F3211E2AD3483C7961EEBCEA2D3BC2 /* Pod */ = { isa = PBXGroup; children = ( @@ -459,125 +441,143 @@ D0F33A648C0DA5195760B9C7E360FD6C /* SharedCollectionManager.swift */, CC73ADB215D0464E4A58CD2028E74554 /* WeakSharedCollectionArray.swift */, B2F3211E2AD3483C7961EEBCEA2D3BC2 /* Pod */, - 173656856653E1457F7DC5946095B5C0 /* Support Files */, + AB278D30F7E4989873CD63860F878D4B /* Support Files */, ); name = RocketData; path = ../..; sourceTree = ""; }; + E8FEE060FA3F0F3CDA47F3590BE1B945 /* Support Files */ = { + isa = PBXGroup; + children = ( + FE619F1D27DD1DF5F37E50D6238D1102 /* PINCache.modulemap */, + 9A5B6E4EDA28C884131C724BAABBFBA7 /* PINCache.xcconfig */, + A41687EC2ABDF1FD79CA6972C1AC579A /* PINCache-dummy.m */, + B19AB4AE4758CE53180749C598A1A37C /* PINCache-Info.plist */, + FEED72BAF948ABA5E92DE8F95971B0F4 /* PINCache-prefix.pch */, + 02E4FEBA7B67310F5E527756A8A7C7E0 /* PINCache-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/PINCache"; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 251EED542950AD3534D3C8DB411E104A /* Headers */ = { + 5FE455F4D30DD767F3E9E1F53FC14A02 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4479A3765D16BC2D340B5057405C9143 /* ConsistencyManager-umbrella.h in Headers */, + 8EE56782DD740D9135E6DE4C41F43CC0 /* Nullability.h in Headers */, + E6489C3E61C7558952634DEA805B31A7 /* PINCache-umbrella.h in Headers */, + 73320F83F7DC5F355CA6A32CBCFFDEF7 /* PINCache.h in Headers */, + 857EFD7E698313B1A062FAB146D301BF /* PINCacheObjectSubscripting.h in Headers */, + 0C210B2F94502D40C5AABB1DEDFBE6FD /* PINDiskCache.h in Headers */, + F20BCAFE2B1659F974FBDF14EC29D91C /* PINMemoryCache.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - A218D490CF3707D544A8C934ABE6810A /* Headers */ = { + 79A94A6D3DE35FE384DE6E784B2D9FD5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - FD744C29B5D44CB24577829D164C76C9 /* RocketData-umbrella.h in Headers */, + E0CE186BE77C17A0DC8C067DEA7C11AA /* Pods-SampleApp-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - A75896AD4AB66D33DDD2DEF68877D4BE /* Headers */ = { + 86C146126031B87817E1E77B63EE955F /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 7D00332C0E554E00DCFAC03EDCCCA5FC /* Nullability.h in Headers */, - A4276999F7266A6C44E2CA706D24340F /* PINCache-umbrella.h in Headers */, - B00EC20A95367E3634CC70121385F419 /* PINCache.h in Headers */, - D15F7F93047B54CDC5A9AEB85AFCD5B6 /* PINCacheObjectSubscripting.h in Headers */, - 4E1C1B888CA1C3AF1299FB177B9AFA52 /* PINDiskCache.h in Headers */, - D4AB193A949BDB9210C7A3F60D035693 /* PINMemoryCache.h in Headers */, + 45F4A61A1B4FD66A4A273A168250686A /* RocketData-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - CE0414B94BD5A1070A32E042206DD560 /* Headers */ = { + A090FDD01AE6AF1502D55FE2341125D0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - CDD4C556EA3F331E6DDA45B6B683F68D /* Pods-SampleApp-umbrella.h in Headers */, + 939C808B5AAFBC5998B016BA55BB9F9E /* ConsistencyManager-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 6A4878A4A87B118BAF0877A103373708 /* PINCache */ = { + 1D683493EE06554275011036C44400F3 /* Pods-SampleApp */ = { isa = PBXNativeTarget; - buildConfigurationList = 483ECA1F8F3E1AF3A5A61F0D70AE8993 /* Build configuration list for PBXNativeTarget "PINCache" */; + buildConfigurationList = 553351AEB4AA7595C762D3ECFCED7B6C /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */; buildPhases = ( - 06A5C791F37C3C61E858A02BAB9C23C0 /* Sources */, - 37FF3E6DD87189C874E974CBDD0ACA49 /* Frameworks */, - A75896AD4AB66D33DDD2DEF68877D4BE /* Headers */, + 79A94A6D3DE35FE384DE6E784B2D9FD5 /* Headers */, + E27C5FC256648EA70EEEB8536193311E /* Sources */, + D813A7B71658ACFEAF02F8A111806114 /* Frameworks */, + 185AA083BC26859E64085A9FBAFDD416 /* Resources */, ); buildRules = ( ); dependencies = ( + A8B13CB97CCF2FF4A965D1744E4CB8DC /* PBXTargetDependency */, + 289BA7A34EB61EFE53DCB52F02E43F45 /* PBXTargetDependency */, + 6C7BF2A44D1388855C37F275C2A73AA8 /* PBXTargetDependency */, ); - name = PINCache; - productName = PINCache; - productReference = 4FFA9C7C1FB7653BA1B5C4CE05C4C0E6 /* PINCache.framework */; + name = "Pods-SampleApp"; + productName = "Pods-SampleApp"; + productReference = 99EC2D3F6E0AA3D387164D1E15C93A31 /* Pods_SampleApp.framework */; productType = "com.apple.product-type.framework"; }; - CC3A97A4DA7FC340C7B679B3494EA513 /* RocketData */ = { + 2FD7AD31842596051CCB9958DFCEC67A /* ConsistencyManager */ = { isa = PBXNativeTarget; - buildConfigurationList = 0BE2C1FEB39544146C09159C2106261F /* Build configuration list for PBXNativeTarget "RocketData" */; + buildConfigurationList = 4D08CE93465F824C5C0BF8274EF90D9E /* Build configuration list for PBXNativeTarget "ConsistencyManager" */; buildPhases = ( - BCD8CFDDBA9C49D09827E70504AF9AB9 /* Sources */, - CC1FCBD30F152F9CF52FF9362D5F21A9 /* Frameworks */, - A218D490CF3707D544A8C934ABE6810A /* Headers */, + A090FDD01AE6AF1502D55FE2341125D0 /* Headers */, + 3EE25B59750D854EA891DBBB710B84D7 /* Sources */, + B87A7965465C16EC4E0A3C07C4BC4D6D /* Frameworks */, + 6A4CFFFFE016ED4D88CB516973E09096 /* Resources */, ); buildRules = ( ); dependencies = ( - 53BDFDE1946768500D32F6440FFE7296 /* PBXTargetDependency */, ); - name = RocketData; - productName = RocketData; - productReference = 106F5AA8B24AC58F9705F3FA7459B833 /* RocketData.framework */; + name = ConsistencyManager; + productName = ConsistencyManager; + productReference = CBA97F5884387AA14AB8EFA066145363 /* ConsistencyManager.framework */; productType = "com.apple.product-type.framework"; }; - CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */ = { + 4CF9289805DD79BBABDC8ECA48BD3779 /* RocketData */ = { isa = PBXNativeTarget; - buildConfigurationList = 80400AB863598523A87EB65199C8BBFD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */; + buildConfigurationList = 5DEB690EFF8E7BE599E0DF1194A76EB1 /* Build configuration list for PBXNativeTarget "RocketData" */; buildPhases = ( - 24AA018C28F97A8058C45EEB3A292825 /* Sources */, - F4C89EB621DA3443C7CC196FA7783897 /* Frameworks */, - 251EED542950AD3534D3C8DB411E104A /* Headers */, + 86C146126031B87817E1E77B63EE955F /* Headers */, + 511FBB8CC122B3A85C1BD60AB6F6B443 /* Sources */, + 8F074E2CDB7C0F2C7088F5397EBA6569 /* Frameworks */, + 9B4D4EBB8D781A48549F1A8A9C3C2D9D /* Resources */, ); buildRules = ( ); dependencies = ( + 3B13866F61244E128E26668F713A1A1A /* PBXTargetDependency */, ); - name = ConsistencyManager; - productName = ConsistencyManager; - productReference = CBA97F5884387AA14AB8EFA066145363 /* ConsistencyManager.framework */; + name = RocketData; + productName = RocketData; + productReference = 106F5AA8B24AC58F9705F3FA7459B833 /* RocketData.framework */; productType = "com.apple.product-type.framework"; }; - CF024AFA424B8F100A40AFE0F9E618B5 /* Pods-SampleApp */ = { + 82C1DBEF9EA6D5044021644373A6CC5D /* PINCache */ = { isa = PBXNativeTarget; - buildConfigurationList = B65C056ED639215FD29F9E556DCC89D8 /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */; + buildConfigurationList = A68B0B034459EF7F480B64604504D8E9 /* Build configuration list for PBXNativeTarget "PINCache" */; buildPhases = ( - 105AA62AAC0B5E535D978E0198C7EBD4 /* Sources */, - 2ADE58A3F926DD0CB2216987A718EF25 /* Frameworks */, - CE0414B94BD5A1070A32E042206DD560 /* Headers */, + 5FE455F4D30DD767F3E9E1F53FC14A02 /* Headers */, + 5DE44ABDE9B8E7555F29587F28C4248B /* Sources */, + C45B40F0A7D1C65389450AE05581CC58 /* Frameworks */, + 7D33C92116BBFD4EA1D615A80D720F7E /* Resources */, ); buildRules = ( ); dependencies = ( - 0D497E2CA5604873EF2974114D37C4F1 /* PBXTargetDependency */, - D7E5764A310BB48EA00C40EDEE077130 /* PBXTargetDependency */, - E722D2DDE077067011F5FD0D223AA46F /* PBXTargetDependency */, ); - name = "Pods-SampleApp"; - productName = "Pods-SampleApp"; - productReference = 99EC2D3F6E0AA3D387164D1E15C93A31 /* Pods_SampleApp.framework */; + name = PINCache; + productName = PINCache; + productReference = 4FFA9C7C1FB7653BA1B5C4CE05C4C0E6 /* PINCache.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -587,7 +587,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0930; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 1000; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -601,114 +601,145 @@ projectDirPath = ""; projectRoot = ""; targets = ( - CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */, - 6A4878A4A87B118BAF0877A103373708 /* PINCache */, - CF024AFA424B8F100A40AFE0F9E618B5 /* Pods-SampleApp */, - CC3A97A4DA7FC340C7B679B3494EA513 /* RocketData */, + 2FD7AD31842596051CCB9958DFCEC67A /* ConsistencyManager */, + 82C1DBEF9EA6D5044021644373A6CC5D /* PINCache */, + 1D683493EE06554275011036C44400F3 /* Pods-SampleApp */, + 4CF9289805DD79BBABDC8ECA48BD3779 /* RocketData */, ); }; /* End PBXProject section */ +/* Begin PBXResourcesBuildPhase section */ + 185AA083BC26859E64085A9FBAFDD416 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6A4CFFFFE016ED4D88CB516973E09096 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7D33C92116BBFD4EA1D615A80D720F7E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9B4D4EBB8D781A48549F1A8A9C3C2D9D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ - 06A5C791F37C3C61E858A02BAB9C23C0 /* Sources */ = { + 3EE25B59750D854EA891DBBB710B84D7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 68A966DC9FE75F46B517A0A01458F0DD /* PINCache-dummy.m in Sources */, - 27E2ACAB5553AF46488DDAAF0B8537D2 /* PINCache.m in Sources */, - 4D8A1FB7701C95E1B3CDCE125FA16463 /* PINDiskCache.m in Sources */, - D2E7CCC6FA04A436D5BCE04E5D639093 /* PINMemoryCache.m in Sources */, + C1B6BDF2CB6C1B45C96B56E63A12CFBD /* Array+Weak.swift in Sources */, + D73D26F3F15143620C69F6476875EAD5 /* BatchListener.swift in Sources */, + 9B2E2BC14E97E86929C78B7C633CDC3A /* BatchUpdateModel.swift in Sources */, + ADB130C4205457AC1A1FC3A2C7F42D7F /* CollectionHelpers.swift in Sources */, + 57CA270C9864F6DD8DC1AF27686DF986 /* ConsistencyManager-dummy.m in Sources */, + 845007C350B76A79DE42511F549A49FA /* ConsistencyManager.swift in Sources */, + 5F0283586E9BF8797C69BD7E2A513CDB /* ConsistencyManagerDelegate.swift in Sources */, + B61EC74E4F5D08BB1A95BD9314402C1C /* ConsistencyManagerListener.swift in Sources */, + 0C9ECF9FC34B5CF0C60B048166262686 /* ConsistencyManagerModel.swift in Sources */, + EB91FB625D549C02049A6459A15BE454 /* ConsistencyManagerUpdatesListener.swift in Sources */, + 05B35533A0547DD0471C846BFFC1F043 /* ErrorManager.swift in Sources */, + 2267435A90F9EFDFAB5581BE0C8095F1 /* ModelChange.swift in Sources */, + 23E63FF1C23124C71F1E7AEBC14D2EA4 /* ModelUpdates.swift in Sources */, + 2A51D0DB50357B6C41D9CBB5F181CE30 /* TypeErasedWeakHolders.swift in Sources */, + A43FDF5FF4FB9B42BF7C0DBB872A54D1 /* WeakArray.swift in Sources */, + B256EA38DA613681B2E7F174C2A22AAD /* WeakBox.swift in Sources */, + D148C9BA38D9C382597E69352C0CDC93 /* WeakHolder.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 105AA62AAC0B5E535D978E0198C7EBD4 /* Sources */ = { + 511FBB8CC122B3A85C1BD60AB6F6B443 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0BFE56DC2EDC8B1037451D0AE0C0A92F /* Pods-SampleApp-dummy.m in Sources */, + 55E87BEDCAED42BF24C3E1C4D81E1A87 /* BatchDataProviderListener.swift in Sources */, + 316A474FC858755724A3CC2B06105A71 /* CacheDelegate.swift in Sources */, + 11A1897735FCEDA2B86C6589E2473127 /* ChangeTime.swift in Sources */, + 6847A44B81CB4F57DB03E637A15CACEC /* CollectionChange.swift in Sources */, + AE4CC6E65A367604D871C0BE28A021A9 /* CollectionDataProvider.swift in Sources */, + EDFC7CB43AE66304BAE292CCB231FA6D /* ConsistencyContextWrapper.swift in Sources */, + 73D1882905FEB1687C04A063A497E69B /* DataHolder.swift in Sources */, + 9745D8706E854D42CF46DA409CF6A49A /* DataModelManager.swift in Sources */, + E6A9A426FFA0CE2597B4940852FB57D6 /* DataProvider.swift in Sources */, + 28E1864931E2D0E301CA7EE487268CA1 /* Errors.swift in Sources */, + E8E04F4DCDD4E958F9988C3DD78299F7 /* Logger.swift in Sources */, + D284575879C89033BA4FC0D24A2AE998 /* Model.swift in Sources */, + 4532FFDDB874E57B9A4A9E1D9E02ACFB /* ParsingHelpers.swift in Sources */, + 1EB380FFE0FE3A916667D146262FDD49 /* RocketData-dummy.m in Sources */, + E5CD418739D09B426E4E57FC2768251D /* SharedCollectionManager.swift in Sources */, + 5759E8D382F13FF1A42D31B780AD042A /* WeakSharedCollectionArray.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 24AA018C28F97A8058C45EEB3A292825 /* Sources */ = { + 5DE44ABDE9B8E7555F29587F28C4248B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 36AC1E4F6E829EFF7EED533BA42B54DC /* Array+Weak.swift in Sources */, - 822307BE07734344679FA644970CF8CD /* BatchListener.swift in Sources */, - 4B065B337B479561160E13B01EAEA0A1 /* BatchUpdateModel.swift in Sources */, - D76F64AC6718611B6D42CE69B17B2DB9 /* CollectionHelpers.swift in Sources */, - 3ECAC56FEBB145EFE4FE9C22AB3D8BB5 /* ConsistencyManager-dummy.m in Sources */, - C4077D53936DFBC6E42745A1E9A70AC0 /* ConsistencyManager.swift in Sources */, - B71C08B6AADC997123138F3B1D2E614D /* ConsistencyManagerDelegate.swift in Sources */, - 7577D28FE99166790C3295B1D76CB27B /* ConsistencyManagerListener.swift in Sources */, - 631B06351A176767C9F4BFE43D20F9DF /* ConsistencyManagerModel.swift in Sources */, - D19F59FE7170377F2C74E93B2D99BFE2 /* ConsistencyManagerUpdatesListener.swift in Sources */, - 001DCC828873428A98B99A0BC22CE1F2 /* ErrorManager.swift in Sources */, - 3B69F7A493CC6D9BA7AAE82C3AB4EF09 /* ModelChange.swift in Sources */, - 9A0CD6C72C3C7D3CE1CE428C24690114 /* ModelUpdates.swift in Sources */, - 2616F72C653C085A30DD4BCDE48A75BC /* TypeErasedWeakHolders.swift in Sources */, - 825E2EC9D8B391C8787D9CFD444575BF /* WeakArray.swift in Sources */, - 283A9AE0309CB9B25265B87DC9E6AD2B /* WeakBox.swift in Sources */, - 263707EA21F73AFEB8A3CC633DB6997A /* WeakHolder.swift in Sources */, + E6A751C838AF5799F546636C3CB637F9 /* PINCache-dummy.m in Sources */, + B6E1C080EA723C072C8ED83F9FA2142D /* PINCache.m in Sources */, + 036F0F8595B4D2A060ADC254C22E950B /* PINDiskCache.m in Sources */, + 346687984CF2DAE1DA2D2E88B80CE075 /* PINMemoryCache.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD8CFDDBA9C49D09827E70504AF9AB9 /* Sources */ = { + E27C5FC256648EA70EEEB8536193311E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 97379C494F6B1B55557C23006061AACE /* BatchDataProviderListener.swift in Sources */, - 03C13E8EF242C959B5203B3CDF7DFD53 /* CacheDelegate.swift in Sources */, - B76ED9642CE2DA1D0C8A5A5467A0D82E /* ChangeTime.swift in Sources */, - 461FBE8B2B0822FAC78BDB61FA568044 /* CollectionChange.swift in Sources */, - C16B596869C3C9D73D9FC57D97BFD5DA /* CollectionDataProvider.swift in Sources */, - A47FE0397CC14EF044F2131F170619EF /* ConsistencyContextWrapper.swift in Sources */, - E2563B0F0411A2EF3B06D52E50266581 /* DataHolder.swift in Sources */, - D7478D2C64DE55D95C734C1FA789D562 /* DataModelManager.swift in Sources */, - FA06D33C566A0EDE94B1FC295465C5E9 /* DataProvider.swift in Sources */, - BC1D5B931D1BF52B67992F8AFA9FF099 /* Errors.swift in Sources */, - 82A3580BC75BF9DBC758DD60A4FC7EEC /* Logger.swift in Sources */, - B775AAE0A3D8D5287AA9C0AAF0A6219F /* Model.swift in Sources */, - 839428B9193A80D3CD2A236BA0F36E19 /* ParsingHelpers.swift in Sources */, - 835A5B07EC488F10E4F139334882D8FF /* RocketData-dummy.m in Sources */, - 552C54E8B87986D31C0733ED2F766043 /* SharedCollectionManager.swift in Sources */, - A15B4BD94D1228657D7A49E33CE0877C /* WeakSharedCollectionArray.swift in Sources */, + 8F92B1C8BB8589BCA4699973E4FFC7C6 /* Pods-SampleApp-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 0D497E2CA5604873EF2974114D37C4F1 /* PBXTargetDependency */ = { + 289BA7A34EB61EFE53DCB52F02E43F45 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = ConsistencyManager; - target = CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */; - targetProxy = 10BB3F279A800629DB409D570B9EE7BB /* PBXContainerItemProxy */; + name = PINCache; + target = 82C1DBEF9EA6D5044021644373A6CC5D /* PINCache */; + targetProxy = 9630E5C99701E05DA3D78DF3C091E69C /* PBXContainerItemProxy */; }; - 53BDFDE1946768500D32F6440FFE7296 /* PBXTargetDependency */ = { + 3B13866F61244E128E26668F713A1A1A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ConsistencyManager; - target = CD959F3131ECC7808D5179105D8A95E2 /* ConsistencyManager */; - targetProxy = D1296219415AA22AC088888393ABE126 /* PBXContainerItemProxy */; + target = 2FD7AD31842596051CCB9958DFCEC67A /* ConsistencyManager */; + targetProxy = DC46F7BC197859BC24F173EA010C437C /* PBXContainerItemProxy */; }; - D7E5764A310BB48EA00C40EDEE077130 /* PBXTargetDependency */ = { + 6C7BF2A44D1388855C37F275C2A73AA8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PINCache; - target = 6A4878A4A87B118BAF0877A103373708 /* PINCache */; - targetProxy = 13E284B044C0228CF3135DD561DDC00C /* PBXContainerItemProxy */; + name = RocketData; + target = 4CF9289805DD79BBABDC8ECA48BD3779 /* RocketData */; + targetProxy = 027268F947EA1140355234F5652AB401 /* PBXContainerItemProxy */; }; - E722D2DDE077067011F5FD0D223AA46F /* PBXTargetDependency */ = { + A8B13CB97CCF2FF4A965D1744E4CB8DC /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RocketData; - target = CC3A97A4DA7FC340C7B679B3494EA513 /* RocketData */; - targetProxy = 49040E4CE974895E01CEDCAB7441C8E1 /* PBXContainerItemProxy */; + name = ConsistencyManager; + target = 2FD7AD31842596051CCB9958DFCEC67A /* ConsistencyManager */; + targetProxy = 9F3AFD50E47D93C75B6FD2C7D9962263 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 1E9AF75DA2158A381A9CAA0F21A50707 /* Debug */ = { + 0467B3B6E357B36B0E536342C4D4AE1B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 74DE64890C60B56276093828BBDE9CF3 /* ConsistencyManager.xcconfig */; + baseConfigurationReference = D148EC02D762F5E3AA43709CEAEF02A0 /* ConsistencyManager.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -720,7 +751,7 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ConsistencyManager/Info.plist"; + INFOPLIST_FILE = "Target Support Files/ConsistencyManager/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"; @@ -730,39 +761,8 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 46774D57E95E35FEAB957D3AF79410CF /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 49E88278043A13D7FDE2AF83963F7D0E /* PINCache.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PINCache/PINCache-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PINCache/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/PINCache/PINCache.modulemap"; - PRODUCT_MODULE_NAME = PINCache; - PRODUCT_NAME = PINCache; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -770,41 +770,9 @@ }; name = Release; }; - 4E795B133BB0926A33C3CF1D08CAFDC1 /* Debug */ = { + 2FCEC1C97088E48D1DE783DA5690A912 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F193CEEB6AEE7BCF7ED788E55342F2EF /* RocketData.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - 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"; - PRODUCT_MODULE_NAME = RocketData; - PRODUCT_NAME = RocketData; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 575A15207BC67831ABEEBCE81D539338 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E8FD1522BAF9AB40CDEE436868B4393C /* Pods-SampleApp.release.xcconfig */; + baseConfigurationReference = 5E33BE31A81C1C6A899734CA7660E123 /* Pods-SampleApp.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; @@ -816,7 +784,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-SampleApp/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-SampleApp/Pods-SampleApp-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -837,9 +805,9 @@ }; name = Release; }; - 665729E6C0C0BFD76FD743B9BCB179F2 /* Debug */ = { + 35E88DE762242B29DB05CA35B776D71B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 49E88278043A13D7FDE2AF83963F7D0E /* PINCache.xcconfig */; + baseConfigurationReference = D148EC02D762F5E3AA43709CEAEF02A0 /* ConsistencyManager.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -850,27 +818,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/PINCache/PINCache-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/PINCache/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ConsistencyManager/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/PINCache/PINCache.modulemap"; - PRODUCT_MODULE_NAME = PINCache; - PRODUCT_NAME = PINCache; + MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; + PRODUCT_MODULE_NAME = ConsistencyManager; + PRODUCT_NAME = ConsistencyManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.0; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 7F750EC93A605D6E94943E7380073A7B /* Debug */ = { + 37A003B042BB17CD11A91ABD1AE2C4E2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E3428D834FFEECC083594BDB801435A3 /* Pods-SampleApp.debug.xcconfig */; + baseConfigurationReference = 4D937984FBA623D7F4A7B48C55282343 /* Pods-SampleApp.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; @@ -882,7 +851,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-SampleApp/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-SampleApp/Pods-SampleApp-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -903,7 +872,7 @@ }; name = Debug; }; - 8B33C5230DE4A9DFA6D8F46505DD7AF7 /* Debug */ = { + 56A05ADD3BABDA1B56D1F979845809B1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -938,16 +907,13 @@ CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", + "POD_CONFIGURATION_RELEASE=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -957,16 +923,80 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 9.3; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_COMPILATION_MODE = wholemodule; SYMROOT = "${SRCROOT}/../build"; }; + name = Release; + }; + 62635DD9FE76FC616152BD65DA27BC23 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9A5B6E4EDA28C884131C724BAABBFBA7 /* PINCache.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/PINCache/PINCache-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/PINCache/PINCache-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/PINCache/PINCache.modulemap"; + PRODUCT_MODULE_NAME = PINCache; + PRODUCT_NAME = PINCache; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; name = Debug; }; - B42B54097A876E8A982CBF5DAA91B1AB /* Release */ = { + 6B664068614211A2C16424BCFD2924D5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 30060F143A274E0AB6553758719B06DE /* RocketData.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/RocketData/RocketData-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/RocketData/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"; + PRODUCT_MODULE_NAME = RocketData; + PRODUCT_NAME = RocketData; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + BEFDB93BF207328A04F1220475D02C3B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1001,13 +1031,16 @@ CODE_SIGNING_ALLOWED = NO; CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; + DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -1017,16 +1050,19 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 9.3; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SYMROOT = "${SRCROOT}/../build"; }; - name = Release; + name = Debug; }; - DAF828628021EF8B2965BED4F438889A /* Release */ = { + E45092FC6C803BC535DD4688F26167F3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F193CEEB6AEE7BCF7ED788E55342F2EF /* RocketData.xcconfig */; + baseConfigurationReference = 9A5B6E4EDA28C884131C724BAABBFBA7 /* PINCache.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1037,19 +1073,18 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/RocketData/RocketData-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/RocketData/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/PINCache/PINCache-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/PINCache/PINCache-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"; - PRODUCT_MODULE_NAME = RocketData; - PRODUCT_NAME = RocketData; + MODULEMAP_FILE = "Target Support Files/PINCache/PINCache.modulemap"; + PRODUCT_MODULE_NAME = PINCache; + PRODUCT_NAME = PINCache; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -1057,9 +1092,9 @@ }; name = Release; }; - E2C8B07B26D896B5532177519A843674 /* Release */ = { + FAEBB9AA4FBA4FE11D81005FD7CFF7F2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 74DE64890C60B56276093828BBDE9CF3 /* ConsistencyManager.xcconfig */; + baseConfigurationReference = 30060F143A274E0AB6553758719B06DE /* RocketData.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1070,70 +1105,69 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ConsistencyManager/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/RocketData/RocketData-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/RocketData/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/ConsistencyManager/ConsistencyManager.modulemap"; - PRODUCT_MODULE_NAME = ConsistencyManager; - PRODUCT_NAME = ConsistencyManager; + MODULEMAP_FILE = "Target Support Files/RocketData/RocketData.modulemap"; + PRODUCT_MODULE_NAME = RocketData; + PRODUCT_NAME = RocketData; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0BE2C1FEB39544146C09159C2106261F /* Build configuration list for PBXNativeTarget "RocketData" */ = { + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4E795B133BB0926A33C3CF1D08CAFDC1 /* Debug */, - DAF828628021EF8B2965BED4F438889A /* Release */, + BEFDB93BF207328A04F1220475D02C3B /* Debug */, + 56A05ADD3BABDA1B56D1F979845809B1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 4D08CE93465F824C5C0BF8274EF90D9E /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8B33C5230DE4A9DFA6D8F46505DD7AF7 /* Debug */, - B42B54097A876E8A982CBF5DAA91B1AB /* Release */, + 35E88DE762242B29DB05CA35B776D71B /* Debug */, + 0467B3B6E357B36B0E536342C4D4AE1B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 483ECA1F8F3E1AF3A5A61F0D70AE8993 /* Build configuration list for PBXNativeTarget "PINCache" */ = { + 553351AEB4AA7595C762D3ECFCED7B6C /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */ = { isa = XCConfigurationList; buildConfigurations = ( - 665729E6C0C0BFD76FD743B9BCB179F2 /* Debug */, - 46774D57E95E35FEAB957D3AF79410CF /* Release */, + 37A003B042BB17CD11A91ABD1AE2C4E2 /* Debug */, + 2FCEC1C97088E48D1DE783DA5690A912 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 80400AB863598523A87EB65199C8BBFD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { + 5DEB690EFF8E7BE599E0DF1194A76EB1 /* Build configuration list for PBXNativeTarget "RocketData" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1E9AF75DA2158A381A9CAA0F21A50707 /* Debug */, - E2C8B07B26D896B5532177519A843674 /* Release */, + FAEBB9AA4FBA4FE11D81005FD7CFF7F2 /* Debug */, + 6B664068614211A2C16424BCFD2924D5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B65C056ED639215FD29F9E556DCC89D8 /* Build configuration list for PBXNativeTarget "Pods-SampleApp" */ = { + A68B0B034459EF7F480B64604504D8E9 /* Build configuration list for PBXNativeTarget "PINCache" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7F750EC93A605D6E94943E7380073A7B /* Debug */, - 575A15207BC67831ABEEBCE81D539338 /* Release */, + 62635DD9FE76FC616152BD65DA27BC23 /* Debug */, + E45092FC6C803BC535DD4688F26167F3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist b/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist new file mode 100644 index 0000000..df97cf8 --- /dev/null +++ b/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 7.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig b/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig index 64ebd78..36aa2bb 100644 --- a/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig +++ b/SampleApp/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig @@ -1,7 +1,7 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/SampleApp/Pods/Target Support Files/PINCache/PINCache-Info.plist b/SampleApp/Pods/Target Support Files/PINCache/PINCache-Info.plist new file mode 100644 index 0000000..d135faf --- /dev/null +++ b/SampleApp/Pods/Target Support Files/PINCache/PINCache-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.3.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/SampleApp/Pods/Target Support Files/PINCache/PINCache.xcconfig b/SampleApp/Pods/Target Support Files/PINCache/PINCache.xcconfig index 1d77264..1f6dd25 100644 --- a/SampleApp/Pods/Target Support Files/PINCache/PINCache.xcconfig +++ b/SampleApp/Pods/Target Support Files/PINCache/PINCache.xcconfig @@ -1,6 +1,6 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PINCache GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = -framework "Foundation" -weak_framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "Foundation" -weak_framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-Info.plist b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + 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..7c82be4 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 @@ -1,666 +1,5 @@ - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2016 LinkedIn Corp. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - 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 License, Version 2.0 - Title - ConsistencyManager - Type - PSGroupSpecifier - - - FooterText - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [2013] [Tumblr, Inc.] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -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 - PSGroupSpecifier - - - FooterText - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2016 LinkedIn Corp. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - 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 License, Version 2.0 - Title - RocketData - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - https://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - + diff --git a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh index 6b27743..844a66d 100755 --- a/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh +++ b/SampleApp/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh @@ -47,8 +47,13 @@ install_framework() local basename basename="$(basename -s .framework "$1")" binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" fi # Strip invalid architectures so "fat" simulator / device frameworks work on device @@ -101,8 +106,8 @@ install_dsym() { # 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 + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 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 6eab943..3ddc2d5 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 @@ -3,8 +3,8 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Consisten GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PINCache/PINCache.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RocketData/RocketData.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "PINCache" -framework "RocketData" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "PINCache" -framework "RocketData" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 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 6eab943..3ddc2d5 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 @@ -3,8 +3,8 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Consisten GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/PINCache/PINCache.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RocketData/RocketData.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "PINCache" -framework "RocketData" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "PINCache" -framework "RocketData" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/SampleApp/Pods/Target Support Files/RocketData/RocketData-Info.plist b/SampleApp/Pods/Target Support Files/RocketData/RocketData-Info.plist new file mode 100644 index 0000000..df97cf8 --- /dev/null +++ b/SampleApp/Pods/Target Support Files/RocketData/RocketData-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 7.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/SampleApp/Pods/Target Support Files/RocketData/RocketData.xcconfig b/SampleApp/Pods/Target Support Files/RocketData/RocketData.xcconfig index b25df67..a289b05 100644 --- a/SampleApp/Pods/Target Support Files/RocketData/RocketData.xcconfig +++ b/SampleApp/Pods/Target Support Files/RocketData/RocketData.xcconfig @@ -1,8 +1,8 @@ CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RocketData FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = -framework "Foundation" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/SampleApp/SampleApp.xcodeproj/project.pbxproj b/SampleApp/SampleApp.xcodeproj/project.pbxproj index 1f9b1e7..ee71639 100644 --- a/SampleApp/SampleApp.xcodeproj/project.pbxproj +++ b/SampleApp/SampleApp.xcodeproj/project.pbxproj @@ -242,7 +242,7 @@ files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh", "${BUILT_PRODUCTS_DIR}/ConsistencyManager/ConsistencyManager.framework", "${BUILT_PRODUCTS_DIR}/PINCache/PINCache.framework", "${BUILT_PRODUCTS_DIR}/RocketData/RocketData.framework", @@ -255,7 +255,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SampleApp/Pods-SampleApp-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -410,7 +410,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.plivesey.SampleApp; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -425,7 +425,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.plivesey.SampleApp; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; diff --git a/SampleApp/SampleApp/AppDelegate.swift b/SampleApp/SampleApp/AppDelegate.swift index 540aa65..b897bd7 100644 --- a/SampleApp/SampleApp/AppDelegate.swift +++ b/SampleApp/SampleApp/AppDelegate.swift @@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { window = UIWindow(frame: UIScreen.main.bounds) let chatsViewController = ChatsViewController() From c3490e7d3f4eb18a1d36b91b7814cec59fe63dfe Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Fri, 21 Sep 2018 12:19:04 -0700 Subject: [PATCH 22/33] Adding a new simulator and trying to get travis to work --- build.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.sh b/build.sh index fcad574..20877a2 100755 --- a/build.sh +++ b/build.sh @@ -6,7 +6,8 @@ time xcodebuild clean test \ -scheme RocketData \ -sdk iphonesimulator \ -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.3' \ - -destination 'platform=iOS Simulator,name=iPhone X,OS=11.1' \ + -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.1' \ + -destination 'platform=iOS Simulator,name=iPhone X,OS=11.3' \ -destination 'platform=iOS Simulator,name=iPhone XS Max,OS=12.0' \ | xcpretty From 3e801d75417423d474131a333d1115721d13ac68 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Fri, 21 Sep 2018 12:37:54 -0700 Subject: [PATCH 23/33] Adding disable concurrent because it may fix travis --- build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sh b/build.sh index 20877a2..f4fdd04 100755 --- a/build.sh +++ b/build.sh @@ -9,6 +9,7 @@ time xcodebuild clean test \ -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.1' \ -destination 'platform=iOS Simulator,name=iPhone X,OS=11.3' \ -destination 'platform=iOS Simulator,name=iPhone XS Max,OS=12.0' \ + -disable-concurrent-destination-testing \ | xcpretty # Disabling 8.4 because it's very flaky on travis From efd77821dbaf7fbe54661a00df18f713cd26ac14 Mon Sep 17 00:00:00 2001 From: Ermolay Romanov Date: Thu, 1 Nov 2018 00:09:14 -0400 Subject: [PATCH 24/33] Update documentation link to new subdomain (#86) --- SampleApp/SampleApp/RocketDataHelpers/RocketDataSetup.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SampleApp/SampleApp/RocketDataHelpers/RocketDataSetup.swift b/SampleApp/SampleApp/RocketDataHelpers/RocketDataSetup.swift index fbcaf8b..3fd02be 100644 --- a/SampleApp/SampleApp/RocketDataHelpers/RocketDataSetup.swift +++ b/SampleApp/SampleApp/RocketDataHelpers/RocketDataSetup.swift @@ -16,7 +16,7 @@ import RocketData extension DataModelManager { /** - Singleton accessor for DataModelManager. See https://linkedin.github.io/RocketData/pages/040_setup.html + Singleton accessor for DataModelManager. See https://plivesey.github.io/RocketData/pages/040_setup.html */ static let sharedInstance = DataModelManager(cacheDelegate: RocketDataCacheDelegate()) } From 6da26d052ff297cdfb1d3218bc6a55930caced0d Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Fri, 21 Sep 2018 12:43:00 -0700 Subject: [PATCH 25/33] Adding a comment for travis fix --- build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sh b/build.sh index f4fdd04..cb48758 100755 --- a/build.sh +++ b/build.sh @@ -9,6 +9,7 @@ time xcodebuild clean test \ -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.1' \ -destination 'platform=iOS Simulator,name=iPhone X,OS=11.3' \ -destination 'platform=iOS Simulator,name=iPhone XS Max,OS=12.0' \ + # This appears to fix travis on Xcode10 - https://stackoverflow.com/questions/52395946/xcodebuild-software-caused-connection-abort-userinfo-nslocalizeddescription-e -disable-concurrent-destination-testing \ | xcpretty From b67c5dafd38577c98491f5934e8bb29f94370e5e Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Tue, 4 Dec 2018 09:33:15 +0700 Subject: [PATCH 26/33] Update carthage to use the latest version --- Cartfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cartfile b/Cartfile index f6aa58a..9b46714 100644 --- a/Cartfile +++ b/Cartfile @@ -1 +1 @@ -github "plivesey/ConsistencyManager-iOS" ~> 6.0.0 +github "plivesey/ConsistencyManager-iOS" ~> 7.0.0 From 373e191d5c7c274830660925b0d3ec34c5ee4efe Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Tue, 4 Dec 2018 11:51:05 +0700 Subject: [PATCH 27/33] Attempting to move around disable-concurrent-destination-testing to get travis to work --- build.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index cb48758..a4d3b18 100755 --- a/build.sh +++ b/build.sh @@ -1,16 +1,17 @@ #!/bin/sh +# disable-concurrent-destination-testing appears to fix travis on Xcode10 - https://stackoverflow.com/questions/52395946/xcodebuild-software-caused-connection-abort-userinfo-nslocalizeddescription-e + set -o pipefail && time xcodebuild clean test \ -workspace RocketData.xcworkspace \ -scheme RocketData \ -sdk iphonesimulator \ + -disable-concurrent-destination-testing \ -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.3' \ -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.1' \ -destination 'platform=iOS Simulator,name=iPhone X,OS=11.3' \ -destination 'platform=iOS Simulator,name=iPhone XS Max,OS=12.0' \ - # This appears to fix travis on Xcode10 - https://stackoverflow.com/questions/52395946/xcodebuild-software-caused-connection-abort-userinfo-nslocalizeddescription-e - -disable-concurrent-destination-testing \ | xcpretty # Disabling 8.4 because it's very flaky on travis From 47d2a0ad3a0a6edc02aedf34f5d71b943b1bfdaf Mon Sep 17 00:00:00 2001 From: Heberti Almeida Date: Wed, 19 Jun 2019 02:40:21 -0400 Subject: [PATCH 28/33] Adding tvOS platform (#91) This adds tvOS platform to the list on podspec, that is already supported by ConsistencyManager. --- RocketData.podspec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/RocketData.podspec b/RocketData.podspec index b1645f8..6648b1d 100644 --- a/RocketData.podspec +++ b/RocketData.podspec @@ -7,8 +7,11 @@ Pod::Spec.new do |spec| spec.summary = 'A non-blocking CoreData replacement which uses immutable models.' spec.source = { :git => 'https://github.com/plivesey/RocketData.git', :tag => spec.version } spec.source_files = 'RocketData/**/*.swift' - spec.platform = :ios, '8.0' - spec.frameworks = 'Foundation' + spec.ios.deployment_target = '8.0' + spec.ios.frameworks = 'Foundation' + spec.tvos.deployment_target = '9.0' + spec.tvos.frameworks = 'Foundation' + spec.dependency 'ConsistencyManager', '~> 7.0.0' end From 7456b24addecb4207f8c4a2e76e7782924ae3023 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Wed, 19 Jun 2019 07:42:55 +0100 Subject: [PATCH 29/33] Version bump -> 7.0.1 --- RocketData.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RocketData.podspec b/RocketData.podspec index 6648b1d..3623a5e 100644 --- a/RocketData.podspec +++ b/RocketData.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'RocketData' - spec.version = '7.0.0' + spec.version = '7.0.1' spec.license = { :type => 'Apache License, Version 2.0' } spec.homepage = 'https://plivesey.github.io/RocketData' spec.authors = 'plivesey' From 85284decba450a1a735eb5d98f530a2a2baf2223 Mon Sep 17 00:00:00 2001 From: Peter Livesey Date: Wed, 19 Jun 2019 17:11:49 +0100 Subject: [PATCH 30/33] Upgrading to Swift 5 --- .travis.yml | 2 +- Podfile | 4 +- Podfile.lock | 10 +- .../ConsistencyManager.swift | 8 +- .../Protocols/ConsistencyManagerModel.swift | 2 +- Pods/ConsistencyManager/README.md | 3 +- Pods/Manifest.lock | 10 +- Pods/Pods.xcodeproj/project.pbxproj | 816 +++++++++--------- .../ConsistencyManager-Info.plist | 2 +- .../Pods-RocketData-acknowledgements.plist | 239 ++++- .../Pods-RocketData.debug.xcconfig | 2 +- .../Pods-RocketData.release.xcconfig | 2 +- ...ods-RocketDataTests-acknowledgements.plist | 239 ++++- .../Pods-RocketDataTests-frameworks.sh | 27 +- .../Pods-RocketDataTests.debug.xcconfig | 2 +- .../Pods-RocketDataTests.release.xcconfig | 2 +- RocketData.podspec | 4 +- RocketData.xcodeproj/project.pbxproj | 19 +- .../xcschemes/RocketData.xcscheme | 2 +- RocketData/CollectionChange.swift | 6 +- RocketData/Logger.swift | 2 +- build.sh | 2 +- 22 files changed, 943 insertions(+), 462 deletions(-) diff --git a/.travis.yml b/.travis.yml index 021ee7a..f8b87b4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: objective-c -osx_image: xcode10 +osx_image: xcode10.2 script: sh build.sh after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/Podfile b/Podfile index a172fb6..173e7cf 100644 --- a/Podfile +++ b/Podfile @@ -3,10 +3,10 @@ use_frameworks! target :'RocketData' do - pod 'ConsistencyManager', '~> 7.0.0' + pod 'ConsistencyManager', '~> 8.0.0' end target :'RocketDataTests' do - pod 'ConsistencyManager', '~> 7.0.0' + pod 'ConsistencyManager', '~> 8.0.0' end diff --git a/Podfile.lock b/Podfile.lock index 7873e88..ce999b7 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,16 +1,16 @@ PODS: - - ConsistencyManager (7.0.0) + - ConsistencyManager (8.0.0) DEPENDENCIES: - - ConsistencyManager (~> 7.0.0) + - ConsistencyManager (~> 8.0.0) SPEC REPOS: https://github.com/cocoapods/specs.git: - ConsistencyManager SPEC CHECKSUMS: - ConsistencyManager: f6209893e3974579109bf10b9df65fe1f024cc6f + ConsistencyManager: 72b8d918dfb257171fe45e994b45e3f38f6708fe -PODFILE CHECKSUM: e6242e3b997e6035fc5876eba5df08c1c3215ae8 +PODFILE CHECKSUM: d6b222e71d9bd556deaa65cc2bb16de3b0986e7a -COCOAPODS: 1.6.0.beta.1 +COCOAPODS: 1.7.0.rc.1 diff --git a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift index 5830866..0220280 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift @@ -181,7 +181,7 @@ open class ConsistencyManager { // This avoids the crash which occurs if someone calls this in deinit // If we lose a reference to it, it's ok since removing a listener isn't a key operation weak var listener = listener - if let index = self.pausedListeners.index(where: { listener === $0.listener }) { + if let index = self.pausedListeners.firstIndex(where: { listener === $0.listener }) { self.pausedListeners.remove(at: index) } dispatchTask { _ in @@ -234,7 +234,7 @@ open class ConsistencyManager { (i.e. has most recently called the pauseListener method) to a model */ open func resumeListener(_ listener: ConsistencyManagerListener) { - guard let index = pausedListeners.index(where: { listener === $0.listener }) else { + guard let index = pausedListeners.firstIndex(where: { listener === $0.listener }) else { return } let pausedListener = pausedListeners.remove(at: index) @@ -627,7 +627,7 @@ open class ConsistencyManager { DispatchQueue.main.sync { currentModels = listeners.map { listener in // If the listener is paused, then use the latest model (to which it has not officially listened) to do the transformation on later. - if let index = self.pausedListeners.index(where: { listener === $0.listener }) { + if let index = self.pausedListeners.firstIndex(where: { listener === $0.listener }) { return (listener, self.pausedListeners[index].updatedModel) } else { return (listener, listener.currentModel()) @@ -673,7 +673,7 @@ open class ConsistencyManager { // The next call to this function will take care of updating the model with more recent information. return } - if let index = self.pausedListeners.index(where: {listener === $0.listener}) { + if let index = self.pausedListeners.firstIndex(where: {listener === $0.listener}) { let mergedChangedModels = modelUpdates.changedModelIds.union(self.pausedListeners[index].modelUpdates.changedModelIds) let mergedDeletedModels = modelUpdates.deletedModelIds.union(self.pausedListeners[index].modelUpdates.deletedModelIds) let mergedUpdates = ModelUpdates(changedModelIds: mergedChangedModels, deletedModelIds: mergedDeletedModels) diff --git a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift b/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift index 921a3ce..37c1f69 100644 --- a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift +++ b/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift @@ -215,7 +215,7 @@ public extension ConsistencyManagerModel where Self: Equatable { This is a default implementation for isEqualToModel for models which are equatable. This can be overridden in subclasses if you don't want this default behavior. */ - public func isEqualToModel(_ other: ConsistencyManagerModel) -> Bool { + func isEqualToModel(_ other: ConsistencyManagerModel) -> Bool { if let other = other as? Self { return self == other } else { diff --git a/Pods/ConsistencyManager/README.md b/Pods/ConsistencyManager/README.md index b7eda12..fce5a31 100644 --- a/Pods/ConsistencyManager/README.md +++ b/Pods/ConsistencyManager/README.md @@ -62,7 +62,7 @@ https://plivesey.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. +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 4.2. | Swift Version | Consistency Manager Version | |---------------|------------------------------| @@ -72,6 +72,7 @@ We are currently not maintaining separate branches for different Swift versions. | 3 (Easy migration API) | 3.x.x | | 3 (Better API) | 4.x.x | | 4 | 5.1.1+ | +| 4.2 | 7.0.0 | 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 7873e88..ce999b7 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,16 +1,16 @@ PODS: - - ConsistencyManager (7.0.0) + - ConsistencyManager (8.0.0) DEPENDENCIES: - - ConsistencyManager (~> 7.0.0) + - ConsistencyManager (~> 8.0.0) SPEC REPOS: https://github.com/cocoapods/specs.git: - ConsistencyManager SPEC CHECKSUMS: - ConsistencyManager: f6209893e3974579109bf10b9df65fe1f024cc6f + ConsistencyManager: 72b8d918dfb257171fe45e994b45e3f38f6708fe -PODFILE CHECKSUM: e6242e3b997e6035fc5876eba5df08c1c3215ae8 +PODFILE CHECKSUM: d6b222e71d9bd556deaa65cc2bb16de3b0986e7a -COCOAPODS: 1.6.0.beta.1 +COCOAPODS: 1.7.0.rc.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 27d4c9b..4e8a67b 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,250 +7,250 @@ objects = { /* Begin PBXBuildFile section */ - 05B35533A0547DD0471C846BFFC1F043 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */; }; - 0C9ECF9FC34B5CF0C60B048166262686 /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F15CE41697344C2A35DFC834791C3786 /* ConsistencyManagerModel.swift */; }; - 13F05FAE9BB53755AF0590E41709CCE9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; - 2267435A90F9EFDFAB5581BE0C8095F1 /* ModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF654149B647AF0EFBE4E06EB29AE85D /* ModelChange.swift */; }; - 23E63FF1C23124C71F1E7AEBC14D2EA4 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E9F2FE8BE50356D478F128EF00B1E04 /* ModelUpdates.swift */; }; - 2A51D0DB50357B6C41D9CBB5F181CE30 /* TypeErasedWeakHolders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */; }; - 2EEA6279BB75E76C979252F1582EB6D4 /* Pods-RocketDataTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 21B114D36330832526A04433BC57CCB1 /* Pods-RocketDataTests-dummy.m */; }; - 43FD4DCA5BC75E8F291DF9A037539E1A /* Pods-RocketDataTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0055FC5683A3F67A0D310CC970024ADE /* Pods-RocketDataTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4E84117CE35C34AF1E0A1FA78304BC32 /* Pods-RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F20676343DA0DA79F24E237038825DA4 /* Pods-RocketData-dummy.m */; }; - 57CA270C9864F6DD8DC1AF27686DF986 /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D8E3ED8C82CF99668578943B06F779C3 /* ConsistencyManager-dummy.m */; }; - 5F0283586E9BF8797C69BD7E2A513CDB /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4488732A640B0CA0563771E757B590F7 /* ConsistencyManagerDelegate.swift */; }; - 845007C350B76A79DE42511F549A49FA /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */; }; - 939C808B5AAFBC5998B016BA55BB9F9E /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C51B93EFE53A618B6D99B67BCDA17F7B /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 96D0A024B7ECC4D89D4CFAC5ACEFD66D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; - 9B2E2BC14E97E86929C78B7C633CDC3A /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */; }; - 9ED6D433C2599ED87508A0197AFA3FCD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC2C02191C153C1554B35DEE8B2D09D4 /* UIKit.framework */; }; - A09D146346D2B04E9D9098969DB62480 /* Pods-RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C2A8093513B73581EC78019640BD7D5 /* Pods-RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A43FDF5FF4FB9B42BF7C0DBB872A54D1 /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */; }; - ADB130C4205457AC1A1FC3A2C7F42D7F /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17F50305EFF1336458DB721E18C3AEC5 /* CollectionHelpers.swift */; }; - B256EA38DA613681B2E7F174C2A22AAD /* WeakBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */; }; - B61EC74E4F5D08BB1A95BD9314402C1C /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05A0C2047B975238584455CCEB992E58 /* ConsistencyManagerListener.swift */; }; - C1B6BDF2CB6C1B45C96B56E63A12CFBD /* Array+Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37F300E88B2CA90D3A3D10A6870FB9C6 /* Array+Weak.swift */; }; - D148C9BA38D9C382597E69352C0CDC93 /* WeakHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */; }; - D73D26F3F15143620C69F6476875EAD5 /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = B05401DC4854691A4F1241428F9578FE /* BatchListener.swift */; }; - E33F594DEB8660468F7F57EB4B7CD16B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; - EB91FB625D549C02049A6459A15BE454 /* ConsistencyManagerUpdatesListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F07F9958F8B878BAFFD46112074114F /* ConsistencyManagerUpdatesListener.swift */; }; + 096D3214758AB1516D7570572F7F8CED /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 403C16B498A9FF3368E5C888B4B57733 /* CollectionHelpers.swift */; }; + 135257C5F41669F741F52300ACB0AA8D /* Pods-RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D340C372127CC59E5373BAB0CF2C49A5 /* Pods-RocketData-dummy.m */; }; + 155ACE024BA90B03AF089BF42BDEC3D4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 436BAA54A31999B53B3CC7115C55FE50 /* Foundation.framework */; }; + 1F27AA0E76EE38B94BF0A9CDD8D8DF26 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1BFAB07A0F274626607107618CF7C2E /* ErrorManager.swift */; }; + 20CF416C0BC5094FD04CD806947D7EDE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 436BAA54A31999B53B3CC7115C55FE50 /* Foundation.framework */; }; + 3A792FDABEB17883D1EDE7326696DDBC /* ConsistencyManagerUpdatesListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6693F0F8989F33F2E6F83A1DDBF0B8C5 /* ConsistencyManagerUpdatesListener.swift */; }; + 3A7D3921D8AD2849D8C6A047B64DF6BF /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8242798BEA8137C0C98800E91F208AF /* ConsistencyManager.swift */; }; + 4BC0164C51F764C2580B1CCE8A12076A /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 83527CB5C20FDE02E289DFD5CD13A351 /* ConsistencyManager-dummy.m */; }; + 4DB345DC3B211BD1E70D19BCE8FB24F9 /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89CFBAF4D94D0216654159F6C2051E40 /* ConsistencyManagerModel.swift */; }; + 520BC8064D1E81C7E9DE9F3B7D2CD283 /* ModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABC72F2046FC8B5DED31AD47BB849736 /* ModelChange.swift */; }; + 521972E2CF95DF62944579607D5A3F10 /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7109573D89D02222B47CB5BD28729400 /* ConsistencyManagerDelegate.swift */; }; + 60759F9EE82941AADF6CEB261CB0FDC5 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EF35FC03251881D1E73F966EF6CE5D88 /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 733D9E885CBD5474EA80522796914931 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 436BAA54A31999B53B3CC7115C55FE50 /* Foundation.framework */; }; + 7CD701DF4FD76F8DDAF6C0D464804146 /* WeakHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E1FD748044BEA182A208A30CC1355B /* WeakHolder.swift */; }; + 8F4EA96F63468B6A3BF6B37E1C9876DA /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F3817F768DAE7E8C0D9E6EF22504472 /* BatchListener.swift */; }; + 918CEB835A71DF5A67B5252CE4AC6057 /* TypeErasedWeakHolders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D736BFA797CFAE2501F3CEA5EB38F9E /* TypeErasedWeakHolders.swift */; }; + 92F94274FE5DD7DA39A788C9A954A179 /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EE384C3FC25B0274E08E2C73A9E9C19 /* BatchUpdateModel.swift */; }; + A345B450D9ACF154E2401282CCFAF5F4 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3514BB6DC9A685E6EA6BA1F4900DE124 /* ModelUpdates.swift */; }; + B0D2FEE893185B564CC3F0805F2C6AA5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 312B988EF117AE4DE76A268D970131FE /* UIKit.framework */; }; + B4407815711A033E78DB5D0553117695 /* Array+Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B023E307D1913693E67182633E0A06B4 /* Array+Weak.swift */; }; + B8AA9C2382BBE8A30CCC7BC72F977802 /* WeakBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF328F8B6CFC9E4102C3663F992ADECA /* WeakBox.swift */; }; + C230449792ACADA6D77F8081E7657CD5 /* Pods-RocketDataTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42C28242A9A86C2763FD411F202A57 /* Pods-RocketDataTests-dummy.m */; }; + ECE413B0C91F7A43DB91AA66807458DD /* Pods-RocketDataTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5ED426C1F85569F2BD93B5F9BEF9E041 /* Pods-RocketDataTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2BBCAF256CFEB2B1F3963928F3624D7 /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F4AB47908C6228A4723A53E6EFDB552 /* WeakArray.swift */; }; + F6F3C64F28A0419F7459F760159CE37F /* Pods-RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 52CC66DA6B7A5A0FF1847B7A4DD6F1C2 /* Pods-RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FD26FCD27C56C0218DEE5DEEA174FF4F /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCBDA88A156B88E6F8AF18B4FF09E7B0 /* ConsistencyManagerListener.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 8E088FF873447ED8DBE9248B0F596406 /* PBXContainerItemProxy */ = { + 8E96A00153A419C6589B32F1788D071C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2FD7AD31842596051CCB9958DFCEC67A; + remoteGlobalIDString = D1DE7D34A6BD71FF12B4E92841E9A434; remoteInfo = ConsistencyManager; }; - 984FB88BCE156A742B6B4B03AD7FEB95 /* PBXContainerItemProxy */ = { + BF640D23EE254C107A2D30B9687FF7E7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2FD7AD31842596051CCB9958DFCEC67A; + remoteGlobalIDString = D1DE7D34A6BD71FF12B4E92841E9A434; remoteInfo = ConsistencyManager; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0055FC5683A3F67A0D310CC970024ADE /* Pods-RocketDataTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketDataTests-umbrella.h"; sourceTree = ""; }; - 01E6BFAD5F2A35A8016BE0150437B4E2 /* Pods-RocketDataTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.debug.xcconfig"; sourceTree = ""; }; - 05A0C2047B975238584455CCEB992E58 /* ConsistencyManagerListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerListener.swift; sourceTree = ""; }; - 06568BBF1399743EE1B19A890E0B84EE /* Pods-RocketDataTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketDataTests-acknowledgements.markdown"; sourceTree = ""; }; - 0C2A8093513B73581EC78019640BD7D5 /* Pods-RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketData-umbrella.h"; sourceTree = ""; }; - 129F97D6BF6342A050FA9187E581A26B /* Pods-RocketData.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.debug.xcconfig"; sourceTree = ""; }; - 17F50305EFF1336458DB721E18C3AEC5 /* CollectionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionHelpers.swift; path = ConsistencyManager/Helpers/CollectionHelpers.swift; sourceTree = ""; }; - 197499414DC01353345D4FCC7B7F4C20 /* ConsistencyManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ConsistencyManager-Info.plist"; sourceTree = ""; }; - 21B114D36330832526A04433BC57CCB1 /* Pods-RocketDataTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketDataTests-dummy.m"; sourceTree = ""; }; - 2F07F9958F8B878BAFFD46112074114F /* ConsistencyManagerUpdatesListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerUpdatesListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift; sourceTree = ""; }; - 37F300E88B2CA90D3A3D10A6870FB9C6 /* Array+Weak.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Weak.swift"; path = "ConsistencyManager/DataStructures/Array+Weak.swift"; sourceTree = ""; }; - 39B08B48CFE331CFB558F4952002FC73 /* Pods-RocketDataTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-acknowledgements.plist"; sourceTree = ""; }; - 4488732A640B0CA0563771E757B590F7 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; - 4C26296B08F0F009C7F5D210D821E36E /* Pods-RocketDataTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RocketDataTests.modulemap"; sourceTree = ""; }; - 59218D9136E2AB3165CC20DBC0C31850 /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; - 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; sourceTree = ""; }; - 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TypeErasedWeakHolders.swift; path = ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift; sourceTree = ""; }; - 857F44A144AAC4157786145DA04E61B7 /* Pods-RocketDataTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.release.xcconfig"; sourceTree = ""; }; - 85F646650D2CB8D60E0A9B610A5C3CDB /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ConsistencyManager.framework; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8FC341751578F136D2BCDD25B75DD47D /* Pods-RocketData-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketData-Info.plist"; sourceTree = ""; }; - 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 94BF3A5610A4DDF5B6E1CC06709758FA /* Pods-RocketData.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.release.xcconfig"; sourceTree = ""; }; - 9E9F2FE8BE50356D478F128EF00B1E04 /* ModelUpdates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelUpdates.swift; path = ConsistencyManager/DataStructures/ModelUpdates.swift; sourceTree = ""; }; - 9ED23AF9DC693ED95F963C33D83DF07D /* Pods_RocketDataTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketDataTests.framework; path = "Pods-RocketDataTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - B05401DC4854691A4F1241428F9578FE /* BatchListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchListener.swift; path = ConsistencyManager/DataStructures/BatchListener.swift; sourceTree = ""; }; - B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; - B4486E390C3341A54D024676ADB7D077 /* Pods_RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketData.framework; path = "Pods-RocketData.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - BC2C02191C153C1554B35DEE8B2D09D4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakHolder.swift; path = ConsistencyManager/DataStructures/WeakHolder.swift; sourceTree = ""; }; - BFD9A0C901E8D4CBEE41BA1B16D91CFE /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ConsistencyManager.modulemap; sourceTree = ""; }; - C4B6A167C9F790C6C7E6ED3EDF220597 /* Pods-RocketDataTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-Info.plist"; sourceTree = ""; }; - C51B93EFE53A618B6D99B67BCDA17F7B /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; - CE598E3A129387D64A06CECF2EE9243B /* Pods-RocketData-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketData-acknowledgements.markdown"; sourceTree = ""; }; - D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakArray.swift; path = ConsistencyManager/DataStructures/WeakArray.swift; sourceTree = ""; }; - D27B3EB74397010EDCFF02BD803317F3 /* Pods-RocketDataTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-frameworks.sh"; sourceTree = ""; }; - D8E3ED8C82CF99668578943B06F779C3 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; - DBC6C8602C75BB592E6447BC6A674D7B /* Pods-RocketData-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketData-acknowledgements.plist"; sourceTree = ""; }; - E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManager.swift; path = ConsistencyManager/ConsistencyManager.swift; sourceTree = ""; }; - EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakBox.swift; path = ConsistencyManager/DataStructures/WeakBox.swift; sourceTree = ""; }; - F15CE41697344C2A35DFC834791C3786 /* ConsistencyManagerModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerModel.swift; path = ConsistencyManager/Protocols/ConsistencyManagerModel.swift; sourceTree = ""; }; - F20676343DA0DA79F24E237038825DA4 /* Pods-RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketData-dummy.m"; sourceTree = ""; }; - F5342A4A23494E7A2C166939C048CBE1 /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; - F5792B633BC8CE5C5EE9590B5068D459 /* Pods-RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RocketData.modulemap"; sourceTree = ""; }; - FF654149B647AF0EFBE4E06EB29AE85D /* ModelChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelChange.swift; path = ConsistencyManager/DataStructures/ModelChange.swift; sourceTree = ""; }; + 013077F3606B5A64AFBACC568D689A18 /* Pods-RocketData.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.release.xcconfig"; sourceTree = ""; }; + 04E1FD748044BEA182A208A30CC1355B /* WeakHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakHolder.swift; path = ConsistencyManager/DataStructures/WeakHolder.swift; sourceTree = ""; }; + 0B767C2C8FA6B8A4BE7C5F0994A8B722 /* Pods-RocketData-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketData-Info.plist"; sourceTree = ""; }; + 0CAEF038E86648102695019F9114D566 /* Pods-RocketDataTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RocketDataTests.modulemap"; sourceTree = ""; }; + 15FFE704EF0FD265BBBA7220CDC88FC6 /* Pods-RocketData-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketData-acknowledgements.plist"; sourceTree = ""; }; + 16863B11B39FA44E49A6558262B27507 /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; + 312B988EF117AE4DE76A268D970131FE /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 3514BB6DC9A685E6EA6BA1F4900DE124 /* ModelUpdates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelUpdates.swift; path = ConsistencyManager/DataStructures/ModelUpdates.swift; sourceTree = ""; }; + 39DF10DEE1D2CA5A0236DD40AD30BED8 /* Pods-RocketData.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.debug.xcconfig"; sourceTree = ""; }; + 403C16B498A9FF3368E5C888B4B57733 /* CollectionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionHelpers.swift; path = ConsistencyManager/Helpers/CollectionHelpers.swift; sourceTree = ""; }; + 436BAA54A31999B53B3CC7115C55FE50 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 44504367C91E4153A01235EF0B1C4002 /* Pods_RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketData.framework; path = "Pods-RocketData.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 465F44739270AA41B7D861C54DF93215 /* Pods-RocketDataTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-Info.plist"; sourceTree = ""; }; + 4AB35ECAC73E59E9496697EA89019B3B /* Pods-RocketData-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketData-acknowledgements.markdown"; sourceTree = ""; }; + 4B7AAB611249D3815116230A822DB89B /* ConsistencyManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ConsistencyManager-Info.plist"; sourceTree = ""; }; + 52CC66DA6B7A5A0FF1847B7A4DD6F1C2 /* Pods-RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketData-umbrella.h"; sourceTree = ""; }; + 5ED426C1F85569F2BD93B5F9BEF9E041 /* Pods-RocketDataTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketDataTests-umbrella.h"; sourceTree = ""; }; + 6693F0F8989F33F2E6F83A1DDBF0B8C5 /* ConsistencyManagerUpdatesListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerUpdatesListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift; sourceTree = ""; }; + 6D817650A90791EE8896BA9AA20A3111 /* Pods-RocketDataTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.debug.xcconfig"; sourceTree = ""; }; + 6F4AB47908C6228A4723A53E6EFDB552 /* WeakArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakArray.swift; path = ConsistencyManager/DataStructures/WeakArray.swift; sourceTree = ""; }; + 701E192E48082B5BE7484EDEBCFACBB2 /* Pods_RocketDataTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketDataTests.framework; path = "Pods-RocketDataTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 7109573D89D02222B47CB5BD28729400 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; + 772932F2657878A99FE030A411CE7AE5 /* Pods-RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RocketData.modulemap"; sourceTree = ""; }; + 7D736BFA797CFAE2501F3CEA5EB38F9E /* TypeErasedWeakHolders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TypeErasedWeakHolders.swift; path = ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift; sourceTree = ""; }; + 8267E58D66CDE7A750AC589E88716E18 /* Pods-RocketDataTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.release.xcconfig"; sourceTree = ""; }; + 8297AEF4CD92D094A78F43E9827910D9 /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; + 83527CB5C20FDE02E289DFD5CD13A351 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; + 89CFBAF4D94D0216654159F6C2051E40 /* ConsistencyManagerModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerModel.swift; path = ConsistencyManager/Protocols/ConsistencyManagerModel.swift; sourceTree = ""; }; + 8F3817F768DAE7E8C0D9E6EF22504472 /* BatchListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchListener.swift; path = ConsistencyManager/DataStructures/BatchListener.swift; sourceTree = ""; }; + 9092056A953B675AB011E5CF82866B7E /* Pods-RocketDataTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-acknowledgements.plist"; sourceTree = ""; }; + 9B42C28242A9A86C2763FD411F202A57 /* Pods-RocketDataTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketDataTests-dummy.m"; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9EE384C3FC25B0274E08E2C73A9E9C19 /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; sourceTree = ""; }; + ABC72F2046FC8B5DED31AD47BB849736 /* ModelChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelChange.swift; path = ConsistencyManager/DataStructures/ModelChange.swift; sourceTree = ""; }; + AF328F8B6CFC9E4102C3663F992ADECA /* WeakBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakBox.swift; path = ConsistencyManager/DataStructures/WeakBox.swift; sourceTree = ""; }; + B023E307D1913693E67182633E0A06B4 /* Array+Weak.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Weak.swift"; path = "ConsistencyManager/DataStructures/Array+Weak.swift"; sourceTree = ""; }; + B39B869674A3A184E274471A2B9604AC /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ConsistencyManager.modulemap; sourceTree = ""; }; + B8D78D956C4EE049F7EB5D18A8D6DEFD /* Pods-RocketDataTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-frameworks.sh"; sourceTree = ""; }; + BB966CDE876494B33ECE3CF42BA4E564 /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ConsistencyManager.framework; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BCBDA88A156B88E6F8AF18B4FF09E7B0 /* ConsistencyManagerListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerListener.swift; sourceTree = ""; }; + C8242798BEA8137C0C98800E91F208AF /* ConsistencyManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManager.swift; path = ConsistencyManager/ConsistencyManager.swift; sourceTree = ""; }; + D340C372127CC59E5373BAB0CF2C49A5 /* Pods-RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketData-dummy.m"; sourceTree = ""; }; + EF35FC03251881D1E73F966EF6CE5D88 /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; + F1BFAB07A0F274626607107618CF7C2E /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; + FDF035CDB9B71B5A5BCB96C472E86976 /* Pods-RocketDataTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketDataTests-acknowledgements.markdown"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 39A3737CC8A74690CAE226C86F987C71 /* Frameworks */ = { + 629BDAE7D0EEEA3D0414EA17F9FE8DCE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 13F05FAE9BB53755AF0590E41709CCE9 /* Foundation.framework in Frameworks */, + 733D9E885CBD5474EA80522796914931 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - B87A7965465C16EC4E0A3C07C4BC4D6D /* Frameworks */ = { + 653AC629F5C6846C17D8F86D8B71A4E5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 96D0A024B7ECC4D89D4CFAC5ACEFD66D /* Foundation.framework in Frameworks */, - 9ED6D433C2599ED87508A0197AFA3FCD /* UIKit.framework in Frameworks */, + 20CF416C0BC5094FD04CD806947D7EDE /* Foundation.framework in Frameworks */, + B0D2FEE893185B564CC3F0805F2C6AA5 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BF4740A20EA805D33801C6FD708F549C /* Frameworks */ = { + B81A8B2EC230BCB26108BCDF5572D827 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E33F594DEB8660468F7F57EB4B7CD16B /* Foundation.framework in Frameworks */, + 155ACE024BA90B03AF089BF42BDEC3D4 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 10DEDCB394BAA0C7FEDEBE330207B074 /* iOS */ = { + 07B5A722A3D0DE861A5B381D44A0E9A8 /* ConsistencyManager */ = { isa = PBXGroup; children = ( - 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */, - BC2C02191C153C1554B35DEE8B2D09D4 /* UIKit.framework */, + B023E307D1913693E67182633E0A06B4 /* Array+Weak.swift */, + 8F3817F768DAE7E8C0D9E6EF22504472 /* BatchListener.swift */, + 9EE384C3FC25B0274E08E2C73A9E9C19 /* BatchUpdateModel.swift */, + 403C16B498A9FF3368E5C888B4B57733 /* CollectionHelpers.swift */, + C8242798BEA8137C0C98800E91F208AF /* ConsistencyManager.swift */, + 7109573D89D02222B47CB5BD28729400 /* ConsistencyManagerDelegate.swift */, + BCBDA88A156B88E6F8AF18B4FF09E7B0 /* ConsistencyManagerListener.swift */, + 89CFBAF4D94D0216654159F6C2051E40 /* ConsistencyManagerModel.swift */, + 6693F0F8989F33F2E6F83A1DDBF0B8C5 /* ConsistencyManagerUpdatesListener.swift */, + F1BFAB07A0F274626607107618CF7C2E /* ErrorManager.swift */, + ABC72F2046FC8B5DED31AD47BB849736 /* ModelChange.swift */, + 3514BB6DC9A685E6EA6BA1F4900DE124 /* ModelUpdates.swift */, + 7D736BFA797CFAE2501F3CEA5EB38F9E /* TypeErasedWeakHolders.swift */, + 6F4AB47908C6228A4723A53E6EFDB552 /* WeakArray.swift */, + AF328F8B6CFC9E4102C3663F992ADECA /* WeakBox.swift */, + 04E1FD748044BEA182A208A30CC1355B /* WeakHolder.swift */, + F50236A3B5A8C3920152D85CA515A593 /* Support Files */, ); - name = iOS; + name = ConsistencyManager; + path = ConsistencyManager; sourceTree = ""; }; - 4286189E81E556AC82787B67D23C7B76 /* Pods-RocketDataTests */ = { + 108772AB9A6951688BF2EA19AD90C01C /* Targets Support Files */ = { isa = PBXGroup; children = ( - 4C26296B08F0F009C7F5D210D821E36E /* Pods-RocketDataTests.modulemap */, - 06568BBF1399743EE1B19A890E0B84EE /* Pods-RocketDataTests-acknowledgements.markdown */, - 39B08B48CFE331CFB558F4952002FC73 /* Pods-RocketDataTests-acknowledgements.plist */, - 21B114D36330832526A04433BC57CCB1 /* Pods-RocketDataTests-dummy.m */, - D27B3EB74397010EDCFF02BD803317F3 /* Pods-RocketDataTests-frameworks.sh */, - C4B6A167C9F790C6C7E6ED3EDF220597 /* Pods-RocketDataTests-Info.plist */, - 0055FC5683A3F67A0D310CC970024ADE /* Pods-RocketDataTests-umbrella.h */, - 01E6BFAD5F2A35A8016BE0150437B4E2 /* Pods-RocketDataTests.debug.xcconfig */, - 857F44A144AAC4157786145DA04E61B7 /* Pods-RocketDataTests.release.xcconfig */, + 44C4A948BE74B65B0E7268E22812F1EA /* Pods-RocketData */, + 47336A594B8CB466CB11B40910FA8CBB /* Pods-RocketDataTests */, ); - name = "Pods-RocketDataTests"; - path = "Target Support Files/Pods-RocketDataTests"; + name = "Targets Support Files"; sourceTree = ""; }; - 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { isa = PBXGroup; children = ( - 10DEDCB394BAA0C7FEDEBE330207B074 /* iOS */, + E2983683FD097A93297E2F5D4E382B36 /* iOS */, ); name = Frameworks; sourceTree = ""; }; - 76D721B535F72D6F714AFAB1A05514EA /* Pods */ = { + 379EC15162E73D6CC4955B0ED88B593C /* Pods */ = { isa = PBXGroup; children = ( - 9251B0A8965ECB686FEE0C60D7CC8E8B /* ConsistencyManager */, + 07B5A722A3D0DE861A5B381D44A0E9A8 /* ConsistencyManager */, ); name = Pods; sourceTree = ""; }; - 7B62B345BCA21EF6F1741DC37C7EBEC7 /* Pods-RocketData */ = { + 44C4A948BE74B65B0E7268E22812F1EA /* Pods-RocketData */ = { isa = PBXGroup; children = ( - F5792B633BC8CE5C5EE9590B5068D459 /* Pods-RocketData.modulemap */, - CE598E3A129387D64A06CECF2EE9243B /* Pods-RocketData-acknowledgements.markdown */, - DBC6C8602C75BB592E6447BC6A674D7B /* Pods-RocketData-acknowledgements.plist */, - F20676343DA0DA79F24E237038825DA4 /* Pods-RocketData-dummy.m */, - 8FC341751578F136D2BCDD25B75DD47D /* Pods-RocketData-Info.plist */, - 0C2A8093513B73581EC78019640BD7D5 /* Pods-RocketData-umbrella.h */, - 129F97D6BF6342A050FA9187E581A26B /* Pods-RocketData.debug.xcconfig */, - 94BF3A5610A4DDF5B6E1CC06709758FA /* Pods-RocketData.release.xcconfig */, + 772932F2657878A99FE030A411CE7AE5 /* Pods-RocketData.modulemap */, + 4AB35ECAC73E59E9496697EA89019B3B /* Pods-RocketData-acknowledgements.markdown */, + 15FFE704EF0FD265BBBA7220CDC88FC6 /* Pods-RocketData-acknowledgements.plist */, + D340C372127CC59E5373BAB0CF2C49A5 /* Pods-RocketData-dummy.m */, + 0B767C2C8FA6B8A4BE7C5F0994A8B722 /* Pods-RocketData-Info.plist */, + 52CC66DA6B7A5A0FF1847B7A4DD6F1C2 /* Pods-RocketData-umbrella.h */, + 39DF10DEE1D2CA5A0236DD40AD30BED8 /* Pods-RocketData.debug.xcconfig */, + 013077F3606B5A64AFBACC568D689A18 /* Pods-RocketData.release.xcconfig */, ); name = "Pods-RocketData"; path = "Target Support Files/Pods-RocketData"; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 47336A594B8CB466CB11B40910FA8CBB /* Pods-RocketDataTests */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - 433CD3331B6C3787F473C941B61FC68F /* Frameworks */, - 76D721B535F72D6F714AFAB1A05514EA /* Pods */, - A7FBE01DFB35645CFAE846405EBBF44C /* Products */, - 94A674C002A793512AF337EF53A556AD /* Targets Support Files */, + 0CAEF038E86648102695019F9114D566 /* Pods-RocketDataTests.modulemap */, + FDF035CDB9B71B5A5BCB96C472E86976 /* Pods-RocketDataTests-acknowledgements.markdown */, + 9092056A953B675AB011E5CF82866B7E /* Pods-RocketDataTests-acknowledgements.plist */, + 9B42C28242A9A86C2763FD411F202A57 /* Pods-RocketDataTests-dummy.m */, + B8D78D956C4EE049F7EB5D18A8D6DEFD /* Pods-RocketDataTests-frameworks.sh */, + 465F44739270AA41B7D861C54DF93215 /* Pods-RocketDataTests-Info.plist */, + 5ED426C1F85569F2BD93B5F9BEF9E041 /* Pods-RocketDataTests-umbrella.h */, + 6D817650A90791EE8896BA9AA20A3111 /* Pods-RocketDataTests.debug.xcconfig */, + 8267E58D66CDE7A750AC589E88716E18 /* Pods-RocketDataTests.release.xcconfig */, ); + name = "Pods-RocketDataTests"; + path = "Target Support Files/Pods-RocketDataTests"; sourceTree = ""; }; - 9251B0A8965ECB686FEE0C60D7CC8E8B /* ConsistencyManager */ = { + A4CFA9CDE3A2F28C9D2218B404B334E1 /* Products */ = { isa = PBXGroup; children = ( - 37F300E88B2CA90D3A3D10A6870FB9C6 /* Array+Weak.swift */, - B05401DC4854691A4F1241428F9578FE /* BatchListener.swift */, - 60616A2B1762B11D21A04EE2ADB290B1 /* BatchUpdateModel.swift */, - 17F50305EFF1336458DB721E18C3AEC5 /* CollectionHelpers.swift */, - E2104CA089AC1E46072788D6BC3F5166 /* ConsistencyManager.swift */, - 4488732A640B0CA0563771E757B590F7 /* ConsistencyManagerDelegate.swift */, - 05A0C2047B975238584455CCEB992E58 /* ConsistencyManagerListener.swift */, - F15CE41697344C2A35DFC834791C3786 /* ConsistencyManagerModel.swift */, - 2F07F9958F8B878BAFFD46112074114F /* ConsistencyManagerUpdatesListener.swift */, - B1E628A750AC1C4B82FC5F3673EFD815 /* ErrorManager.swift */, - FF654149B647AF0EFBE4E06EB29AE85D /* ModelChange.swift */, - 9E9F2FE8BE50356D478F128EF00B1E04 /* ModelUpdates.swift */, - 807E7CE8FD034D2049AD2B965AE7919A /* TypeErasedWeakHolders.swift */, - D01E65062A21731ED7F0210C6AF9759B /* WeakArray.swift */, - EB8955C95C41A875C6D1F3D5206D82EF /* WeakBox.swift */, - BF340CB1AADCB79D6FC48AFD59DD8072 /* WeakHolder.swift */, - FC1DEA1999FC97C5ECCC86A8FF71423E /* Support Files */, + BB966CDE876494B33ECE3CF42BA4E564 /* ConsistencyManager.framework */, + 44504367C91E4153A01235EF0B1C4002 /* Pods_RocketData.framework */, + 701E192E48082B5BE7484EDEBCFACBB2 /* Pods_RocketDataTests.framework */, ); - name = ConsistencyManager; - path = ConsistencyManager; + name = Products; sourceTree = ""; }; - 94A674C002A793512AF337EF53A556AD /* Targets Support Files */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - 7B62B345BCA21EF6F1741DC37C7EBEC7 /* Pods-RocketData */, - 4286189E81E556AC82787B67D23C7B76 /* Pods-RocketDataTests */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, + 379EC15162E73D6CC4955B0ED88B593C /* Pods */, + A4CFA9CDE3A2F28C9D2218B404B334E1 /* Products */, + 108772AB9A6951688BF2EA19AD90C01C /* Targets Support Files */, ); - name = "Targets Support Files"; sourceTree = ""; }; - A7FBE01DFB35645CFAE846405EBBF44C /* Products */ = { + E2983683FD097A93297E2F5D4E382B36 /* iOS */ = { isa = PBXGroup; children = ( - 85F646650D2CB8D60E0A9B610A5C3CDB /* ConsistencyManager.framework */, - B4486E390C3341A54D024676ADB7D077 /* Pods_RocketData.framework */, - 9ED23AF9DC693ED95F963C33D83DF07D /* Pods_RocketDataTests.framework */, + 436BAA54A31999B53B3CC7115C55FE50 /* Foundation.framework */, + 312B988EF117AE4DE76A268D970131FE /* UIKit.framework */, ); - name = Products; + name = iOS; sourceTree = ""; }; - FC1DEA1999FC97C5ECCC86A8FF71423E /* Support Files */ = { + F50236A3B5A8C3920152D85CA515A593 /* Support Files */ = { isa = PBXGroup; children = ( - BFD9A0C901E8D4CBEE41BA1B16D91CFE /* ConsistencyManager.modulemap */, - 59218D9136E2AB3165CC20DBC0C31850 /* ConsistencyManager.xcconfig */, - D8E3ED8C82CF99668578943B06F779C3 /* ConsistencyManager-dummy.m */, - 197499414DC01353345D4FCC7B7F4C20 /* ConsistencyManager-Info.plist */, - F5342A4A23494E7A2C166939C048CBE1 /* ConsistencyManager-prefix.pch */, - C51B93EFE53A618B6D99B67BCDA17F7B /* ConsistencyManager-umbrella.h */, + B39B869674A3A184E274471A2B9604AC /* ConsistencyManager.modulemap */, + 8297AEF4CD92D094A78F43E9827910D9 /* ConsistencyManager.xcconfig */, + 83527CB5C20FDE02E289DFD5CD13A351 /* ConsistencyManager-dummy.m */, + 4B7AAB611249D3815116230A822DB89B /* ConsistencyManager-Info.plist */, + 16863B11B39FA44E49A6558262B27507 /* ConsistencyManager-prefix.pch */, + EF35FC03251881D1E73F966EF6CE5D88 /* ConsistencyManager-umbrella.h */, ); name = "Support Files"; path = "../Target Support Files/ConsistencyManager"; @@ -259,133 +259,133 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 17E6EB5C9C7598BEBCC8C5FC3B03F0F6 /* Headers */ = { + BA2E0C94670C9338A1A97810CB4EEDEB /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - A09D146346D2B04E9D9098969DB62480 /* Pods-RocketData-umbrella.h in Headers */, + 60759F9EE82941AADF6CEB261CB0FDC5 /* ConsistencyManager-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8010CDEBD35D08A151DEBB043D8FD7B5 /* Headers */ = { + E42EED3501C08B39696E3040EC2499AB /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 43FD4DCA5BC75E8F291DF9A037539E1A /* Pods-RocketDataTests-umbrella.h in Headers */, + ECE413B0C91F7A43DB91AA66807458DD /* Pods-RocketDataTests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - A090FDD01AE6AF1502D55FE2341125D0 /* Headers */ = { + EDDCD7740F31B3482E28253726D15429 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 939C808B5AAFBC5998B016BA55BB9F9E /* ConsistencyManager-umbrella.h in Headers */, + F6F3C64F28A0419F7459F760159CE37F /* Pods-RocketData-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 2FD7AD31842596051CCB9958DFCEC67A /* ConsistencyManager */ = { + A0CD4481F87878BF321A914A7E919CAF /* Pods-RocketData */ = { isa = PBXNativeTarget; - buildConfigurationList = 4D08CE93465F824C5C0BF8274EF90D9E /* Build configuration list for PBXNativeTarget "ConsistencyManager" */; + buildConfigurationList = 6E0FDAD908BFD82400E355B06F98A4E4 /* Build configuration list for PBXNativeTarget "Pods-RocketData" */; buildPhases = ( - A090FDD01AE6AF1502D55FE2341125D0 /* Headers */, - 3EE25B59750D854EA891DBBB710B84D7 /* Sources */, - B87A7965465C16EC4E0A3C07C4BC4D6D /* Frameworks */, - 6A4CFFFFE016ED4D88CB516973E09096 /* Resources */, + EDDCD7740F31B3482E28253726D15429 /* Headers */, + BE019C567DDEB0ABBBCD306385F8C47C /* Sources */, + 629BDAE7D0EEEA3D0414EA17F9FE8DCE /* Frameworks */, + 38EB3315C9C5244CA965F7BD2DB47810 /* Resources */, ); buildRules = ( ); dependencies = ( + C49CFAF85CAD0B3C4A0EE6D51BCC3153 /* PBXTargetDependency */, ); - name = ConsistencyManager; - productName = ConsistencyManager; - productReference = 85F646650D2CB8D60E0A9B610A5C3CDB /* ConsistencyManager.framework */; + name = "Pods-RocketData"; + productName = "Pods-RocketData"; + productReference = 44504367C91E4153A01235EF0B1C4002 /* Pods_RocketData.framework */; productType = "com.apple.product-type.framework"; }; - 57A35791766425C77885F0E029F15585 /* Pods-RocketData */ = { + D1DE7D34A6BD71FF12B4E92841E9A434 /* ConsistencyManager */ = { isa = PBXNativeTarget; - buildConfigurationList = AC569550E7E33D16C6936BF16C9671D5 /* Build configuration list for PBXNativeTarget "Pods-RocketData" */; + buildConfigurationList = DC8137B93DD7C942D9316592E04A88AD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */; buildPhases = ( - 17E6EB5C9C7598BEBCC8C5FC3B03F0F6 /* Headers */, - 27EC284B368AD5617D0B877376799C5A /* Sources */, - 39A3737CC8A74690CAE226C86F987C71 /* Frameworks */, - A01E85E32C74883A6BEB8142480BD29B /* Resources */, + BA2E0C94670C9338A1A97810CB4EEDEB /* Headers */, + 659ED923E39781CA28FECC7669DE3F80 /* Sources */, + 653AC629F5C6846C17D8F86D8B71A4E5 /* Frameworks */, + EAB1E811D8A7BD6D590A1C59F7650249 /* Resources */, ); buildRules = ( ); dependencies = ( - 6ECD14F0523B86489EE6570C52F3F4FF /* PBXTargetDependency */, ); - name = "Pods-RocketData"; - productName = "Pods-RocketData"; - productReference = B4486E390C3341A54D024676ADB7D077 /* Pods_RocketData.framework */; + name = ConsistencyManager; + productName = ConsistencyManager; + productReference = BB966CDE876494B33ECE3CF42BA4E564 /* ConsistencyManager.framework */; productType = "com.apple.product-type.framework"; }; - 84FB67F4465E0B938B946463CA87C257 /* Pods-RocketDataTests */ = { + DEBED1B025AF68D8BDD2524AA80FAAE5 /* Pods-RocketDataTests */ = { isa = PBXNativeTarget; - buildConfigurationList = BA5C34F5074487978C60F395D7A37FD0 /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */; + buildConfigurationList = E46EB2934101341C7C0FC6F8D749CD7B /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */; buildPhases = ( - 8010CDEBD35D08A151DEBB043D8FD7B5 /* Headers */, - 1E89F44917216EFAB8EA75F4565EC44E /* Sources */, - BF4740A20EA805D33801C6FD708F549C /* Frameworks */, - 343BA70A6CDFAB1FB9843DC7E9B33018 /* Resources */, + E42EED3501C08B39696E3040EC2499AB /* Headers */, + 8C83FAB456A91D0582B8FD5CEC7EC029 /* Sources */, + B81A8B2EC230BCB26108BCDF5572D827 /* Frameworks */, + 31AB07A8429984664F8233DD1415980F /* Resources */, ); buildRules = ( ); dependencies = ( - ED7312B0F15E37BA4A96F5FE23471194 /* PBXTargetDependency */, + 3451E1B23E1ABE03DBC8D79EA14E0C2E /* PBXTargetDependency */, ); name = "Pods-RocketDataTests"; productName = "Pods-RocketDataTests"; - productReference = 9ED23AF9DC693ED95F963C33D83DF07D /* Pods_RocketDataTests.framework */; + productReference = 701E192E48082B5BE7484EDEBCFACBB2 /* Pods_RocketDataTests.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0930; - LastUpgradeCheck = 0930; + LastSwiftUpdateCheck = 1020; + LastUpgradeCheck = 1020; }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = A7FBE01DFB35645CFAE846405EBBF44C /* Products */; + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = A4CFA9CDE3A2F28C9D2218B404B334E1 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 2FD7AD31842596051CCB9958DFCEC67A /* ConsistencyManager */, - 57A35791766425C77885F0E029F15585 /* Pods-RocketData */, - 84FB67F4465E0B938B946463CA87C257 /* Pods-RocketDataTests */, + D1DE7D34A6BD71FF12B4E92841E9A434 /* ConsistencyManager */, + A0CD4481F87878BF321A914A7E919CAF /* Pods-RocketData */, + DEBED1B025AF68D8BDD2524AA80FAAE5 /* Pods-RocketDataTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 343BA70A6CDFAB1FB9843DC7E9B33018 /* Resources */ = { + 31AB07A8429984664F8233DD1415980F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 6A4CFFFFE016ED4D88CB516973E09096 /* Resources */ = { + 38EB3315C9C5244CA965F7BD2DB47810 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - A01E85E32C74883A6BEB8142480BD29B /* Resources */ = { + EAB1E811D8A7BD6D590A1C59F7650249 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -395,68 +395,69 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 1E89F44917216EFAB8EA75F4565EC44E /* Sources */ = { + 659ED923E39781CA28FECC7669DE3F80 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2EEA6279BB75E76C979252F1582EB6D4 /* Pods-RocketDataTests-dummy.m in Sources */, + B4407815711A033E78DB5D0553117695 /* Array+Weak.swift in Sources */, + 8F4EA96F63468B6A3BF6B37E1C9876DA /* BatchListener.swift in Sources */, + 92F94274FE5DD7DA39A788C9A954A179 /* BatchUpdateModel.swift in Sources */, + 096D3214758AB1516D7570572F7F8CED /* CollectionHelpers.swift in Sources */, + 4BC0164C51F764C2580B1CCE8A12076A /* ConsistencyManager-dummy.m in Sources */, + 3A7D3921D8AD2849D8C6A047B64DF6BF /* ConsistencyManager.swift in Sources */, + 521972E2CF95DF62944579607D5A3F10 /* ConsistencyManagerDelegate.swift in Sources */, + FD26FCD27C56C0218DEE5DEEA174FF4F /* ConsistencyManagerListener.swift in Sources */, + 4DB345DC3B211BD1E70D19BCE8FB24F9 /* ConsistencyManagerModel.swift in Sources */, + 3A792FDABEB17883D1EDE7326696DDBC /* ConsistencyManagerUpdatesListener.swift in Sources */, + 1F27AA0E76EE38B94BF0A9CDD8D8DF26 /* ErrorManager.swift in Sources */, + 520BC8064D1E81C7E9DE9F3B7D2CD283 /* ModelChange.swift in Sources */, + A345B450D9ACF154E2401282CCFAF5F4 /* ModelUpdates.swift in Sources */, + 918CEB835A71DF5A67B5252CE4AC6057 /* TypeErasedWeakHolders.swift in Sources */, + F2BBCAF256CFEB2B1F3963928F3624D7 /* WeakArray.swift in Sources */, + B8AA9C2382BBE8A30CCC7BC72F977802 /* WeakBox.swift in Sources */, + 7CD701DF4FD76F8DDAF6C0D464804146 /* WeakHolder.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 27EC284B368AD5617D0B877376799C5A /* Sources */ = { + 8C83FAB456A91D0582B8FD5CEC7EC029 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4E84117CE35C34AF1E0A1FA78304BC32 /* Pods-RocketData-dummy.m in Sources */, + C230449792ACADA6D77F8081E7657CD5 /* Pods-RocketDataTests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3EE25B59750D854EA891DBBB710B84D7 /* Sources */ = { + BE019C567DDEB0ABBBCD306385F8C47C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - C1B6BDF2CB6C1B45C96B56E63A12CFBD /* Array+Weak.swift in Sources */, - D73D26F3F15143620C69F6476875EAD5 /* BatchListener.swift in Sources */, - 9B2E2BC14E97E86929C78B7C633CDC3A /* BatchUpdateModel.swift in Sources */, - ADB130C4205457AC1A1FC3A2C7F42D7F /* CollectionHelpers.swift in Sources */, - 57CA270C9864F6DD8DC1AF27686DF986 /* ConsistencyManager-dummy.m in Sources */, - 845007C350B76A79DE42511F549A49FA /* ConsistencyManager.swift in Sources */, - 5F0283586E9BF8797C69BD7E2A513CDB /* ConsistencyManagerDelegate.swift in Sources */, - B61EC74E4F5D08BB1A95BD9314402C1C /* ConsistencyManagerListener.swift in Sources */, - 0C9ECF9FC34B5CF0C60B048166262686 /* ConsistencyManagerModel.swift in Sources */, - EB91FB625D549C02049A6459A15BE454 /* ConsistencyManagerUpdatesListener.swift in Sources */, - 05B35533A0547DD0471C846BFFC1F043 /* ErrorManager.swift in Sources */, - 2267435A90F9EFDFAB5581BE0C8095F1 /* ModelChange.swift in Sources */, - 23E63FF1C23124C71F1E7AEBC14D2EA4 /* ModelUpdates.swift in Sources */, - 2A51D0DB50357B6C41D9CBB5F181CE30 /* TypeErasedWeakHolders.swift in Sources */, - A43FDF5FF4FB9B42BF7C0DBB872A54D1 /* WeakArray.swift in Sources */, - B256EA38DA613681B2E7F174C2A22AAD /* WeakBox.swift in Sources */, - D148C9BA38D9C382597E69352C0CDC93 /* WeakHolder.swift in Sources */, + 135257C5F41669F741F52300ACB0AA8D /* Pods-RocketData-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 6ECD14F0523B86489EE6570C52F3F4FF /* PBXTargetDependency */ = { + 3451E1B23E1ABE03DBC8D79EA14E0C2E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ConsistencyManager; - target = 2FD7AD31842596051CCB9958DFCEC67A /* ConsistencyManager */; - targetProxy = 984FB88BCE156A742B6B4B03AD7FEB95 /* PBXContainerItemProxy */; + target = D1DE7D34A6BD71FF12B4E92841E9A434 /* ConsistencyManager */; + targetProxy = BF640D23EE254C107A2D30B9687FF7E7 /* PBXContainerItemProxy */; }; - ED7312B0F15E37BA4A96F5FE23471194 /* PBXTargetDependency */ = { + C49CFAF85CAD0B3C4A0EE6D51BCC3153 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ConsistencyManager; - target = 2FD7AD31842596051CCB9958DFCEC67A /* ConsistencyManager */; - targetProxy = 8E088FF873447ED8DBE9248B0F596406 /* PBXContainerItemProxy */; + target = D1DE7D34A6BD71FF12B4E92841E9A434 /* ConsistencyManager */; + targetProxy = 8E96A00153A419C6589B32F1788D071C /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 0467B3B6E357B36B0E536342C4D4AE1B /* Release */ = { + 2A35EC1F79D1610F90807DD1498CBF09 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 59218D9136E2AB3165CC20DBC0C31850 /* ConsistencyManager.xcconfig */; + baseConfigurationReference = 39DF10DEE1D2CA5A0236DD40AD30BED8 /* Pods-RocketData.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -466,30 +467,88 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-RocketData/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"; - MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; - PRODUCT_MODULE_NAME = ConsistencyManager; - PRODUCT_NAME = ConsistencyManager; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-RocketData/Pods-RocketData.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; + name = Debug; + }; + 4BE66A09A74FD25164AAB3C2645B9B93 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; name = Release; }; - 26924CDDA9332FA1C2720D9ADFA0D107 /* Release */ = { + 717B375D36086392831269FBF3F73FB6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 857F44A144AAC4157786145DA04E61B7 /* Pods-RocketDataTests.release.xcconfig */; + baseConfigurationReference = 013077F3606B5A64AFBACC568D689A18 /* Pods-RocketData.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; @@ -501,12 +560,12 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-RocketData/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-RocketDataTests/Pods-RocketDataTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-RocketData/Pods-RocketData.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -514,8 +573,6 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -523,9 +580,73 @@ }; name = Release; }; - 35E88DE762242B29DB05CA35B776D71B /* Debug */ = { + 7EF7227D9B20A1D549000096ACCB23D7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + 83ED851D51A67BBAB21B4670428A2A3D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 59218D9136E2AB3165CC20DBC0C31850 /* ConsistencyManager.xcconfig */; + baseConfigurationReference = 8297AEF4CD92D094A78F43E9827910D9 /* ConsistencyManager.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -547,17 +668,16 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 6981C9B9A254395C1497970E2167C98B /* Release */ = { + D2B307422DADD15637B597FD010CAF32 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 94BF3A5610A4DDF5B6E1CC06709758FA /* Pods-RocketData.release.xcconfig */; + baseConfigurationReference = 6D817650A90791EE8896BA9AA20A3111 /* Pods-RocketDataTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; @@ -569,12 +689,12 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-RocketData/Pods-RocketData-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-RocketDataTests/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"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -582,18 +702,15 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 6BC2F2E23FE01133C47A04A7A9B3B44D /* Debug */ = { + DA2076AC9CBC28FF8CA4377AB1E46516 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 01E6BFAD5F2A35A8016BE0150437B4E2 /* Pods-RocketDataTests.debug.xcconfig */; + baseConfigurationReference = 8267E58D66CDE7A750AC589E88716E18 /* Pods-RocketDataTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; @@ -618,19 +735,17 @@ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 7F9395E20D0E7558218060799D4E64B0 /* Debug */ = { + EC30B484241A71DA885F718065D4EE71 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 129F97D6BF6342A050FA9187E581A26B /* Pods-RocketData.debug.xcconfig */; + baseConfigurationReference = 8297AEF4CD92D094A78F43E9827910D9 /* ConsistencyManager.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -640,190 +755,65 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-RocketData/Pods-RocketData-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ConsistencyManager/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"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-RocketData/Pods-RocketData.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/ConsistencyManager/ConsistencyManager.modulemap"; + PRODUCT_MODULE_NAME = ConsistencyManager; + PRODUCT_NAME = ConsistencyManager; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; - }; - 96434B6C8FF320C976A10DAD7174A4BB /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; name = Release; }; - D11C82AF2204B41B80412B8DC9C1D652 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - D11C82AF2204B41B80412B8DC9C1D652 /* Debug */, - 96434B6C8FF320C976A10DAD7174A4BB /* Release */, + 7EF7227D9B20A1D549000096ACCB23D7 /* Debug */, + 4BE66A09A74FD25164AAB3C2645B9B93 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 4D08CE93465F824C5C0BF8274EF90D9E /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { + 6E0FDAD908BFD82400E355B06F98A4E4 /* Build configuration list for PBXNativeTarget "Pods-RocketData" */ = { isa = XCConfigurationList; buildConfigurations = ( - 35E88DE762242B29DB05CA35B776D71B /* Debug */, - 0467B3B6E357B36B0E536342C4D4AE1B /* Release */, + 2A35EC1F79D1610F90807DD1498CBF09 /* Debug */, + 717B375D36086392831269FBF3F73FB6 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - AC569550E7E33D16C6936BF16C9671D5 /* Build configuration list for PBXNativeTarget "Pods-RocketData" */ = { + DC8137B93DD7C942D9316592E04A88AD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7F9395E20D0E7558218060799D4E64B0 /* Debug */, - 6981C9B9A254395C1497970E2167C98B /* Release */, + 83ED851D51A67BBAB21B4670428A2A3D /* Debug */, + EC30B484241A71DA885F718065D4EE71 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BA5C34F5074487978C60F395D7A37FD0 /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */ = { + E46EB2934101341C7C0FC6F8D749CD7B /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 6BC2F2E23FE01133C47A04A7A9B3B44D /* Debug */, - 26924CDDA9332FA1C2720D9ADFA0D107 /* Release */, + D2B307422DADD15637B597FD010CAF32 /* Debug */, + DA2076AC9CBC28FF8CA4377AB1E46516 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; } diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist index df97cf8..5c493de 100644 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist +++ b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 7.0.0 + 8.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 7c82be4..adbf402 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist @@ -1,5 +1,242 @@ - + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2016 LinkedIn Corp. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + 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 License, Version 2.0 + Title + ConsistencyManager + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + 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 fc73510..4652052 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig @@ -1,7 +1,7 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} 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 fc73510..4652052 100644 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig +++ b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig @@ -1,7 +1,7 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} 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 7c82be4..adbf402 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist @@ -1,5 +1,242 @@ - + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2016 LinkedIn Corp. All rights reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + 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 License, Version 2.0 + Title + ConsistencyManager + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh index eecae94..7976487 100755 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh @@ -3,10 +3,15 @@ set -e set -u set -o pipefail +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 fi echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" @@ -36,8 +41,8 @@ install_framework() local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" + echo "Symlinked..." + source="$(readlink "${source}")" fi # Use filter instead of exclude so missing patterns don't throw errors. @@ -67,7 +72,7 @@ install_framework() # 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]}) + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) for lib in $swift_runtime_libs; do echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" @@ -104,6 +109,14 @@ install_dsym() { fi } +# Copies the bcsymbolmap files of a vendored framework +install_bcsymbolmap() { + local bcsymbolmap_path="$1" + local destination="${BUILT_PRODUCTS_DIR}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" +} + # 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 @@ -136,7 +149,7 @@ strip_invalid_archs() { for arch in $binary_archs; do if ! [[ "${ARCHS}" == *"$arch"* ]]; then # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + lipo -remove "$arch" -output "$binary" "$binary" stripped="$stripped $arch" fi done 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 e2ea9e8..a65d749 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig @@ -1,8 +1,8 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} 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 e2ea9e8..a65d749 100644 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig +++ b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig @@ -1,8 +1,8 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/RocketData.podspec b/RocketData.podspec index 3623a5e..557f7b1 100644 --- a/RocketData.podspec +++ b/RocketData.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'RocketData' - spec.version = '7.0.1' + spec.version = '8.0.0' spec.license = { :type => 'Apache License, Version 2.0' } spec.homepage = 'https://plivesey.github.io/RocketData' spec.authors = 'plivesey' @@ -12,6 +12,6 @@ Pod::Spec.new do |spec| spec.tvos.deployment_target = '9.0' spec.tvos.frameworks = 'Foundation' - spec.dependency 'ConsistencyManager', '~> 7.0.0' + spec.dependency 'ConsistencyManager', '~> 8.0.0' end diff --git a/RocketData.xcodeproj/project.pbxproj b/RocketData.xcodeproj/project.pbxproj index 9d09d4b..2e75f5f 100644 --- a/RocketData.xcodeproj/project.pbxproj +++ b/RocketData.xcodeproj/project.pbxproj @@ -320,25 +320,26 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = LinkedIn; TargetAttributes = { 612242B01C7B85D40017B0C4 = { CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 1000; + LastSwiftMigration = 1020; }; 612242BA1C7B85D40017B0C4 = { CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 1000; + LastSwiftMigration = 1020; }; }; }; buildConfigurationList = 612242AB1C7B85D40017B0C4 /* Build configuration list for PBXProject "RocketData" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 612242A71C7B85D40017B0C4; productRefGroup = 612242B21C7B85D40017B0C4 /* Products */; @@ -492,6 +493,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -550,6 +552,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -616,7 +619,7 @@ PRODUCT_NAME = RocketData; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -637,7 +640,7 @@ PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketData; PRODUCT_NAME = RocketData; SKIP_INSTALL = YES; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -650,7 +653,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketDataTests; PRODUCT_NAME = RocketDataTests; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -663,7 +666,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketDataTests; PRODUCT_NAME = RocketDataTests; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme b/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme index 7895219..14189f8 100644 --- a/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme +++ b/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme @@ -1,6 +1,6 @@ Int { + func numberOfDeletedElements() -> Int { return filter { element in switch element { case .delete: @@ -88,7 +88,7 @@ public extension Collection where Iterator.Element == CollectionChangeInformatio This returns the number of .insert items in the array. It does not dedupe for repeated elements. */ - public func numberOfInsertedElements() -> Int { + func numberOfInsertedElements() -> Int { return filter { element in switch element { case .insert: @@ -108,7 +108,7 @@ public extension Collection where Iterator.Element == CollectionChangeInformatio ``numberOfInsertedItems - numberOfDeletedItems``. */ - public func deltaNumberOfElements() -> Int { + func deltaNumberOfElements() -> Int { return numberOfInsertedElements() - numberOfDeletedElements() } } diff --git a/RocketData/Logger.swift b/RocketData/Logger.swift index 670fc1d..9847dfa 100644 --- a/RocketData/Logger.swift +++ b/RocketData/Logger.swift @@ -32,7 +32,7 @@ open class Log { delegate.assertionFailure(logText(), file: file, function: function, line: line) } else { // Default behavior is to just call a regular assertionFailure - assertionFailure(logText, file: file, line: line) + assertionFailure(logText(), file: file, line: line) } } } diff --git a/build.sh b/build.sh index a4d3b18..e4f0751 100755 --- a/build.sh +++ b/build.sh @@ -11,7 +11,7 @@ time xcodebuild clean test \ -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.3' \ -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.1' \ -destination 'platform=iOS Simulator,name=iPhone X,OS=11.3' \ - -destination 'platform=iOS Simulator,name=iPhone XS Max,OS=12.0' \ + -destination 'platform=iOS Simulator,name=iPhone XS Max,OS=12.2' \ | xcpretty # Disabling 8.4 because it's very flaky on travis From 571cbd3546dd1c35908ddd7902e1ad2cc5a455e6 Mon Sep 17 00:00:00 2001 From: Alexander Shitikov Date: Sat, 5 Oct 2019 21:11:40 +0300 Subject: [PATCH 31/33] Open lastUpdated property for reading (#92) * Open lastUpdated property for reading * Fixed build --- RocketData/ChangeTime.swift | 4 ++-- RocketData/CollectionDataProvider.swift | 2 +- RocketData/DataProvider.swift | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/RocketData/ChangeTime.swift b/RocketData/ChangeTime.swift index a04a475..a7cfcff 100644 --- a/RocketData/ChangeTime.swift +++ b/RocketData/ChangeTime.swift @@ -14,7 +14,7 @@ import Foundation Whenever you create a new ChangeTime, it will be after any previous times and before any future times. This is a thread safe class. You can call it from any thread. */ -struct ChangeTime: Equatable { +public struct ChangeTime: Equatable { /// Keeps track of the last time we updated private static var lastTime = 1 /// We use this serial queue to sync on different threads @@ -57,6 +57,6 @@ struct ChangeTime: Equatable { } } -func ==(lhs: ChangeTime, rhs: ChangeTime) -> Bool { +public func ==(lhs: ChangeTime, rhs: ChangeTime) -> Bool { return lhs.time == rhs.time } diff --git a/RocketData/CollectionDataProvider.swift b/RocketData/CollectionDataProvider.swift index 073d9c1..d25ff77 100644 --- a/RocketData/CollectionDataProvider.swift +++ b/RocketData/CollectionDataProvider.swift @@ -85,7 +85,7 @@ open class CollectionDataProvider: ConsistencyManagerListener, B var dataHolder = DataHolder<[T]>(data: []) /// This is updated whenever we set data. In some circumstances, we want to check that our new update is newer than our current model. - var lastUpdated: ChangeTime { + open var lastUpdated: ChangeTime { return dataHolder.lastUpdated } diff --git a/RocketData/DataProvider.swift b/RocketData/DataProvider.swift index 57b2e59..b018866 100644 --- a/RocketData/DataProvider.swift +++ b/RocketData/DataProvider.swift @@ -106,7 +106,7 @@ open class DataProvider: ConsistencyManagerListener, BatchListen private var listeningToModelIdentifier: String? /// This is updated whenever we set data. In some circumstances, we want to check that our new update is newer than our current model. - var lastUpdated: ChangeTime { + open var lastUpdated: ChangeTime { return dataHolder.lastUpdated } From 71881225b115f4f4218eb71f31a4936936a00130 Mon Sep 17 00:00:00 2001 From: Heberti Almeida Date: Tue, 14 Jan 2020 11:42:31 -0500 Subject: [PATCH 32/33] Add Swift Package Manager support (#94) * Removed Cocoapods files * Removing unnecessary files due to SPM * Fixed compiler warnings * Added Swift Package files * Updating build script and travis * Fix package reference to point to github's version --- .gitignore | 8 + .../contents.xcworkspacedata | 7 + .../xcschemes/RocketData.xcscheme | 60 +- .travis.yml | 2 +- Package.resolved | 16 + Package.swift | 32 + Podfile | 12 - Podfile.lock | 16 - .../ConsistencyManager.swift | 868 ------------------ .../DataStructures/Array+Weak.swift | 99 -- .../DataStructures/BatchListener.swift | 131 --- .../DataStructures/BatchUpdateModel.swift | 92 -- .../DataStructures/ModelChange.swift | 44 - .../DataStructures/ModelUpdates.swift | 37 - .../TypeErasedWeakHolders.swift | 38 - .../DataStructures/WeakArray.swift | 173 ---- .../DataStructures/WeakBox.swift | 23 - .../DataStructures/WeakHolder.swift | 45 - .../Helpers/CollectionHelpers.swift | 28 - .../Helpers/ErrorManager.swift | 20 - .../ConsistencyManagerDelegate.swift | 59 -- .../ConsistencyManagerListener.swift | 44 - .../Protocols/ConsistencyManagerModel.swift | 244 ----- .../ConsistencyManagerUpdatesListener.swift | 36 - Pods/ConsistencyManager/LICENSE | 203 ---- Pods/ConsistencyManager/README.md | 78 -- Pods/Manifest.lock | 16 - Pods/Pods.xcodeproj/project.pbxproj | 819 ----------------- .../ConsistencyManager-Info.plist | 26 - .../ConsistencyManager-dummy.m | 5 - .../ConsistencyManager-prefix.pch | 12 - .../ConsistencyManager-umbrella.h | 16 - .../ConsistencyManager.modulemap | 6 - .../ConsistencyManager.xcconfig | 10 - .../ConsistencyManager/Info.plist | 26 - .../Pods-RocketData/Info.plist | 26 - .../Pods-RocketData-Info.plist | 26 - .../Pods-RocketData-acknowledgements.markdown | 210 ----- .../Pods-RocketData-acknowledgements.plist | 242 ----- .../Pods-RocketData/Pods-RocketData-dummy.m | 5 - .../Pods-RocketData-resources.sh | 106 --- .../Pods-RocketData-umbrella.h | 16 - .../Pods-RocketData.debug.xcconfig | 10 - .../Pods-RocketData/Pods-RocketData.modulemap | 6 - .../Pods-RocketData.release.xcconfig | 10 - .../Pods-RocketDataTests/Info.plist | 26 - .../Pods-RocketDataTests-Info.plist | 26 - ...-RocketDataTests-acknowledgements.markdown | 210 ----- ...ods-RocketDataTests-acknowledgements.plist | 242 ----- .../Pods-RocketDataTests-dummy.m | 5 - .../Pods-RocketDataTests-frameworks.sh | 171 ---- .../Pods-RocketDataTests-resources.sh | 106 --- .../Pods-RocketDataTests-umbrella.h | 16 - .../Pods-RocketDataTests.debug.xcconfig | 11 - .../Pods-RocketDataTests.modulemap | 6 - .../Pods-RocketDataTests.release.xcconfig | 11 - RocketData.xcodeproj/project.pbxproj | 706 -------------- .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - RocketData/Info.plist | 26 - RocketData/RocketData.h | 20 - RocketDataTests/Info.plist | 24 - .../WeakSharedCollectionArrayTests.swift | 6 +- build.sh | 34 +- 64 files changed, 114 insertions(+), 5558 deletions(-) create mode 100644 .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata rename {RocketData.xcodeproj => .swiftpm/xcode}/xcshareddata/xcschemes/RocketData.xcscheme (59%) create mode 100644 Package.resolved create mode 100644 Package.swift delete mode 100644 Podfile delete mode 100644 Podfile.lock delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchUpdateModel.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelChange.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelUpdates.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakArray.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakBox.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakHolder.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/Helpers/CollectionHelpers.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/Helpers/ErrorManager.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerListener.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift delete mode 100644 Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift delete mode 100644 Pods/ConsistencyManager/LICENSE delete mode 100644 Pods/ConsistencyManager/README.md delete mode 100644 Pods/Manifest.lock delete mode 100644 Pods/Pods.xcodeproj/project.pbxproj delete mode 100644 Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist delete mode 100644 Pods/Target Support Files/ConsistencyManager/ConsistencyManager-dummy.m delete mode 100644 Pods/Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch delete mode 100644 Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h delete mode 100644 Pods/Target Support Files/ConsistencyManager/ConsistencyManager.modulemap delete mode 100644 Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig delete mode 100644 Pods/Target Support Files/ConsistencyManager/Info.plist delete mode 100644 Pods/Target Support Files/Pods-RocketData/Info.plist delete mode 100644 Pods/Target Support Files/Pods-RocketData/Pods-RocketData-Info.plist delete mode 100644 Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.markdown delete mode 100644 Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist delete mode 100644 Pods/Target Support Files/Pods-RocketData/Pods-RocketData-dummy.m delete mode 100755 Pods/Target Support Files/Pods-RocketData/Pods-RocketData-resources.sh delete mode 100644 Pods/Target Support Files/Pods-RocketData/Pods-RocketData-umbrella.h delete mode 100644 Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig delete mode 100644 Pods/Target Support Files/Pods-RocketData/Pods-RocketData.modulemap delete mode 100644 Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig delete mode 100644 Pods/Target Support Files/Pods-RocketDataTests/Info.plist delete mode 100644 Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-Info.plist delete mode 100644 Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.markdown delete mode 100644 Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist delete mode 100644 Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-dummy.m delete mode 100755 Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh delete mode 100755 Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh delete mode 100644 Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-umbrella.h delete mode 100644 Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig delete mode 100644 Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.modulemap delete mode 100644 Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig delete mode 100644 RocketData.xcodeproj/project.pbxproj delete mode 100644 RocketData.xcworkspace/contents.xcworkspacedata delete mode 100644 RocketData.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 RocketData/Info.plist delete mode 100644 RocketData/RocketData.h delete mode 100644 RocketDataTests/Info.plist diff --git a/.gitignore b/.gitignore index 25428ee..b80b112 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,15 @@ +# Build Directory +DerivedData/ + # User Data *.pbxuser xcuserdata +# SwiftPackageManager +Packages +.build/ +*.xcodeproj + # Docs docs/_build/* docs/sphinx_rtd_theme diff --git a/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/RocketData.xcscheme similarity index 59% rename from RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme rename to .swiftpm/xcode/xcshareddata/xcschemes/RocketData.xcscheme index 14189f8..0fd81e1 100644 --- a/RocketData.xcodeproj/xcshareddata/xcschemes/RocketData.xcscheme +++ b/.swiftpm/xcode/xcshareddata/xcschemes/RocketData.xcscheme @@ -1,6 +1,6 @@ + ReferencedContainer = "container:"> + + + + @@ -26,31 +40,20 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - codeCoverageEnabled = "YES" - shouldUseLaunchSchemeArgsEnv = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES" + codeCoverageEnabled = "YES"> + ReferencedContainer = "container:"> - - - - - - - - - - - - + ReferencedContainer = "container:"> diff --git a/.travis.yml b/.travis.yml index f8b87b4..b0c9796 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: objective-c -osx_image: xcode10.2 +osx_image: xcode11.3 script: sh build.sh after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/Package.resolved b/Package.resolved new file mode 100644 index 0000000..5938b1b --- /dev/null +++ b/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "ConsistencyManager", + "repositoryURL": "https://github.com/plivesey/ConsistencyManager-iOS", + "state": { + "branch": "master", + "revision": "ea9b0ddfb60d4a14d7a87e2f4017390f280e71b5", + "version": null + } + } + ] + }, + "version": 1 +} diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..29baff2 --- /dev/null +++ b/Package.swift @@ -0,0 +1,32 @@ +// swift-tools-version:5.1 + +import PackageDescription + +let package = Package( + name: "RocketData", + platforms: [ + .macOS(.v10_12), + .iOS(.v8), + .tvOS(.v9), + .watchOS(.v3) + ], + products: [ + .library(name: "RocketData", targets: ["RocketData"]), + ], + dependencies: [ + .package(url: "https://github.com/plivesey/ConsistencyManager-iOS", .branch("master")) + ], + targets: [ + .target( + name: "RocketData", + dependencies: ["ConsistencyManager"], + path: "RocketData" + ), + .testTarget( + name: "RocketDataTests", + dependencies: ["RocketData", "ConsistencyManager"], + path: "RocketDataTests" + ) + ], + swiftLanguageVersions: [.v4, .v4_2, .v5] +) diff --git a/Podfile b/Podfile deleted file mode 100644 index 173e7cf..0000000 --- a/Podfile +++ /dev/null @@ -1,12 +0,0 @@ -# Note: You must be using Cocoapods 1.0.0 or above - -use_frameworks! - -target :'RocketData' do - pod 'ConsistencyManager', '~> 8.0.0' -end - -target :'RocketDataTests' do - pod 'ConsistencyManager', '~> 8.0.0' -end - diff --git a/Podfile.lock b/Podfile.lock deleted file mode 100644 index ce999b7..0000000 --- a/Podfile.lock +++ /dev/null @@ -1,16 +0,0 @@ -PODS: - - ConsistencyManager (8.0.0) - -DEPENDENCIES: - - ConsistencyManager (~> 8.0.0) - -SPEC REPOS: - https://github.com/cocoapods/specs.git: - - ConsistencyManager - -SPEC CHECKSUMS: - ConsistencyManager: 72b8d918dfb257171fe45e994b45e3f38f6708fe - -PODFILE CHECKSUM: d6b222e71d9bd556deaa65cc2bb16de3b0986e7a - -COCOAPODS: 1.7.0.rc.1 diff --git a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift b/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift deleted file mode 100644 index 0220280..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/ConsistencyManager.swift +++ /dev/null @@ -1,868 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation -#if os(iOS) - import UIKit -#endif - -/** - This is the main class for the library and contains most of the logic. For a detailed overview, please check the docs. - - ### Overview - - This class manages a list of listeners and ids (that identify the model that the listener is listening to). - When you post an update to the consistency manager, it will regenerate new models for any applicable listener. - It then notifies the listener of these changes. - - Given a model, any class can listen to updates on this model. - Whenever anything in this model should change, the consistency manager will generate a new model - and call the ConsistencyManagerListener delegate method with this new model. - All models must adhere to the ConsistencyManagerModel protocol. - - ### API - - The two important APIs that you will mainly use in this class are: - - `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 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: - - `pauseListener(listener: ConsistencyManagerListener)` - `resumeListener(listener: ConsistencyManagerListener)` - - #### Removing Listeners - - In general, we recommend you don't remove listeners manually because it isn't necessary. - The consistency manager does not hold strong references to any models or listeners. - However, if you want to manually remove a listener, see `removeListener(listener: ConsistencyManagerListener)` - */ -open class ConsistencyManager { - - // MARK: - Public ivars - - /// Delegate for the consistency manager. Highly recommended to implement for useful callbacks. - open weak var delegate: ConsistencyManagerDelegate? - - /** - Periodically, the consistency manager cleans up after itself. - This is a relatively quick process, and since the memory footprint of the library in general is small, it's not an important thing to worry about. - Default is 5 mins. It will also clean up automatically on any memory warnings. - - If you set this to zero, then garbage collection is considered disabled. - The ConsistencyManager will still attempt to clean up memory if the application receives a memory warning. - - This variable is not thread-safe. You should only access this on the main thread. - */ - open var garbageCollectionInterval: TimeInterval = 300 - - // MARK: Constants - - /** - This notification is fired whenever the asynchronous work of clean memory starts. - It's useful if you want to add timers to this work. - Called on an internal thread. - */ - public static let kCleanMemoryAsynchronousWorkStarted = Notification.Name("com.linkedin.consistencyManager.kCleanMemoryAsynchronousWorkStarted") - - /** - This notification is fired whenever the asynchronous work of clean memory finishes. - It's useful if you want to add timers to this work. - Called on an internal thread. - */ - public static let kCleanMemoryAsynchronousWorkFinished = Notification.Name("com.linkedin.consistencyManager.kCleanMemoryAsynchronousWorkFinished") - - // MARK: - Private ivars - - /** - This is a dictionary of id: listeners. - id is a string and refers to the model to which the listener is listening. - listeners is a weak array of ConsistencyManagerListener objects. - - This should only be accessed on the dispatchQueue. - */ - var listeners = [String: WeakListenerArray]() - - /** - This is an array of all the model update listeners. - These will get notified whenever anything changes in the Consistency Manager. - See `addModelUpdatesListener(_:)` for more info. - */ - var modelUpdatesListeners = WeakUpdatesListenerArray() - - /** - We expect fast lookup (regardless of O(n) searches) because listeners are typically view controllers - and most apps will not have too many. - This will only be accessed (read/write) on the main thread. - */ - var pausedListeners = [PausedListener]() - - /** - Private queue used for all the real work this library does. It's serial so all the requests to this class are made in order. - */ - let queue = OperationQueue() - - /// Small class which listens for memory warnings. When we get a memory warning, we'll purge as much memory as we can. - fileprivate let memoryWarningListener = MemoryWarningListener() - - // MARK: - Initializers - - /// Singleton accessor for the consistency manager. - public static let sharedInstance = ConsistencyManager() - - /** - Designated initializer. - */ - public init() { - // Make it a serial queue - queue.maxConcurrentOperationCount = 1 - // This seems like a good value for the ConsistencyManager. - queue.qualityOfService = .utility - queue.name = "com.consistencyManager.internalQueue" - memoryWarningListener.delegate = self - // Doing this in the next tick to give the caller a chance to set garbageCollectionInterval - DispatchQueue.main.async { - self.startGarbageCollection() - } - } - - // MARK: - Public Functions - - // MARK: Listening - - /** - Subscribe for updates on the listener's current model. Note that here you pass in the listener and not the model. - The model will be retrieved with the currentModel method. - 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 addListener(_ listener: ConsistencyManagerListener) { - let model = listener.currentModel() - if let model = 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 `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 model: the model you want to listen to with this listener - */ - open func addListener(_ listener: ConsistencyManagerListener, to model: ConsistencyManagerModel) { - dispatchTask { _ in - self.addListener(listener, recursivelyToChildModels: model) - } - } - - /** - Remove a listener from the consistency manager. This isn't actually necessary to call since all references are weak, but it leaves the option to you. - - You should NOT call this from deinit since the model is currently being deallocated. - Calling this in deinit will be a no-op. - - parameter listener: the listener you want to remove from the consistency manager - */ - open func removeListener(_ listener: ConsistencyManagerListener) { - // Using a weak variable here in case people try calling this during deinit - // This avoids the crash which occurs if someone calls this in deinit - // If we lose a reference to it, it's ok since removing a listener isn't a key operation - weak var listener = listener - if let index = self.pausedListeners.firstIndex(where: { listener === $0.listener }) { - self.pausedListeners.remove(at: index) - } - dispatchTask { _ in - for (key, listenerArray) in self.listeners { - let newListeners = listenerArray.filter { element in - if let element = element { - // Keep the element if it is not the current listener - return element !== listener - } else { - // Drop all nil values - return false - } - } - self.listeners[key] = newListeners - } - } - } - - // MARK: Pausing and Resuming Listening to Updates - - /** - 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. - - If you pause an already paused listener, it is a no-op. - - The context and change lists are initially nil and empty, respectively, because they are only passed through when - the delegate method is called. - - This should only be called on the main thread. - - parameter listener: The consistency manager listener that is currently listening to a model - */ - 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) - } - } - - /** - Call this method on a paused listener to have it start listening to updates again. - Once you resume listening, you will get the result of all the changes that you missed in one update via the modelUpdated - delegate method, and continue to get future updates. Note that you will only have access to the last context (not intermediate ones) passed - in via a model update, just as you will not be able to examine intermediate model updates. - - 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 pauseListener method) to a model - */ - open func resumeListener(_ listener: ConsistencyManagerListener) { - guard let index = pausedListeners.firstIndex(where: { listener === $0.listener }) else { - return - } - let pausedListener = pausedListeners.remove(at: index) - - if pausedListener.modelUpdates.deletedModelIds.count == 0 && pausedListener.modelUpdates.changedModelIds.count == 0 { - // We have no changes, so let's just immediately return - return - } - - let newModel = pausedListener.updatedModel - guard let outdatedModel = listener.currentModel() else { - // If our current model is nil, then we've stopped listening for changes - // So, we should just return - return - } - if let newModel = newModel, outdatedModel.isEqualToModel(newModel) { - return - } - - dispatchTask { _ in - - // Here, we are doing three steps to verify model updates. - // When looking at batch model updates, there may be inconsistencies (such as a model which was both deleted and updated). - // 1. We iterate over the new tree and remove anything from deleted which is still there. - // 2. We iterate over the old tree and make sure anything in the updates list has actually changed. - // 3. We subtract all the deleted models from updated. At this point, anything that's deleted is no longer there so an update doesn't make sense. - - var confirmedChangelist = pausedListener.modelUpdates - - if let newModel = newModel { - var idToNewModel = [String: ConsistencyManagerModel]() - - // Traverses the updated model recursively, while adding individual model nodes and their ids to the dictionary - // and removing any traversed nodes from the deleted models list - self.recursivelyIterateOverModel(newModel) { model in - if let id = model.modelIdentifier { - idToNewModel[id] = model - confirmedChangelist.deletedModelIds.remove(id) - } - } - // Traverse the old model and remove models from the changelist that haven't actually changed. - self.recursivelyIterateOverModel(outdatedModel) { model in - if let id = model.modelIdentifier, - let newModel = idToNewModel[id], confirmedChangelist.changedModelIds.contains(id) && newModel.isEqualToModel(model) - { - confirmedChangelist.changedModelIds.remove(id) - } - } - } else { - // The model was deleted, so we shouldn't have any updated models - confirmedChangelist.changedModelIds = [] - } - // Any elements that were deleted should not be in the changed list. - confirmedChangelist.changedModelIds.subtract(confirmedChangelist.deletedModelIds) - DispatchQueue.main.async { - listener.modelUpdated(newModel, updates: confirmedChangelist, context: pausedListener.mostRecentContext) - } - } - } - - /** - Returns true if the listener is currently in a paused state. - - - parameter listener: The listener to query the paused state of. - */ - open func isListenerPaused(_ listener: ConsistencyManagerListener) -> Bool { - return pausedListeners.contains { listener === $0.listener } - } - - // MARK: Updating - - /** - Update the consistency manager with a new model. This will call the updatedModel methods on zero, one or multiple listeners. - You should call this method whenever there is a new model or a model has changed. - You can use the context, for example, to track who made a certain update to the consistency manager. - - 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 updateModel(_ model: ConsistencyManagerModel, context: Any? = nil) { - dispatchTask { cancelled in - let (modelUpdates, listeners) = self.childrenAndListenersForModel(model) - self.updateListeners( - listeners, - with: modelUpdates, - context: context, - originalModel: model, - cancelled: cancelled) - } - } - - /** - This function will delete a model from the consistency manager. This will cause anyone who has this model as a subtree to update. - The function is not recursive. It does not delete submodels of this model, just the top level model. - The submodels of this model can still exist in other models. - You probably don't want to do this recursively so think carefully about the consequences of this before implementing it yourself. - - WARNING: If you have a model that has a required model that is deleted, then it will call the map function with a nil child. - The recommended way to deal with this is to cascade the delete, so the parent model will also be deleted. - - You can optionally pass in a context parameter here. You can use this to track who made a certain update to the consistency manager. - - parameter model: the model to delete from the consistency manager - - parameter context: anything you want to pass to each associated listener via the delegate method upon update - */ - open func deleteModel(_ model: ConsistencyManagerModel, context: Any? = nil) { - dispatchTask { cancelled in - if let id = model.modelIdentifier { - // First, let's get all the listeners that care about this id - let listenersArray: [ConsistencyManagerListener] = { - let weakListenersArray = self.listeners[id] - if var weakListenersArray = weakListenersArray { - let returnValue = weakListenersArray.prune() - // Since we pruned, let's update our state - self.listeners[id] = weakListenersArray - return returnValue - } else { - return [] - } - }() - - // A simple update dictionary. We're just deleting a model with this id. Nothing else. - let updatesDictionary = [id: ModelChange.deleted] - self.updateListeners( - listenersArray, - with: updatesDictionary, - context: context, - originalModel: model, - cancelled: cancelled) - } else { - DispatchQueue.main.async { - self.delegate?.consistencyManager(self, failedWithCriticalError: CriticalError.DeleteIDFailure.rawValue) - } - } - } - } - - // MARK: Other - - /** - This function will clear all current listeners and cancel all pending tasks including any updates. - - This is mainly useful things like running tests when you want to ensure a clean state. - The recommended way of removing listeners is to call `removeListener` or dealloc the listener. - Due to the unpredictability of cancelling operations, it's possible that updates may occur - between calling this method and the completion block being called. - - - parameter completion: Since some of the cleanup is asynchronous, this block is called once the cleanup is complete. - Called on the main queue. - */ - open func clearListenersAndCancelAllTasks(_ completion: (()->Void)?) { - pausedListeners.removeAll() - queue.cancelAllOperations() - dispatchTask { _ in - self.listeners.removeAll() - // Finally, we should actually wait for the main queue to complete (because we dispatch updates there after checking cancellation) - // This also allows us to call the completion on the main queue - DispatchQueue.main.async { - completion?() - } - } - } - - /** - Adds an update listener to the consistency manager. - This listener will get notified of ALL changes posted to the consistency manager. - This method must be called on the main thread. - - ## Use Case - - This is useful if you want to filter on changes to the consistency manager. For instance, you may want to listen to all added models of a certain class. - If a model is added, you could add it to an existing array (similar to predicates). - Or if you have an ID for a model that isn't in the system yet, you can listen to changes on it. - - ## Performance - - The `ConsistencyManagerUpdatesListener` methods are called on the **main thread** for every model updated in the system. - It's recommended to do as minimal processing as possible here so you don't block the main thread. - It's also recommended to have a small number of global listeners. - */ - open func addModelUpdatesListener(_ updatesListener: ConsistencyManagerUpdatesListener) { - modelUpdatesListeners.append(updatesListener) - } - - /** - Removes an update listener to the consistency manager. - This method must be called on the main thread. - You shouldn't need to call this in general since listeners are removed whenever the object is deallocated. - */ - open func removeModelUpdatesListener(_ updatesListener: ConsistencyManagerUpdatesListener) { - modelUpdatesListeners = modelUpdatesListeners.filter { currentListener in - currentListener !== updatesListener - } - } - - /** - This will remove any unnecessary memory held by the consistency manager. - This is called automatically whenever there is a memory warning, so usually you should not need to ever call this method. - The class also cleans up memory automatically as it is used, so you shouldn't worry about memory usage. - */ - open func cleanMemory() { - dispatchTask { _ in - NotificationCenter.default.post(name: ConsistencyManager.kCleanMemoryAsynchronousWorkStarted, object: self) - for (key, var listenersArray) in self.listeners { - _ = listenersArray.prune() - // If the array has no elements now, let's remove it from the dictionary - // Else, let's reset it (we may have removed elements) - if listenersArray.count == 0 { - self.listeners[key] = nil - } else { - self.listeners[key] = listenersArray - } - } - NotificationCenter.default.post(name: ConsistencyManager.kCleanMemoryAsynchronousWorkFinished, object: self) - } - // Remove any PausedListener structs from our local list if the internal listener is now nil - pausedListeners = self.pausedListeners.filter { $0.listener != nil } - } - - /** - This method is called periodically to clean up our memory. When called, it automatically schedules its call again, so it should not be called more than once. - It is called once on initialization to start the process. This will cause a cleanMemory call, but that's ok since it will be basically a no-op. - */ - private func startGarbageCollection() { - // Saving a local variable so we only access this on the main thread - let garbageCollectionInterval = self.garbageCollectionInterval - // If garbageCollectionInterval is 0, this means it's disabled. - if garbageCollectionInterval > 0 { - // We're going to use a low priority queue for this timer - // We need to use a dispatch queue because NSOperationQueue doesn't support delays - - let dispatchQueue = DispatchQueue.global(qos: DispatchQoS.QoSClass.utility) - // Weak here is necessary, otherwise, we'd have a retain cycle. - dispatchQueue.asyncAfter(deadline: DispatchTime.now() + garbageCollectionInterval) { [weak self] in - // Don't need to dispatch here. We'll dispatch in cleanMemory. We never want this to be cancelled. - self?.cleanMemory() - DispatchQueue.main.async { - // Should dispatch here because garbageCollectionInterval is not thread-safe - self?.startGarbageCollection() - } - } - } - } - - // MARK: - Private Functions - - // MARK: Listening - - /** - This function recusively traverses a model and adds the listener to the model and all of its children. - */ - private func addListener(_ listener: ConsistencyManagerListener, recursivelyToChildModels model: ConsistencyManagerModel) { - // Add this model as listening - addListener(listener, toModel: model) - // Recurse on the children - model.forEach() { child in - self.addListener(listener, recursivelyToChildModels: child) - } - } - - /** - This method adds a listener to a single model. It is not recursive. - - It checks to see if modelIdentifier is nil, and then adds the listener in the dictionary, but only if it's not already listening. - */ - private func addListener(_ listener: ConsistencyManagerListener, toModel model: ConsistencyManagerModel) { - let id = model.modelIdentifier - if let id = id { - var weakArray: WeakListenerArray = { - let weakArray = self.listeners[id] - if let weakArray = weakArray { - return weakArray - } else { - return WeakListenerArray() - } - }() - - let alreadyInArray: Bool = { - for i in 0.. (modelUpdates: [String: ModelChange], listeners: [ConsistencyManagerListener]) { - let updates = DictionaryHolder() - let listenersArray = ArrayHolder() - childrenAndListenersForModel(model, modelUpdates: updates, listenersArray: listenersArray) - return (updates.dictionary, listenersArray.array) - } - - /** - This is where all the work actually gets done for childrenAndListenersForModel(model: ConsistencyManagerModel). It's implemented like this so we don't create and destroy lots of dictionaries (which is actually a huge performance hit). - - I tried doing this with inout instead of making it truly functional, but turns out that inout doesn't work very well. - Changing to inout helped me about 10%, but after changing to a DictionaryHolder and ArrayHolder, performance was improved ~50x. - */ - private func childrenAndListenersForModel(_ model: ConsistencyManagerModel, modelUpdates: DictionaryHolder, listenersArray: ArrayHolder) { - - if let id = model.modelIdentifier { - // Here, we want to store a list of all the projections for a model - // Normally, this will just be one element as all models with the same id have the same projection - // However, if we have multiple versions of the same model, we want to make sure they are all used to merge a new model - let projections: [ConsistencyManagerModel] - if let currentChanges = modelUpdates.dictionary[id], case .updated(var currentUpdates) = currentChanges { - let alreadyContainsProjection = currentUpdates.contains { currentProjection in - return currentProjection.projectionIdentifier == model.projectionIdentifier - } - // Only add the new projection if we don't already have one - if !alreadyContainsProjection { - currentUpdates.append(model) - } - projections = currentUpdates - } else { - // If we don't have any models from this ID yet, we should just add the new model - projections = [model] - } - modelUpdates.dictionary[id] = .updated(projections) - - // Here, we're going to take all the listeners to this model and add it to our listeners array - // We're not going to prune the listeners array because of performance reasons (we want updates to go fast) - let idListeners = listeners[id] - if let idListeners = idListeners { - for index in 0..Void) { - visit(model) - model.forEach { child in - self.recursivelyIterateOverModel(child, visit: visit) - } - } - - /** - Given a listener and a list of updates, this function: - Given an array of listeners and a list of updates, this function: - - For each listener: - 1. Gets the current model. - 2. Generates the new model. - 3. Generates the list of changed and deleted ids. - 4. Ensures that listener listens to all the new models that have been added. - 5. Notifies the listener of the new model change. - - In the case of this listener being in a paused state, the function updates - the listener's PausedListener struct accordingly, without notifying the delegate. - */ - private func updateListeners(_ listeners: [ConsistencyManagerListener], - with updatedModels: [String: ModelChange], - context: Any?, - originalModel: ConsistencyManagerModel, - cancelled: () -> Bool) { - - var currentModels: [(listener: ConsistencyManagerListener, currentModel: ConsistencyManagerModel?)] = [] - - // In one dispatch_sync, we'll get all of the current models for each listener - DispatchQueue.main.sync { - currentModels = listeners.map { listener in - // If the listener is paused, then use the latest model (to which it has not officially listened) to do the transformation on later. - if let index = self.pausedListeners.firstIndex(where: { listener === $0.listener }) { - return (listener, self.pausedListeners[index].updatedModel) - } else { - return (listener, listener.currentModel()) - } - } - } - - // Given the current model, let's generate new models for each listener - let results: [(listener: ConsistencyManagerListener, newModel: ConsistencyManagerModel?, modelUpdates: ModelUpdates)] = currentModels.compactMap { (listener, currentModel) in - guard let currentModel = currentModel else { - // Else the model has disappeared (so the listener isn't listening to anything anymore). - // Let's not remove the listener though, because we could screw something up due to timing issues (we are on a different thread) - return nil - } - let newModel = self.updatedModelFromOriginalModel(currentModel, updatedModels: updatedModels, context: context) - if newModel.updates.deletedModelIds.count > 0 || newModel.updates.changedModelIds.count > 0 { - for model in newModel.newModels { - // We need to listen to all our new children - addListener(listener, recursivelyToChildModels: model) - } - return (listener, newModel.model, newModel.updates) - } else { - // There weren't actually any changes to this model so no need to update - return nil - } - } - - if cancelled() { - // Let's cancel this operation. - return - } - - // Again, we're just going to use one dispatch_async. - // In this block, we're going to return the results to the listener or update our paused listeners. - DispatchQueue.main.async { - results.forEach { (listener, newModel, modelUpdates) in - // Let's make sure the model hasn't changed since we last requested it. - // We're just going to make sure the id is the same so it represents the same data. - // If the id is nil, then we will still update since this represents a delete. - if let id = newModel?.modelIdentifier, - let currentId = listener.currentModel()?.modelIdentifier, id != currentId { - // The model has been changed while we were doing work, so let's just return. - // The next call to this function will take care of updating the model with more recent information. - return - } - if let index = self.pausedListeners.firstIndex(where: {listener === $0.listener}) { - let mergedChangedModels = modelUpdates.changedModelIds.union(self.pausedListeners[index].modelUpdates.changedModelIds) - let mergedDeletedModels = modelUpdates.deletedModelIds.union(self.pausedListeners[index].modelUpdates.deletedModelIds) - let mergedUpdates = ModelUpdates(changedModelIds: mergedChangedModels, deletedModelIds: mergedDeletedModels) - self.pausedListeners[index] = PausedListener(listener: listener, updatedModel: newModel, mostRecentContext: context, modelUpdates: mergedUpdates) - } else { - listener.modelUpdated(newModel, updates: modelUpdates, context: context) - } - } - self.modelUpdatesListeners.forEach { updatesListener in - updatesListener?.consistencyManager( - self, - updatedModel: originalModel, - changes: updatedModels, - context: context) - } - } - } - - // MARK: Model Changes - - /** - This function uses the map functionality of the models to generate a new model given a list of modelUpdates. - It returns a new model, a list of changes (ModelUpdates) and a list of any new models which were not contained in the old model. - */ - private func updatedModelFromOriginalModel(_ model: ConsistencyManagerModel, updatedModels: [String: ModelChange], context: Any?) -> (model: ConsistencyManagerModel?, updates: ModelUpdates, newModels: [ConsistencyManagerModel]) { - if let id = model.modelIdentifier { - if let modelChange = updatedModels[id] { - // The id matches, so we should replace this model with a different model - // At the point, we know that this is an id we care about. Let's see if it's an update or a delete. - switch modelChange { - case .updated(let replacementModels): - // It's an update. Let's apply the changes. - let mergedReplacementModel = mergedModelFromModel(model, withUpdates: replacementModels) - if !mergedReplacementModel.isEqualToModel(model) { - // We've found something to replace, and there's actually an update - delegate?.consistencyManager(self, willReplaceModel: model, withModel: mergedReplacementModel, context: context) - // There may be other changed models in the subtree of the model we're replacing. Let's search to see if anything else changed. - var updates = changedSubmodelIdsFromModel(model, modelUpdates: updatedModels) - updates.insert(id) - return (mergedReplacementModel, ModelUpdates(changedModelIds: updates, deletedModelIds: []), [mergedReplacementModel]) - } else { - // We've found there's an update here, but there's no actual change. So let's short curcuit here so we don't waste time recursing. - return (model, ModelUpdates(changedModelIds: [], deletedModelIds: []), []) - } - case .deleted: - // It was a delete. - // nil was an update, so returning it in updates - return (nil, ModelUpdates(changedModelIds: [], deletedModelIds: [id]), []) - } - } - } - // Else, this isn't the model we're looking for. Let's keep recursing. - - var updates = ModelUpdates(changedModelIds: [], deletedModelIds: []) - var newModels = [ConsistencyManagerModel]() - let newModel = model.map { child in - let result = self.updatedModelFromOriginalModel(child, updatedModels: updatedModels, context: context) - // Let's add all the updates to the array - updates.changedModelIds.formUnion(result.updates.changedModelIds) - updates.deletedModelIds.formUnion(result.updates.deletedModelIds) - newModels.append(contentsOf: result.newModels) - // Then return the new model - return result.model - } - if let newModel = newModel { - // These classes should always be the same as map should always return self - if type(of: newModel) != type(of: model) { - DispatchQueue.main.async { - self.delegate?.consistencyManager(self, failedWithCriticalError: CriticalError.WrongMapClass.rawValue) - } - } - } - if let id = model.modelIdentifier { - if newModel == nil { - // This occurs when the current model has been deleted. - // This has caused a cascading delete, so we should add the current model to the deleted items. - updates.deletedModelIds.insert(id) - } else if updates.changedModelIds.count > 0 || updates.deletedModelIds.count > 0 { - // Some child of this model has changed which means this model has changed. So, we should add this model to the updated list - updates.changedModelIds.insert(id) - } - } - - return (newModel, updates, newModels) - } - - /** - This function recusively inspects subtrees of a model and returns a set of all the models which have been changed. - It does not include models which have been deleted. - It's useful for detecting the full set of updates for an UpdateModel. - */ - private func changedSubmodelIdsFromModel(_ model: ConsistencyManagerModel, modelUpdates: [String: ModelChange]) -> Set { - var changedModels = Set() - model.forEach { child in - if let id = child.modelIdentifier, let update = modelUpdates[id] { - // We can ignore deletes because we are only looking for updated models. - // Here, we should merge and check for equality to see if anything has actually changed. - if case .updated(let models) = update, !self.mergedModelFromModel(child, withUpdates: models).isEqualToModel(child) { - // There's another update here - changedModels.insert(id) - } - } - // Continue recursion - changedModels.formUnion(self.changedSubmodelIdsFromModel(child, modelUpdates: modelUpdates)) - } - return changedModels - } - - /** - This function takes an original model and a list of updates. It merges each of these models into the original model. - If the model is not using projections, then there will be one model in this array and the implementation will just return the new model. - */ - private func mergedModelFromModel(_ model: ConsistencyManagerModel, withUpdates updates: [ConsistencyManagerModel]) -> ConsistencyManagerModel { - // We want to merge each projection into the current model - return updates.reduce(model) { current, modelToMerge in - return current.mergeModel(modelToMerge) - } - } - - // MARK: Threading - - /** - A helper function which wraps our queue. - You can call the closure provided by the block to check if the operation has been cancelled. - */ - private func dispatchTask(_ task: @escaping (()->Bool)->Void) { - // In order to get cancelled for an NSBlockOperation, you need to do a weak dance - // If this is strong, then the block will hold a reference to itself and cause a retain cycle - weak var weakOperation: BlockOperation? - let operation = BlockOperation() { - // Create a function which returns true if the block has been cancelled - let cancelled = { - // Default to true if weakOperation is nil - return weakOperation?.isCancelled ?? true - } - // Let's check here to see if it's cancelled before we start - if cancelled() { - return - } - task(cancelled) - } - weakOperation = operation - queue.addOperation(operation) - } - - // MARK: - Memory Warnings - - func applicationDidReceiveMemoryWarning(_ notification: Notification) { - cleanMemory() - } - - /** - This is a simple class which listens for memory warnings and notifies the consistency manager. - It's useful because it means we don't need to make the ConsistencyManager inherit from NSObject. - */ - class MemoryWarningListener: NSObject { - weak var delegate: ConsistencyManager? - - override init() { - super.init() - #if os(iOS) - // On OSX, we don't need this since there are no memory warnings. - NotificationCenter.default.addObserver(self, selector: #selector(UIApplicationDelegate.applicationDidReceiveMemoryWarning(_:)), name: UIApplication.didReceiveMemoryWarningNotification, object: nil) - #endif - } - - deinit { - NotificationCenter.default.removeObserver(self) - } - - @objc - func applicationDidReceiveMemoryWarning(_ notification: Notification) { - delegate?.applicationDidReceiveMemoryWarning(notification) - } - } - - struct PausedListener { - weak var listener: ConsistencyManagerListener? - - /// The model that is updated with all of the changes that are happening while the listener is paused - let updatedModel: ConsistencyManagerModel? - - /// The most recent context (each intermediate context is replaced upon update) - let mostRecentContext: Any? - - /// A list of changed and deleted models between the listener's stored model and the most updated model. - /// Models referred to in these sets are not guaranteed to always be accurate since successive changes/adds/deletes - /// may undo previous ones. When the listener resumes listening, final tree traversals and checks will occur - /// before calling the delegate method with a consistency manager change and confirmed changelist. - let modelUpdates: ModelUpdates - } -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift deleted file mode 100644 index a6dbd3d..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/Array+Weak.swift +++ /dev/null @@ -1,99 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -extension Array where Element: WeakHolder { - /** - This method iterates through the array and removes any element which is nil. - It also returns an array of nonoptional values for convenience. - - This method runs in O(n), so you should only call this method every time you need it. You should only call it once. - */ - public mutating func prune() -> [Element.Element] { - var nonOptionalElements: [Element.Element] = [] - self = self.filter { (element: Element.Element?) in - if let element = element { - nonOptionalElements.append(element) - return true - } else { - return false - } - } - return nonOptionalElements - } - - /** - This defines a map function which returns an array of WeakHolder. - However, the `transform` function converts the inner elements (instead of the outer elements). - This allows you to write code like: - ``` - var array = [WeakStruct(element: UIViewController())]() - let viewArray: [WeakStruct] = array.map { (viewController: UIViewController?) in - return viewController?.view - } - ``` - - Note how you need to specify the types of the map so it doesn't conflict with the default map. - It will not prune out nil values so the resulting array will always maintain count. - */ - public func map(_ transform: (Element.Element?) throws -> T?) rethrows -> [U] where U.Element == T { - return try map { (weakHolder: Element) in - let newElement = try transform(weakHolder.element) - return U.init(element: newElement) - } - } - - /** - This defines a flatMap function which returns an array of WeakHolder. - However, the `transform` function converts the inner elements (instead of the outer elements). - - IMPORTANT: This function automatically runs a `prune()` as it goes as you may expect with `flatMap`. - It will call the transform function on any inner element (including nil), but will filter out all nils in the final result. - - This allows you to write code like: - ``` - var array = [WeakStruct(element: UIViewController())]() - let viewArray: [WeakStruct] = array.flatMap { (viewController: UIViewController) in - if viewController?.view.alpha == 0 { - return nil - } - return viewController?.view - } - ``` - - Note how you need to specify the types of the flatMap so it doesn't conflict with the default flatMap. - */ - public func flatMap(_ transform: (Element.Element?) throws -> T?) rethrows -> [U] where U.Element == T { - return try compactMap { (weakHolder: Element) in - let newElement = try transform(weakHolder.element) - return newElement.flatMap(U.init) - } - } - - /** - This defines a filter function which returns an array of WeakHolder. - However, the `isIncluded` function converts the inner elements (instead of the outer elements). - - This allows you to write code like: - ``` - var array = [WeakStruct(element: UIViewController())]() - let viewArray: [WeakStruct] = array.filter { (viewController: UIViewController?) in - return (viewController?.view.alpha == 0) ?? false - } - ``` - - Note how you need to specify the types of the flatMap so it doesn't conflict with the default flatMap. - */ - public func filter(_ isIncluded: (Element.Element?) throws -> Bool) rethrows -> [Element] { - return try filter { (weakHolder: Element) in - return try isIncluded(weakHolder.element) - } - } -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift deleted file mode 100644 index a535cf5..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchListener.swift +++ /dev/null @@ -1,131 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -/** - This class allows you to combine multiple different listeners into one listener. - - If you have multiple consistency manager listeners that share common child models then an update to one of these child models will cause all of the - listeners to fire. You may want to be notified only once when all of these listeners fire instead of multiple times. This class allows you to do this. - You initialize an instance of this class with an array of listeners. - If one or more of these listeners are updated due to a consistency manager change, then first modelUpdated will be called on all of the listeners; then, - this class will call modelUpdated once on its delegate with a batch model representing all the models. - This will notify you once that a change has occured. - - ### SETUP - - 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. - */ -open class BatchListener: ConsistencyManagerListener { - - public let listeners: [ConsistencyManagerListener] - - /// The delegate that is called after one or more listeners in the `listeners` array are updated - open weak var delegate: BatchListenerDelegate? - - /// Listening to all models occurs immediately upon initialization of the BatchListener object - public init(listeners: [ConsistencyManagerListener], consistencyManager: ConsistencyManager) { - self.listeners = listeners - addListener(consistencyManager) - } - - /** - 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 addListener(_ consistencyManager: ConsistencyManager) { - consistencyManager.addListener(self) - } - - /** - Whenever you manually change a model on a listener, you must call this method to let the batch listener know. - */ - open func listenerHasUpdatedModel(_ listener: ConsistencyManagerListener, consistencyManager: ConsistencyManager) { - if let model = listener.currentModel() { - consistencyManager.addListener(self, to: model) - } - // else the model nil, so we don't have to listen to anything new. - } - - /** - If you manually change a model on a listener and you do not want to relisten on the whole model (because only part of the model has changed), you can call this method to relisten on only part of a model. - - - parameter model: The model which has changed. - - parameter consistencyManager: The consistency manager you are using to listen to these changes. - */ - open func listenerHasUpdatedModel(_ model: ConsistencyManagerModel, consistencyManager: ConsistencyManager) { - consistencyManager.addListener(self, to: model) - } - - // MARK: Consistency Manager Implementation - - open func currentModel() -> ConsistencyManagerModel? { - let models = listeners.map { listener in - return listener.currentModel() - } - return BatchUpdateModel(models: models) - } - - open func modelUpdated(_ model: ConsistencyManagerModel?, updates: ModelUpdates, context: Any?) { - if let model = model as? BatchUpdateModel, model.models.count == listeners.count { - - var updatedListeners = [ConsistencyManagerListener]() - - for (index, listener) in listeners.enumerated() { - if let currentModel = listener.currentModel() { - let currentModelIds = BatchListener.allIds(currentModel) - let currentModelUpdates = ModelUpdates( - changedModelIds: updates.changedModelIds.intersection(currentModelIds), - deletedModelIds: updates.deletedModelIds.intersection(currentModelIds) - ) - if currentModelUpdates.changedModelIds.count > 0 || currentModelUpdates.deletedModelIds.count > 0 { - listener.modelUpdated(model.models[index], updates: currentModelUpdates, context: context) - updatedListeners.append(listener) - } - } - // else they have no model, so nothing can have changed - } - // Now that we've updated all of our listeners, let's update our delegate - delegate?.batchListener(self, hasUpdatedListeners: updatedListeners, updates: updates, context: context) - } else { - assertionFailure("modelUpdated called with a model that isn't a BatchUpdateModel, or the array was the wrong size. This should never happen and indicates a bug in the library.") - } - } - - // MARK: Private Helpers - - fileprivate static func allIds(_ model: ConsistencyManagerModel) -> Set { - var ids = Set() - if let id = model.modelIdentifier { - ids.insert(id) - } - model.forEach { child in - ids.formUnion(allIds(child)) - } - return ids - } -} - -public protocol BatchListenerDelegate: class { - /** - This method is called whenever one of the listeners has an updated model. - First, it will call the delegate method of each listener which is affected, then it will call this method. - When you resume listening on a BatchListener, this method will be called if there were updates that were missed. - This method is called on the main thread. - - - parameter batchListener: The batch listener which received this update. - - parameter listeners: The listeners whicih have been updated. - - parameter updates: The combined ModelUpdates from all the listeners affected. - - parameter context: The context which caused this change. - */ - func batchListener(_ batchListener: BatchListener, hasUpdatedListeners listeners: [ConsistencyManagerListener], updates: ModelUpdates, context: Any?) -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchUpdateModel.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchUpdateModel.swift deleted file mode 100644 index d37d4a2..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/BatchUpdateModel.swift +++ /dev/null @@ -1,92 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - - -/** - This model is useful if you want to batch updates to the consistency manager or listen to multiple models. - It has 3 main use cases: - - 1. Update multiple models in the consistency model at the same time. - This will also cause listeners to only get notified once of this change which can cause better performance. - In general, this is better than a for loop of updates. - 2. Listen to multiple models at once without an modelIdentifier. - If you want to listen to mutliple models, you can use this API. The model will be set to nil if it is deleted. - The batch listener uses this class, so you can look there for a sample implementation. - 3. Listen to multiple models with an modelIdentifier. - If you use a modelIdentifier, you can have two seperate BatchUpdateModels which are kept in sync. - This can be useful if you want to keep two different collections in sync. - */ -public final class BatchUpdateModel: ConsistencyManagerModel { - - /// The updated models - public let models: [ConsistencyManagerModel?] - - /// The modelIdentifier for this BatchUpdateModel. This can be used to keep two BatchUpdateModels consistent. - public let modelIdentifier: String? - - /** - - parameter models: The models you want to listen to or update. - - parameter modelIdentifier: An identifier for the batch model. - This modelIdentifier must be globally unique (and different from all modelIdentifiers). - If two BatchUpdateModels have the same identifier, they will be treated as the same model and should have the same data. - */ - public init(models: [ConsistencyManagerModel], modelIdentifier: String? = nil) { - self.models = models.map { model in model as ConsistencyManagerModel? } - self.modelIdentifier = modelIdentifier - } - - /** - An initializer that allows you to pass in an array of optional models. - This can be useful if you want to continuously listen to multiple models which may be deleted. - - - parameter models: The models you want to listen to or update. - - parameter modelIdentifier: An identifier for the batch model. - This modelIdentifier must be globally unique (and different from all modelIdentifiers). - If two BatchUpdateModels have the same identifier, they will be treated as the same model and should have the same data. - */ - public init(models: [ConsistencyManagerModel?], modelIdentifier: String? = nil) { - self.models = models - self.modelIdentifier = modelIdentifier - } - - public func map(_ transform: (ConsistencyManagerModel) -> ConsistencyManagerModel?) -> ConsistencyManagerModel? { - let newModels = models.map { model in - return model.flatMap(transform) - } - return BatchUpdateModel(models: newModels) - } - - public func forEach(_ visit: (ConsistencyManagerModel) -> Void) { - models.compactMap { $0 }.forEach(visit) - } - - public func isEqualToModel(_ other: ConsistencyManagerModel) -> Bool { - guard let other = other as? BatchUpdateModel else { - return false - } - - if other.models.count != models.count { - return false - } - - for (index, model) in models.enumerated() { - if let model = model, let otherModel = other.models[index] { - if !model.isEqualToModel(otherModel) { - return false - } - } else if !(model == nil && other.models[index] == nil) { - return false - } - } - - return true - } -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelChange.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelChange.swift deleted file mode 100644 index 665a57e..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelChange.swift +++ /dev/null @@ -1,44 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -/** - This class is used to show which child models have changed. This object is usually in a dictionary: `[String: ModelChange]`. - The strings represent IDs and it shows what's changed in this ID. Either the ID has been deleted or updated. - If it's been updated, there are potentially several models that have updated if you are using projections. - */ -public enum ModelChange: Equatable { - /** - This indicates a model has been updated and lists the new models. - If you are using projections, there may be multiple models that represent this change. - Otherwise, there will just be one model here. - */ - case updated([ConsistencyManagerModel]) - /** - This indicates a model has been deleted. - */ - case deleted - - public static func ==(lhs: ModelChange, rhs: ModelChange) -> Bool { - switch (lhs, rhs) { - case (.updated(let l), .updated(let r)): - guard l.count == r.count else { - return false - } - return zip(l, r).reduce(true) { isEqual, tuple in - return isEqual && tuple.0.isEqualToModel(tuple.1) - } - case (.deleted, .deleted): - return true - default: - return false - } - } -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelUpdates.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelUpdates.swift deleted file mode 100644 index c6fb410..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/ModelUpdates.swift +++ /dev/null @@ -1,37 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -/** - When you do an update through the consistency manager, it may cause multiple objects to be updated or deleted. - This struct informs you of the ids of objects which have changed. -*/ -public struct ModelUpdates { - /** - The ids of all the models which have changed. - - This includes all non-deleted models which return false from isEqual(other). - Therefore, if the root model is not deleted, it will always be included in this set. - If a submodel is changed (or deleted), all parent models will be included in this set. - */ - public var changedModelIds: Set - - /** - The ids of all models that have been deleted. - - If you return nil from map (indicating a cascading delete), multiple models may be deleted. All these ids will be included in this set. - */ - public var deletedModelIds: Set - - public init(changedModelIds: Set, deletedModelIds: Set) { - self.changedModelIds = changedModelIds - self.deletedModelIds = deletedModelIds - } -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift deleted file mode 100644 index b70bd03..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift +++ /dev/null @@ -1,38 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -/** - This defines a WeakHolder which specifically holds a ConsistencyManagerListener. - This is useful because WeakBox is illegal in Swift. You need a concrete type like this one. - */ -public struct WeakListenerBox: WeakHolder { - - // Sadly, we need to declare this because by default, it's internal - public init(element: ConsistencyManagerListener?) { - self.element = element - } - - public weak var element: ConsistencyManagerListener? -} - -/** - This defines a WeakHolder which specifically holds a ConsistencyManagerUpdatesListener. - This is useful because WeakBox is illegal in Swift. You need a concrete type like this one. - */ -public struct WeakUpdatesListenerBox: WeakHolder { - - // Sadly, we need to declare this because by default, it's internal - public init(element: ConsistencyManagerUpdatesListener?) { - self.element = element - } - - public weak var element: ConsistencyManagerUpdatesListener? -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakArray.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakArray.swift deleted file mode 100644 index 8d4e151..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakArray.swift +++ /dev/null @@ -1,173 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -/** - This typealias allows you to create a `WeakArray` with any class type. - e.g. - `var weakArray = WeakArray()` - */ -public typealias WeakArray = AnyWeakArray> - -/** - This typealias allows you to create a `WeakArray` with ConsistencyManagerListener. - */ -public typealias WeakListenerArray = AnyWeakArray - -/** - This typealias allows you to create a `WeakArray` with ConsistencyManagerUpdatesListener. - */ -public typealias WeakUpdatesListenerArray = AnyWeakArray - -/** - This class defines an array which doesn't hold strong references to its elements. - If an element in the array gets dealloced at some point, accessing that element will just return nil. - It takes advantage of out Array+Weak extension, so all the functions here are just pass throughs to the Array class. - - You cannot put structs into the WeakArray because structs cannot be declared with weak. You can only put classes into the array. - - KNOWN BUGS - - You can't create a WeakArray. This is because of an Apple bug: https://bugs.swift.org/browse/SR-1176. - So, instead of this, it's recommended to create your own wrapper class and create a typealias (as seen above). -*/ - -public struct AnyWeakArray: ExpressibleByArrayLiteral { - - // MARK: Internal - - /// The internal data is an array of closures which return weak T's - fileprivate var data: [T] - - // MARK: Initializers - - /** - Creates an empty array - */ - public init() { - data = [] - } - - /** - Creates an array with a certain capacity. All elements in the array will be nil. - */ - public init(count: Int) { - data = Array(repeating: T(element: nil), count: count) - } - - /** - Array literal initializer. Allows you to initialize a WeakArray with array notation. - */ - public init(arrayLiteral elements: T.Element?...) { - data = elements.map { element in - return T.init(element: element) - } - } - - /** - Creates an array with the inner type `[T]` where T is a WeakHolder. - */ - public init(_ data: [T]) { - self.data = data - } - - // MARK: Public Properties - - /// How many elements the array stores - public var count: Int { - return data.count - } - - // MARK: Public Methods - - /** - Append an element to the array. - */ - public mutating func append(_ element: T.Element?) { - data.append(T.init(element: element)) - } - - /** - This method iterates through the array and removes any element which is nil. - It also returns an array of nonoptional values for convenience. - - This method runs in O(n), so you should only call this method every time you need it. You should only call it once. - */ - public mutating func prune() -> [T.Element] { - return data.prune() - } - - /** - This function is similar to the map function on Array. - It takes a function that maps T to U and returns a WeakArray of the same length with this function applied to each element. - It does not prune any nil elements as part of this map so the resulting count will be equal to the current count. - */ - public func map(_ transform: (T.Element?) throws -> U.Element?) rethrows -> AnyWeakArray { - let newArray: [U] = try data.map(transform) - return AnyWeakArray(newArray) - } - - /** - This function is similar to the flatMap function on Array. - It takes a function that maps T to U? and returns a WeakArray with this function applied to each element. - It automatically prunes any nil elements as part of this flatMap and removes them. - */ - public func flatMap(_ transform: (T.Element?) throws -> U.Element?) rethrows -> AnyWeakArray { - let newArray: [U] = try data.flatMap(transform) - return AnyWeakArray(newArray) - } - - /** - This function is similar to the filter function on Array. - The `isIncluded` closure simply returns whether you want the element in the array. - */ - public func filter(_ isIncluded: (T.Element?) throws -> Bool) rethrows -> AnyWeakArray { - let newArray: [T] = try data.filter(isIncluded) - return AnyWeakArray(newArray) - } -} - -// MARK: MutableCollectionType Implementation - -extension AnyWeakArray: MutableCollection { - - // Required by SequenceType - public func makeIterator() -> IndexingIterator> { - // Rather than implement our own generator, let's take advantage of the generator provided by IndexingGenerator - return IndexingIterator>(_elements: self) - } - - // Required by _CollectionType - public func index(after i: Int) -> Int { - return data.index(after: i) - } - - // Required by _CollectionType - public var endIndex: Int { - return data.endIndex - } - - // Required by _CollectionType - public var startIndex: Int { - return data.startIndex - } - - /** - Getter and setter array - */ - public subscript(index: Int) -> T.Element? { - get { - return data[index].element - } - set { - data[index] = T.init(element: newValue) - } - } -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakBox.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakBox.swift deleted file mode 100644 index 8753665..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakBox.swift +++ /dev/null @@ -1,23 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -/** - This is a generic implementation of `WeakHolder` which we use the in `WeakArray` class. - */ -public struct WeakBox: WeakHolder { - - // Sadly, we need to declare this because by default, it's internal - public init(element: T?) { - self.element = element - } - - public weak var element: T? -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakHolder.swift b/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakHolder.swift deleted file mode 100644 index 6ef79d1..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/DataStructures/WeakHolder.swift +++ /dev/null @@ -1,45 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -/** - This protocol defines a box for an element. - It's useful because we can declare both generic types (e.g. `WeakBox`) and concrete types (e.g. `WeakProtocolBox`). - */ -public protocol WeakHolder { - - associatedtype Element - - /** - A getter for the inner element. Likely, this var will be labeled as weak in your implementation. - */ - var element: Element? { get } - - /** - An initializer for the `WeakHolder`. - This is useful to implement `map`. - */ - init(element: Element?) - - /** - A map function which returns another `WeakHolder`. This allows us to treat `WeakHolder` as a monad and create other `WeakHolders` from the current one. - You do not need to implement this as it is implemented in the extension. - */ - func map(_ transform: (Element) throws -> T) rethrows -> U where U.Element == T -} - -extension WeakHolder { - public func map(_ transform: (Element) throws -> T) rethrows -> U where U.Element == T { - // First, we want to create a new element from the current element using the transform function provided - let newElement = try element.flatMap(transform) - // Then, we simply initialzed U with the new element. - return U.init(element: newElement) - } -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/Helpers/CollectionHelpers.swift b/Pods/ConsistencyManager/ConsistencyManager/Helpers/CollectionHelpers.swift deleted file mode 100644 index 7ceebfa..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/Helpers/CollectionHelpers.swift +++ /dev/null @@ -1,28 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -/** - This class creates a reference counted dictionary instead of doing structs. - It's used for a specific part of the consistency manager for performance reasons. - Using this over regular structs caused a ~50x performance improvement. - */ -class DictionaryHolder { - var dictionary = Dictionary() -} - -/** - This class creates a reference counted array instead of doing structs. - It's used for a specific part of the consistency manager for performance reasons. - Using this over regular structs caused a ~50x performance improvement. - */ -class ArrayHolder { - var array = Array() -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/Helpers/ErrorManager.swift b/Pods/ConsistencyManager/ConsistencyManager/Helpers/ErrorManager.swift deleted file mode 100644 index 1abd0e8..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/Helpers/ErrorManager.swift +++ /dev/null @@ -1,20 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -/** - This is an enum for all the errors we have in the app. - We do not want to make it public because that means adding an error is a backwards incompatible change. - We'll just use this to keep track of all errors. - */ -enum CriticalError: String { - case DeleteIDFailure = "Attemped to delete an object which does not have an id. This is a no-op so is probably not behaving like you expect." - case WrongMapClass = "You must return a class of the same type from map. You should not attempt to change classes. In the future, we will probably make this protocol return Self so this is enforced. See the docs for map(...) in ConsistencyManagerModel for more info." -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift b/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift deleted file mode 100644 index 0c79720..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift +++ /dev/null @@ -1,59 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -/** - The delegate protocol for the conistency manager. - - It provides error handling and debugging helpers. - */ -public protocol ConsistencyManagerDelegate: class { - /** - Sometimes, the consistency manager may encounter a critical error. - This is usually because a method implemented by your models or listeners is not implemented correctly. - If you encounter one of these errors, the conistency manager will gracefully degrade by ignoring the change or request, - and there is likely nothing you can do about it in your code (catching the error on a case by case basis won't help because you won't know how to handle the error). - This method is provided as a convenience so you can log these errors and fix them. - If you have set up the library correctly, you should never have this method called. - - This method is optional. If you don't implement it, it will do nothing. - - - parameter consistencyManager: The consistency manager with the error. - - parameter error: An english string describing the error. - This is useful for logging, but should NOT be shown to the user as it will not be very useful. - */ - func consistencyManager(_ consistencyManager: ConsistencyManager, failedWithCriticalError error: String) - - /** - This is called whenever the consistency manager finds a model which has changed and will replace it. - These models could be child models so it's actually where the diff is taking place. - This is mostly just useful for debugging. It will be called whenever something changes in the consistency manager. - - This method is optional. If you don't implement it, it will do nothing. - - - parameter consistency Manager: The consistency manager with the error. - - parameter oldModel: The previous model which was found. - - parameter newModel: The new model which will replace the old model. - - parameter context: The context passed in to the consistency manager which caused this change. - */ - func consistencyManager(_ consistencyManager: ConsistencyManager, willReplaceModel oldModel: ConsistencyManagerModel, withModel newModel: ConsistencyManagerModel, context: Any?) -} - -// MARK: Optional Methods Extension - -public extension ConsistencyManagerDelegate { - func consistencyManager(_ consistencyManager: ConsistencyManager, failedWithCriticalError error: String) { - // No implementation. This makes this method optional. - } - - func consistencyManager(_ consistencyManager: ConsistencyManager, willReplaceModel oldModel: ConsistencyManagerModel, withModel newModel: ConsistencyManagerModel, context: Any?) { - // No implementation. This makes this method optional. - } -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerListener.swift b/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerListener.swift deleted file mode 100644 index ec64802..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerListener.swift +++ /dev/null @@ -1,44 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -/** - This protocol should be defined on any class you want to add as a listener to the conistency manager. - All methods are called on the main thread, and you should ensure that these methods run fast. - - You SHOULD NOT call ANY conistency manager methods from either of these functions. This could cause an infinite loop. - */ - -public protocol ConsistencyManagerListener: class { - - /** - This should return the current model which this class cares about. - The consistency manager is a decentralized model manager. - It doesn't actually contain references to the model and will call this method whenever it needs one. - - It is run synchronously on the main thread, so it should be a fast call. - */ - func currentModel() -> ConsistencyManagerModel? - - /** - This function is called whenever the model has been updated by the conistency manager. - - There are a few important points: - - * This model will always be the same class as returned by current model. Sadly, the swift typing system isn't strong enough to make this a generic protocol. - * Do NOT call any consistency manager methods from this method. You do NOT need to call listen on the new model as this is handled automatically. - * The model will be nil if it has been deleted from the consistency manager. - - - parameter model: The new model which has been updated. If nil, it indicates the model has been deleted. - - parameter updates: An update model which contains all the changes beteween the current model and the new model. - - parameter context: This passes back the context which was passed to the consistency manager when the update occurred. - */ - func modelUpdated(_ model: ConsistencyManagerModel?, updates: ModelUpdates, context: Any?) -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift b/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift deleted file mode 100644 index 37c1f69..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerModel.swift +++ /dev/null @@ -1,244 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -/** -This protocol should be implemented by all the models you want to track using the consistency manager. Effectively, it asks you to treat a model as a tree, which enables the library to traverse the tree and map the tree. - -IMPORTANT: These methods should be thread safe. Since they are all read operations, and do not mutate the model in any way, this shouldn't be a problem. We recommend using this library with completely immutable models for this reason. However, if there is a problem, you should place a lock on your model when running these methods. - -Example Implementation: - -``` -class Person: ConsistencyManagerModel { - let id: String - let name: String - let currentLocation: Location? - let homeTown: Location - - var modelIdentifier: String? { - return id - } - - func map(transform: ConsistencyManagerModel -> ConsistencyManagerModel?) -> Person? { - let newCurrentLocation: Location? = { - if let currentLocation = self.currentLocation { - return transform(currentLocation) as? Location - } else { - return nil - } - }() - let newHomeTown = transform(homeTown) as? Location - if newHomeTown == nil { - return nil - } - - return Person(id: id, name: name, currentLocation: newCurrentLocation, homeTown: newHomeTown!) - } - - func forEach(function: ConsistencyManagerModel -> Void) { - if let currentLocation = currentLocation { - function(currentLocation) - } - function(homeTown) - } - - func isEqualToModel(other: ConsistencyManagerModel) -> Bool { - guard let other = other as? Person { - return false - } - if id != other.id { return false } - if name != other.name { return false } - if !homeTown.isEqualToModel(other.homeTown) { return false } - if let currentLocation = currentLocation, let otherLocation = other.currentLocation where !currentLocation.isEqualToModel(otherLocation) { - return false - } else if currentLocation != nil || other.currentLocation != nil { - return false - } - return true - } -} - -class Location: ConsistencyManagerModel { - let name: String - - var modelIdentifier: String? { - // No id, so let's return nil - return nil - } - - func map(transform: ConsistencyManagerModel -> ConsistencyManagerModel?) -> Location? { - // We have no submodels, so nothing to map here - return self - } - - func forEach(function: ConsistencyManagerModel -> Void) { - // Do nothing. Nothing to iterate over. - } - - func isEqualToModel(other: ConsistencyManagerModel) -> Bool { - guard let other = other as? Person { - return false - } - if name != other.name { return false } - return true - } -} -``` - -For other examples, see the documentation on Github. - -*/ -public protocol ConsistencyManagerModel { - - // MARK: Required Methods - - /** - This method should return a globally unique identifier for the model. - If it has no id, then you can return nil. If it has no id, it will be considered part of its parent model and you will not be able to update this model in isolation. - Whenever you change a field on this model, you must post the parent model to the consistency manager for the updates to take place. - - If you're ids are not globally unique, then it's recommended to prefix this id with the class name. - Ids must be globally unique or you will get unexpected behavior. - */ - var modelIdentifier: String? { get } - - /** - This method should run a map function on each child model and return a new version of self. - It should iterate over all the model's children models and run a transform function on each model. - Then, it should return a new version of self with the new child models. - Note: child models are any model which conforms to the protocol. So you can ignore anything else (strings, ints, etc). - - If transform returns nil, it should remove this child model. - If this child is in an array, it's recommended that you just remove this element from the array. - If the model is a required model, it is up to you how you implement this. - However, we recommend that you consider this a cascading delete and return nil from this function (signifying that we should delete the current model). - - It should NOT be recursive. As in, it should only map on the immediate children. - It should not call map on its children's children. - - - NOTE: Ideally, we'd like this function to return `Self?`, not `ConsistencyManagerModel?`. - However, Swift currently has a few bugs regarding returning Self in protocols which make this protocol hard to implement (e.g. returning self in protocol extensions doesn't work). - When these bugs are fixed in Swift, we may consider moving back to using Self. - You should always return the same type of model from this function even though the protocol doesn't specifically require it. - - - parameter transform: The mapping function - - Returns: A new version of self with the map function applied - */ - func map(_ transform: (ConsistencyManagerModel) -> ConsistencyManagerModel?) -> ConsistencyManagerModel? - - /** - This function should simply iterate over all the child models and run the function passed in. - Just like map, it only needs to run on anything which is a child and a ConsistencyManagerModel. - - This is very similar to map, and you can actually implement it using map (possibly in a protocol extension). - For instance: - - extension ConsistencyManagerModel { - func forEach(function: ConsistencyManagerModel -> Void) { - _ = map() { model in - function(model) - return model - } - } - } - - Here, we are just running map and discarding the result. - This is correct and can save you some lines of code, but it's less performant since you are creating a new model and then discarding it. - This performance difference is minor, so it's up to you which you prefer. - - It should NOT be recursive. It should only iterate over the immediate children. Not its children chilrden. - - - parameter visit: The iterating function to be called on each child element. - */ - func forEach(_ visit: (ConsistencyManagerModel) -> Void) - - /** - This function should compare one model to another model. - If you are Equatable, you do NOT need to implement this, and it will automatically be implemented using ==. - This is implemented in the protocol extension later in this file. - - Nearly always, you want this to act like == and return false if there are any differences. - However, in some cases, there may be fields that you don't care about that change a lot. - For instance, you may have some Globally Unique ID returned by the server which isn't used for rendering. - If you want, you can choose to return true from this function even if these 'transient fields' are different. - This means that if only this field changes, it will NOT cause a consistency manager update. - Instead, the change will be dropped. - However, if there are any other field changes, it will still cause an update and update the whole model. - This is rare, but an open option if you need it. - - - parameter other: The other model to compare to. - - Returns: True if the models are equal and we should not generate a consistency manager change. - */ - func isEqualToModel(_ other: ConsistencyManagerModel) -> Bool - - // MARK: Projections - - /** - Optional - Most setups don't need to implement this method. You only need to implement this if you are using projections. - For more information on projections, see https://linkedin.github.io/ConsistencyManager-iOS/pages/055_projections.html. - - This should take another model and merge it into the current model. - If you have two models with the same id but different data, this should merge one model into the other. - This should return the same type as Self. It should take all updates from the other model and merge it into the current model. - For performance reasons, you could check if the other model is the same projection. - If it is, you could avoid merging and just return the other model (since it's the correct class). - - - NOTE: Ideally, we'd like this function to return `Self?`, not `ConsistencyManagerModel?`. - However, Swift currently has a few bugs regarding returning Self in protocols which make this protocol hard to implement (e.g. returning self in protocol extensions doesn't work). - When these bugs are fixed in Swift, we may consider moving back to using Self. - You should always return the same type of model from this function even though the protocol doesn't specifically require it. - - - parameter model: The other model to merge into the current model. - - Returns: A new version of the current model with the changes from the other model. - */ - func mergeModel(_ model: ConsistencyManagerModel) -> ConsistencyManagerModel - - /** - You can override to distinguish different projections. Usually, you would have a different class for each projection. - But you can use this to have one class represent multiple different projections (with optional fields for missing members). - This is unusual and it's recommended instead to just use different classes for each projection. - If you do this, you do not need to override this method and can use the default value. - */ - var projectionIdentifier: String { get } -} - -public extension ConsistencyManagerModel where Self: Equatable { - - /** - This is a default implementation for isEqualToModel for models which are equatable. - This can be overridden in subclasses if you don't want this default behavior. - */ - func isEqualToModel(_ other: ConsistencyManagerModel) -> Bool { - if let other = other as? Self { - return self == other - } else { - return false - } - } -} - -/** - This extension contains the default implementations which make `mergeModel(:)` and `projectionIdentifier` optional. - */ -public extension ConsistencyManagerModel { - func mergeModel(_ model: ConsistencyManagerModel) -> ConsistencyManagerModel { - // Usually, we don't need to merge and instead just return the other model. - // This is because when we're not using projections, classes of the same id will always be of the same type. - // So, we should just replace the current model with the updated model. - assert(type(of: self) == type(of: model), "Two models of different classes have the same ID. This is not allowed without override mergeModel(:). See the documentation for more information on projections. Current Model: \(type(of: self)) - Update Model: \(type(of: model))") - return model - } - - var projectionIdentifier: String { - // Returns the class name as a string - // This means each class type identifies a different projection - return String(describing: type(of: self)) - } -} diff --git a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift b/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift deleted file mode 100644 index 507a379..0000000 --- a/Pods/ConsistencyManager/ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift +++ /dev/null @@ -1,36 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -import Foundation - -/** - This protocol allows a class to listen to ALL changes to the consistency manager. - */ -public protocol ConsistencyManagerUpdatesListener: class { - /** - Called whenever there is any change to the consistency manager. - This method is run on the main thread. If you have any extensive processing, it's highly recommended to do this on a background thread - since this will be called for every single consistency update. - - This method passes back a list of all the updates made as a result of this change. - It is a dictionary of `[modelIdentifier: change]`. All of the model's children will be in this dictionary if it was an update. - - - parameter consistencyManager: The consistency manager which has received the change. - - parameter model: The model which has been updated (NOTE: This model may have been deleted). - To check if it has been deleted, check `changes[model.modelIdentifier] == .deleted`. - - parameter changes: This is a flattened representation of all the children of the model that was updated. - It is a dictionary from ID to model. If it is nil, it has been deleted. - The value is an array because multiple models with the same ID may have been updated. This only applies if you're using projections. - - parameter context: The context passed in with this update - */ - func consistencyManager(_ consistencyManager: ConsistencyManager, - updatedModel model: ConsistencyManagerModel, - changes: [String: ModelChange], - context: Any?) -} diff --git a/Pods/ConsistencyManager/LICENSE b/Pods/ConsistencyManager/LICENSE deleted file mode 100644 index 94dedef..0000000 --- a/Pods/ConsistencyManager/LICENSE +++ /dev/null @@ -1,203 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2016 LinkedIn Corp. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - 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. - diff --git a/Pods/ConsistencyManager/README.md b/Pods/ConsistencyManager/README.md deleted file mode 100644 index fce5a31..0000000 --- a/Pods/ConsistencyManager/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# Overview - -[![Build Status](https://travis-ci.org/plivesey/ConsistencyManager-iOS.svg?branch=master)](https://travis-ci.org/plivesey/ConsistencyManager-iOS) -[![codecov](https://codecov.io/gh/plivesey/ConsistencyManager-iOS/branch/master/graph/badge.svg)](https://codecov.io/gh/plivesey/ConsistencyManager-iOS) -[![GitHub release](https://img.shields.io/github/release/plivesey/ConsistencyManager-iOS.svg?maxAge=86400)](https://github.com/plivesey/ConsistencyManager-iOS/releases) -![Platforms](https://img.shields.io/badge/platforms-iOS%20%7C%20tvOS%20%7C%20macOS-blue.svg) - -This library provides a way of keeping immutable models consistent. First, listeners listen to an immutable model. Whenever this model (or any child model) is updated, the Consistency Manager will generate a new model and notify its listeners. - -## Rocket Data - -If you are interested in this project, you may want to consider using Rocket Data which provides a higher level API for the Consistency Manager. It implements caching, collection support, and conflict resolution. It's the recommended way for consuming the Consistency Manager. - -GitHub: https://github.com/plivesey/RocketData - -Documentation: https://plivesey.github.io/RocketData - -## Installation - -```ruby -pod 'ConsistencyManager' -``` - -## Motivation - -Immutable models have many advantages including thread-safety, performance, and more functional and understandable code. However, many applications need to be able to update their models, and these models are often shared across different screens. Since the models are immutable, you always need to create new models for changes. Then, you need to propagate these changes to all the screens rendering this model. The Consistency Manager provides a pub-sub API and automatically regenerates new models for listeners. - -## How It Works - -Immutable models can be visualized as trees. Each model has fields representing data (strings, ints, etc.) and pointers to other immutable models. Each model also may have an id to uniquely identify themselves. For instance, a messaging application could have these two models: - -
- -In the application, two view controllers would register with the Consistency Manager that they are listening on these models. - -```swift -// In each UIViewController -ConsistencyManager.sharedInstance.listenForUpdates(self) -``` - -Later in the application, some source, like a network request, push notification, or user action, indicates that a person with id = 12 has come online. The application can then create a new person model which looks like this: - -
- -Then, the application would update this model in the consistency manager. - -```swift -ConsistencyManager.sharedInstance.updateWithNewModel(personModel) -``` - -The Consistency Manager finds that two models, Message and Contacts, need updating and creates new copies of these models with the updated Person model: - -
- -The Consistency Manager then delivers the updated models to the subscribed listeners (view controllers in this case) via delegate callbacks. The view controller simply needs to set the new data and refresh its view. - -## Docs - -To get started, you should take a look at the docs: - -https://plivesey.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 4.2. - -| 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 | -| 4 | 5.1.1+ | -| 4.2 | 7.0.0 | - -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 deleted file mode 100644 index ce999b7..0000000 --- a/Pods/Manifest.lock +++ /dev/null @@ -1,16 +0,0 @@ -PODS: - - ConsistencyManager (8.0.0) - -DEPENDENCIES: - - ConsistencyManager (~> 8.0.0) - -SPEC REPOS: - https://github.com/cocoapods/specs.git: - - ConsistencyManager - -SPEC CHECKSUMS: - ConsistencyManager: 72b8d918dfb257171fe45e994b45e3f38f6708fe - -PODFILE CHECKSUM: d6b222e71d9bd556deaa65cc2bb16de3b0986e7a - -COCOAPODS: 1.7.0.rc.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj deleted file mode 100644 index 4e8a67b..0000000 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ /dev/null @@ -1,819 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 096D3214758AB1516D7570572F7F8CED /* CollectionHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 403C16B498A9FF3368E5C888B4B57733 /* CollectionHelpers.swift */; }; - 135257C5F41669F741F52300ACB0AA8D /* Pods-RocketData-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D340C372127CC59E5373BAB0CF2C49A5 /* Pods-RocketData-dummy.m */; }; - 155ACE024BA90B03AF089BF42BDEC3D4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 436BAA54A31999B53B3CC7115C55FE50 /* Foundation.framework */; }; - 1F27AA0E76EE38B94BF0A9CDD8D8DF26 /* ErrorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1BFAB07A0F274626607107618CF7C2E /* ErrorManager.swift */; }; - 20CF416C0BC5094FD04CD806947D7EDE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 436BAA54A31999B53B3CC7115C55FE50 /* Foundation.framework */; }; - 3A792FDABEB17883D1EDE7326696DDBC /* ConsistencyManagerUpdatesListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6693F0F8989F33F2E6F83A1DDBF0B8C5 /* ConsistencyManagerUpdatesListener.swift */; }; - 3A7D3921D8AD2849D8C6A047B64DF6BF /* ConsistencyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8242798BEA8137C0C98800E91F208AF /* ConsistencyManager.swift */; }; - 4BC0164C51F764C2580B1CCE8A12076A /* ConsistencyManager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 83527CB5C20FDE02E289DFD5CD13A351 /* ConsistencyManager-dummy.m */; }; - 4DB345DC3B211BD1E70D19BCE8FB24F9 /* ConsistencyManagerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89CFBAF4D94D0216654159F6C2051E40 /* ConsistencyManagerModel.swift */; }; - 520BC8064D1E81C7E9DE9F3B7D2CD283 /* ModelChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABC72F2046FC8B5DED31AD47BB849736 /* ModelChange.swift */; }; - 521972E2CF95DF62944579607D5A3F10 /* ConsistencyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7109573D89D02222B47CB5BD28729400 /* ConsistencyManagerDelegate.swift */; }; - 60759F9EE82941AADF6CEB261CB0FDC5 /* ConsistencyManager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EF35FC03251881D1E73F966EF6CE5D88 /* ConsistencyManager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 733D9E885CBD5474EA80522796914931 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 436BAA54A31999B53B3CC7115C55FE50 /* Foundation.framework */; }; - 7CD701DF4FD76F8DDAF6C0D464804146 /* WeakHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04E1FD748044BEA182A208A30CC1355B /* WeakHolder.swift */; }; - 8F4EA96F63468B6A3BF6B37E1C9876DA /* BatchListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F3817F768DAE7E8C0D9E6EF22504472 /* BatchListener.swift */; }; - 918CEB835A71DF5A67B5252CE4AC6057 /* TypeErasedWeakHolders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D736BFA797CFAE2501F3CEA5EB38F9E /* TypeErasedWeakHolders.swift */; }; - 92F94274FE5DD7DA39A788C9A954A179 /* BatchUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EE384C3FC25B0274E08E2C73A9E9C19 /* BatchUpdateModel.swift */; }; - A345B450D9ACF154E2401282CCFAF5F4 /* ModelUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3514BB6DC9A685E6EA6BA1F4900DE124 /* ModelUpdates.swift */; }; - B0D2FEE893185B564CC3F0805F2C6AA5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 312B988EF117AE4DE76A268D970131FE /* UIKit.framework */; }; - B4407815711A033E78DB5D0553117695 /* Array+Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = B023E307D1913693E67182633E0A06B4 /* Array+Weak.swift */; }; - B8AA9C2382BBE8A30CCC7BC72F977802 /* WeakBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF328F8B6CFC9E4102C3663F992ADECA /* WeakBox.swift */; }; - C230449792ACADA6D77F8081E7657CD5 /* Pods-RocketDataTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42C28242A9A86C2763FD411F202A57 /* Pods-RocketDataTests-dummy.m */; }; - ECE413B0C91F7A43DB91AA66807458DD /* Pods-RocketDataTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5ED426C1F85569F2BD93B5F9BEF9E041 /* Pods-RocketDataTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2BBCAF256CFEB2B1F3963928F3624D7 /* WeakArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F4AB47908C6228A4723A53E6EFDB552 /* WeakArray.swift */; }; - F6F3C64F28A0419F7459F760159CE37F /* Pods-RocketData-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 52CC66DA6B7A5A0FF1847B7A4DD6F1C2 /* Pods-RocketData-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FD26FCD27C56C0218DEE5DEEA174FF4F /* ConsistencyManagerListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCBDA88A156B88E6F8AF18B4FF09E7B0 /* ConsistencyManagerListener.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 8E96A00153A419C6589B32F1788D071C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D1DE7D34A6BD71FF12B4E92841E9A434; - remoteInfo = ConsistencyManager; - }; - BF640D23EE254C107A2D30B9687FF7E7 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D1DE7D34A6BD71FF12B4E92841E9A434; - remoteInfo = ConsistencyManager; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 013077F3606B5A64AFBACC568D689A18 /* Pods-RocketData.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.release.xcconfig"; sourceTree = ""; }; - 04E1FD748044BEA182A208A30CC1355B /* WeakHolder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakHolder.swift; path = ConsistencyManager/DataStructures/WeakHolder.swift; sourceTree = ""; }; - 0B767C2C8FA6B8A4BE7C5F0994A8B722 /* Pods-RocketData-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketData-Info.plist"; sourceTree = ""; }; - 0CAEF038E86648102695019F9114D566 /* Pods-RocketDataTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RocketDataTests.modulemap"; sourceTree = ""; }; - 15FFE704EF0FD265BBBA7220CDC88FC6 /* Pods-RocketData-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketData-acknowledgements.plist"; sourceTree = ""; }; - 16863B11B39FA44E49A6558262B27507 /* ConsistencyManager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-prefix.pch"; sourceTree = ""; }; - 312B988EF117AE4DE76A268D970131FE /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 3514BB6DC9A685E6EA6BA1F4900DE124 /* ModelUpdates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelUpdates.swift; path = ConsistencyManager/DataStructures/ModelUpdates.swift; sourceTree = ""; }; - 39DF10DEE1D2CA5A0236DD40AD30BED8 /* Pods-RocketData.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketData.debug.xcconfig"; sourceTree = ""; }; - 403C16B498A9FF3368E5C888B4B57733 /* CollectionHelpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CollectionHelpers.swift; path = ConsistencyManager/Helpers/CollectionHelpers.swift; sourceTree = ""; }; - 436BAA54A31999B53B3CC7115C55FE50 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 44504367C91E4153A01235EF0B1C4002 /* Pods_RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketData.framework; path = "Pods-RocketData.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 465F44739270AA41B7D861C54DF93215 /* Pods-RocketDataTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-Info.plist"; sourceTree = ""; }; - 4AB35ECAC73E59E9496697EA89019B3B /* Pods-RocketData-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketData-acknowledgements.markdown"; sourceTree = ""; }; - 4B7AAB611249D3815116230A822DB89B /* ConsistencyManager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ConsistencyManager-Info.plist"; sourceTree = ""; }; - 52CC66DA6B7A5A0FF1847B7A4DD6F1C2 /* Pods-RocketData-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketData-umbrella.h"; sourceTree = ""; }; - 5ED426C1F85569F2BD93B5F9BEF9E041 /* Pods-RocketDataTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-RocketDataTests-umbrella.h"; sourceTree = ""; }; - 6693F0F8989F33F2E6F83A1DDBF0B8C5 /* ConsistencyManagerUpdatesListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerUpdatesListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerUpdatesListener.swift; sourceTree = ""; }; - 6D817650A90791EE8896BA9AA20A3111 /* Pods-RocketDataTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.debug.xcconfig"; sourceTree = ""; }; - 6F4AB47908C6228A4723A53E6EFDB552 /* WeakArray.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakArray.swift; path = ConsistencyManager/DataStructures/WeakArray.swift; sourceTree = ""; }; - 701E192E48082B5BE7484EDEBCFACBB2 /* Pods_RocketDataTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_RocketDataTests.framework; path = "Pods-RocketDataTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 7109573D89D02222B47CB5BD28729400 /* ConsistencyManagerDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerDelegate.swift; path = ConsistencyManager/Protocols/ConsistencyManagerDelegate.swift; sourceTree = ""; }; - 772932F2657878A99FE030A411CE7AE5 /* Pods-RocketData.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-RocketData.modulemap"; sourceTree = ""; }; - 7D736BFA797CFAE2501F3CEA5EB38F9E /* TypeErasedWeakHolders.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TypeErasedWeakHolders.swift; path = ConsistencyManager/DataStructures/TypeErasedWeakHolders.swift; sourceTree = ""; }; - 8267E58D66CDE7A750AC589E88716E18 /* Pods-RocketDataTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketDataTests.release.xcconfig"; sourceTree = ""; }; - 8297AEF4CD92D094A78F43E9827910D9 /* ConsistencyManager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ConsistencyManager.xcconfig; sourceTree = ""; }; - 83527CB5C20FDE02E289DFD5CD13A351 /* ConsistencyManager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ConsistencyManager-dummy.m"; sourceTree = ""; }; - 89CFBAF4D94D0216654159F6C2051E40 /* ConsistencyManagerModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerModel.swift; path = ConsistencyManager/Protocols/ConsistencyManagerModel.swift; sourceTree = ""; }; - 8F3817F768DAE7E8C0D9E6EF22504472 /* BatchListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchListener.swift; path = ConsistencyManager/DataStructures/BatchListener.swift; sourceTree = ""; }; - 9092056A953B675AB011E5CF82866B7E /* Pods-RocketDataTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketDataTests-acknowledgements.plist"; sourceTree = ""; }; - 9B42C28242A9A86C2763FD411F202A57 /* Pods-RocketDataTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketDataTests-dummy.m"; sourceTree = ""; }; - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9EE384C3FC25B0274E08E2C73A9E9C19 /* BatchUpdateModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchUpdateModel.swift; path = ConsistencyManager/DataStructures/BatchUpdateModel.swift; sourceTree = ""; }; - ABC72F2046FC8B5DED31AD47BB849736 /* ModelChange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelChange.swift; path = ConsistencyManager/DataStructures/ModelChange.swift; sourceTree = ""; }; - AF328F8B6CFC9E4102C3663F992ADECA /* WeakBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WeakBox.swift; path = ConsistencyManager/DataStructures/WeakBox.swift; sourceTree = ""; }; - B023E307D1913693E67182633E0A06B4 /* Array+Weak.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Weak.swift"; path = "ConsistencyManager/DataStructures/Array+Weak.swift"; sourceTree = ""; }; - B39B869674A3A184E274471A2B9604AC /* ConsistencyManager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ConsistencyManager.modulemap; sourceTree = ""; }; - B8D78D956C4EE049F7EB5D18A8D6DEFD /* Pods-RocketDataTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketDataTests-frameworks.sh"; sourceTree = ""; }; - BB966CDE876494B33ECE3CF42BA4E564 /* ConsistencyManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ConsistencyManager.framework; path = ConsistencyManager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BCBDA88A156B88E6F8AF18B4FF09E7B0 /* ConsistencyManagerListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManagerListener.swift; path = ConsistencyManager/Protocols/ConsistencyManagerListener.swift; sourceTree = ""; }; - C8242798BEA8137C0C98800E91F208AF /* ConsistencyManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConsistencyManager.swift; path = ConsistencyManager/ConsistencyManager.swift; sourceTree = ""; }; - D340C372127CC59E5373BAB0CF2C49A5 /* Pods-RocketData-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketData-dummy.m"; sourceTree = ""; }; - EF35FC03251881D1E73F966EF6CE5D88 /* ConsistencyManager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ConsistencyManager-umbrella.h"; sourceTree = ""; }; - F1BFAB07A0F274626607107618CF7C2E /* ErrorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorManager.swift; path = ConsistencyManager/Helpers/ErrorManager.swift; sourceTree = ""; }; - FDF035CDB9B71B5A5BCB96C472E86976 /* Pods-RocketDataTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketDataTests-acknowledgements.markdown"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 629BDAE7D0EEEA3D0414EA17F9FE8DCE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 733D9E885CBD5474EA80522796914931 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 653AC629F5C6846C17D8F86D8B71A4E5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 20CF416C0BC5094FD04CD806947D7EDE /* Foundation.framework in Frameworks */, - B0D2FEE893185B564CC3F0805F2C6AA5 /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B81A8B2EC230BCB26108BCDF5572D827 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 155ACE024BA90B03AF089BF42BDEC3D4 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 07B5A722A3D0DE861A5B381D44A0E9A8 /* ConsistencyManager */ = { - isa = PBXGroup; - children = ( - B023E307D1913693E67182633E0A06B4 /* Array+Weak.swift */, - 8F3817F768DAE7E8C0D9E6EF22504472 /* BatchListener.swift */, - 9EE384C3FC25B0274E08E2C73A9E9C19 /* BatchUpdateModel.swift */, - 403C16B498A9FF3368E5C888B4B57733 /* CollectionHelpers.swift */, - C8242798BEA8137C0C98800E91F208AF /* ConsistencyManager.swift */, - 7109573D89D02222B47CB5BD28729400 /* ConsistencyManagerDelegate.swift */, - BCBDA88A156B88E6F8AF18B4FF09E7B0 /* ConsistencyManagerListener.swift */, - 89CFBAF4D94D0216654159F6C2051E40 /* ConsistencyManagerModel.swift */, - 6693F0F8989F33F2E6F83A1DDBF0B8C5 /* ConsistencyManagerUpdatesListener.swift */, - F1BFAB07A0F274626607107618CF7C2E /* ErrorManager.swift */, - ABC72F2046FC8B5DED31AD47BB849736 /* ModelChange.swift */, - 3514BB6DC9A685E6EA6BA1F4900DE124 /* ModelUpdates.swift */, - 7D736BFA797CFAE2501F3CEA5EB38F9E /* TypeErasedWeakHolders.swift */, - 6F4AB47908C6228A4723A53E6EFDB552 /* WeakArray.swift */, - AF328F8B6CFC9E4102C3663F992ADECA /* WeakBox.swift */, - 04E1FD748044BEA182A208A30CC1355B /* WeakHolder.swift */, - F50236A3B5A8C3920152D85CA515A593 /* Support Files */, - ); - name = ConsistencyManager; - path = ConsistencyManager; - sourceTree = ""; - }; - 108772AB9A6951688BF2EA19AD90C01C /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - 44C4A948BE74B65B0E7268E22812F1EA /* Pods-RocketData */, - 47336A594B8CB466CB11B40910FA8CBB /* Pods-RocketDataTests */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; - 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { - isa = PBXGroup; - children = ( - E2983683FD097A93297E2F5D4E382B36 /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 379EC15162E73D6CC4955B0ED88B593C /* Pods */ = { - isa = PBXGroup; - children = ( - 07B5A722A3D0DE861A5B381D44A0E9A8 /* ConsistencyManager */, - ); - name = Pods; - sourceTree = ""; - }; - 44C4A948BE74B65B0E7268E22812F1EA /* Pods-RocketData */ = { - isa = PBXGroup; - children = ( - 772932F2657878A99FE030A411CE7AE5 /* Pods-RocketData.modulemap */, - 4AB35ECAC73E59E9496697EA89019B3B /* Pods-RocketData-acknowledgements.markdown */, - 15FFE704EF0FD265BBBA7220CDC88FC6 /* Pods-RocketData-acknowledgements.plist */, - D340C372127CC59E5373BAB0CF2C49A5 /* Pods-RocketData-dummy.m */, - 0B767C2C8FA6B8A4BE7C5F0994A8B722 /* Pods-RocketData-Info.plist */, - 52CC66DA6B7A5A0FF1847B7A4DD6F1C2 /* Pods-RocketData-umbrella.h */, - 39DF10DEE1D2CA5A0236DD40AD30BED8 /* Pods-RocketData.debug.xcconfig */, - 013077F3606B5A64AFBACC568D689A18 /* Pods-RocketData.release.xcconfig */, - ); - name = "Pods-RocketData"; - path = "Target Support Files/Pods-RocketData"; - sourceTree = ""; - }; - 47336A594B8CB466CB11B40910FA8CBB /* Pods-RocketDataTests */ = { - isa = PBXGroup; - children = ( - 0CAEF038E86648102695019F9114D566 /* Pods-RocketDataTests.modulemap */, - FDF035CDB9B71B5A5BCB96C472E86976 /* Pods-RocketDataTests-acknowledgements.markdown */, - 9092056A953B675AB011E5CF82866B7E /* Pods-RocketDataTests-acknowledgements.plist */, - 9B42C28242A9A86C2763FD411F202A57 /* Pods-RocketDataTests-dummy.m */, - B8D78D956C4EE049F7EB5D18A8D6DEFD /* Pods-RocketDataTests-frameworks.sh */, - 465F44739270AA41B7D861C54DF93215 /* Pods-RocketDataTests-Info.plist */, - 5ED426C1F85569F2BD93B5F9BEF9E041 /* Pods-RocketDataTests-umbrella.h */, - 6D817650A90791EE8896BA9AA20A3111 /* Pods-RocketDataTests.debug.xcconfig */, - 8267E58D66CDE7A750AC589E88716E18 /* Pods-RocketDataTests.release.xcconfig */, - ); - name = "Pods-RocketDataTests"; - path = "Target Support Files/Pods-RocketDataTests"; - sourceTree = ""; - }; - A4CFA9CDE3A2F28C9D2218B404B334E1 /* Products */ = { - isa = PBXGroup; - children = ( - BB966CDE876494B33ECE3CF42BA4E564 /* ConsistencyManager.framework */, - 44504367C91E4153A01235EF0B1C4002 /* Pods_RocketData.framework */, - 701E192E48082B5BE7484EDEBCFACBB2 /* Pods_RocketDataTests.framework */, - ); - name = Products; - sourceTree = ""; - }; - CF1408CF629C7361332E53B88F7BD30C = { - isa = PBXGroup; - children = ( - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, - 379EC15162E73D6CC4955B0ED88B593C /* Pods */, - A4CFA9CDE3A2F28C9D2218B404B334E1 /* Products */, - 108772AB9A6951688BF2EA19AD90C01C /* Targets Support Files */, - ); - sourceTree = ""; - }; - E2983683FD097A93297E2F5D4E382B36 /* iOS */ = { - isa = PBXGroup; - children = ( - 436BAA54A31999B53B3CC7115C55FE50 /* Foundation.framework */, - 312B988EF117AE4DE76A268D970131FE /* UIKit.framework */, - ); - name = iOS; - sourceTree = ""; - }; - F50236A3B5A8C3920152D85CA515A593 /* Support Files */ = { - isa = PBXGroup; - children = ( - B39B869674A3A184E274471A2B9604AC /* ConsistencyManager.modulemap */, - 8297AEF4CD92D094A78F43E9827910D9 /* ConsistencyManager.xcconfig */, - 83527CB5C20FDE02E289DFD5CD13A351 /* ConsistencyManager-dummy.m */, - 4B7AAB611249D3815116230A822DB89B /* ConsistencyManager-Info.plist */, - 16863B11B39FA44E49A6558262B27507 /* ConsistencyManager-prefix.pch */, - EF35FC03251881D1E73F966EF6CE5D88 /* ConsistencyManager-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/ConsistencyManager"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - BA2E0C94670C9338A1A97810CB4EEDEB /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 60759F9EE82941AADF6CEB261CB0FDC5 /* ConsistencyManager-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E42EED3501C08B39696E3040EC2499AB /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ECE413B0C91F7A43DB91AA66807458DD /* Pods-RocketDataTests-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EDDCD7740F31B3482E28253726D15429 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - F6F3C64F28A0419F7459F760159CE37F /* Pods-RocketData-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - A0CD4481F87878BF321A914A7E919CAF /* Pods-RocketData */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6E0FDAD908BFD82400E355B06F98A4E4 /* Build configuration list for PBXNativeTarget "Pods-RocketData" */; - buildPhases = ( - EDDCD7740F31B3482E28253726D15429 /* Headers */, - BE019C567DDEB0ABBBCD306385F8C47C /* Sources */, - 629BDAE7D0EEEA3D0414EA17F9FE8DCE /* Frameworks */, - 38EB3315C9C5244CA965F7BD2DB47810 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - C49CFAF85CAD0B3C4A0EE6D51BCC3153 /* PBXTargetDependency */, - ); - name = "Pods-RocketData"; - productName = "Pods-RocketData"; - productReference = 44504367C91E4153A01235EF0B1C4002 /* Pods_RocketData.framework */; - productType = "com.apple.product-type.framework"; - }; - D1DE7D34A6BD71FF12B4E92841E9A434 /* ConsistencyManager */ = { - isa = PBXNativeTarget; - buildConfigurationList = DC8137B93DD7C942D9316592E04A88AD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */; - buildPhases = ( - BA2E0C94670C9338A1A97810CB4EEDEB /* Headers */, - 659ED923E39781CA28FECC7669DE3F80 /* Sources */, - 653AC629F5C6846C17D8F86D8B71A4E5 /* Frameworks */, - EAB1E811D8A7BD6D590A1C59F7650249 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ConsistencyManager; - productName = ConsistencyManager; - productReference = BB966CDE876494B33ECE3CF42BA4E564 /* ConsistencyManager.framework */; - productType = "com.apple.product-type.framework"; - }; - DEBED1B025AF68D8BDD2524AA80FAAE5 /* Pods-RocketDataTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = E46EB2934101341C7C0FC6F8D749CD7B /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */; - buildPhases = ( - E42EED3501C08B39696E3040EC2499AB /* Headers */, - 8C83FAB456A91D0582B8FD5CEC7EC029 /* Sources */, - B81A8B2EC230BCB26108BCDF5572D827 /* Frameworks */, - 31AB07A8429984664F8233DD1415980F /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 3451E1B23E1ABE03DBC8D79EA14E0C2E /* PBXTargetDependency */, - ); - name = "Pods-RocketDataTests"; - productName = "Pods-RocketDataTests"; - productReference = 701E192E48082B5BE7484EDEBCFACBB2 /* Pods_RocketDataTests.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - BFDFE7DC352907FC980B868725387E98 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1020; - LastUpgradeCheck = 1020; - }; - buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = A4CFA9CDE3A2F28C9D2218B404B334E1 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - D1DE7D34A6BD71FF12B4E92841E9A434 /* ConsistencyManager */, - A0CD4481F87878BF321A914A7E919CAF /* Pods-RocketData */, - DEBED1B025AF68D8BDD2524AA80FAAE5 /* Pods-RocketDataTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 31AB07A8429984664F8233DD1415980F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 38EB3315C9C5244CA965F7BD2DB47810 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EAB1E811D8A7BD6D590A1C59F7650249 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 659ED923E39781CA28FECC7669DE3F80 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B4407815711A033E78DB5D0553117695 /* Array+Weak.swift in Sources */, - 8F4EA96F63468B6A3BF6B37E1C9876DA /* BatchListener.swift in Sources */, - 92F94274FE5DD7DA39A788C9A954A179 /* BatchUpdateModel.swift in Sources */, - 096D3214758AB1516D7570572F7F8CED /* CollectionHelpers.swift in Sources */, - 4BC0164C51F764C2580B1CCE8A12076A /* ConsistencyManager-dummy.m in Sources */, - 3A7D3921D8AD2849D8C6A047B64DF6BF /* ConsistencyManager.swift in Sources */, - 521972E2CF95DF62944579607D5A3F10 /* ConsistencyManagerDelegate.swift in Sources */, - FD26FCD27C56C0218DEE5DEEA174FF4F /* ConsistencyManagerListener.swift in Sources */, - 4DB345DC3B211BD1E70D19BCE8FB24F9 /* ConsistencyManagerModel.swift in Sources */, - 3A792FDABEB17883D1EDE7326696DDBC /* ConsistencyManagerUpdatesListener.swift in Sources */, - 1F27AA0E76EE38B94BF0A9CDD8D8DF26 /* ErrorManager.swift in Sources */, - 520BC8064D1E81C7E9DE9F3B7D2CD283 /* ModelChange.swift in Sources */, - A345B450D9ACF154E2401282CCFAF5F4 /* ModelUpdates.swift in Sources */, - 918CEB835A71DF5A67B5252CE4AC6057 /* TypeErasedWeakHolders.swift in Sources */, - F2BBCAF256CFEB2B1F3963928F3624D7 /* WeakArray.swift in Sources */, - B8AA9C2382BBE8A30CCC7BC72F977802 /* WeakBox.swift in Sources */, - 7CD701DF4FD76F8DDAF6C0D464804146 /* WeakHolder.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8C83FAB456A91D0582B8FD5CEC7EC029 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C230449792ACADA6D77F8081E7657CD5 /* Pods-RocketDataTests-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BE019C567DDEB0ABBBCD306385F8C47C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 135257C5F41669F741F52300ACB0AA8D /* Pods-RocketData-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 3451E1B23E1ABE03DBC8D79EA14E0C2E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ConsistencyManager; - target = D1DE7D34A6BD71FF12B4E92841E9A434 /* ConsistencyManager */; - targetProxy = BF640D23EE254C107A2D30B9687FF7E7 /* PBXContainerItemProxy */; - }; - C49CFAF85CAD0B3C4A0EE6D51BCC3153 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ConsistencyManager; - target = D1DE7D34A6BD71FF12B4E92841E9A434 /* ConsistencyManager */; - targetProxy = 8E96A00153A419C6589B32F1788D071C /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 2A35EC1F79D1610F90807DD1498CBF09 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 39DF10DEE1D2CA5A0236DD40AD30BED8 /* Pods-RocketData.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-RocketData/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"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 4BE66A09A74FD25164AAB3C2645B9B93 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Release; - }; - 717B375D36086392831269FBF3F73FB6 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 013077F3606B5A64AFBACC568D689A18 /* Pods-RocketData.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-RocketData/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"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 7EF7227D9B20A1D549000096ACCB23D7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 83ED851D51A67BBAB21B4670428A2A3D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8297AEF4CD92D094A78F43E9827910D9 /* ConsistencyManager.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ConsistencyManager/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"; - PRODUCT_MODULE_NAME = ConsistencyManager; - PRODUCT_NAME = ConsistencyManager; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - D2B307422DADD15637B597FD010CAF32 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6D817650A90791EE8896BA9AA20A3111 /* Pods-RocketDataTests.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-RocketDataTests/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-RocketDataTests/Pods-RocketDataTests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - DA2076AC9CBC28FF8CA4377AB1E46516 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8267E58D66CDE7A750AC589E88716E18 /* Pods-RocketDataTests.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-RocketDataTests/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-RocketDataTests/Pods-RocketDataTests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - EC30B484241A71DA885F718065D4EE71 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8297AEF4CD92D094A78F43E9827910D9 /* ConsistencyManager.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ConsistencyManager/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"; - PRODUCT_MODULE_NAME = ConsistencyManager; - PRODUCT_NAME = ConsistencyManager; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7EF7227D9B20A1D549000096ACCB23D7 /* Debug */, - 4BE66A09A74FD25164AAB3C2645B9B93 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 6E0FDAD908BFD82400E355B06F98A4E4 /* Build configuration list for PBXNativeTarget "Pods-RocketData" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2A35EC1F79D1610F90807DD1498CBF09 /* Debug */, - 717B375D36086392831269FBF3F73FB6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - DC8137B93DD7C942D9316592E04A88AD /* Build configuration list for PBXNativeTarget "ConsistencyManager" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83ED851D51A67BBAB21B4670428A2A3D /* Debug */, - EC30B484241A71DA885F718065D4EE71 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E46EB2934101341C7C0FC6F8D749CD7B /* Build configuration list for PBXNativeTarget "Pods-RocketDataTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D2B307422DADD15637B597FD010CAF32 /* Debug */, - DA2076AC9CBC28FF8CA4377AB1E46516 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; -} diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist deleted file mode 100644 index 5c493de..0000000 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 8.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-dummy.m b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-dummy.m deleted file mode 100644 index b71428a..0000000 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_ConsistencyManager : NSObject -@end -@implementation PodsDummy_ConsistencyManager -@end diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch deleted file mode 100644 index beb2a24..0000000 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h deleted file mode 100644 index ab808c9..0000000 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double ConsistencyManagerVersionNumber; -FOUNDATION_EXPORT const unsigned char ConsistencyManagerVersionString[]; - diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.modulemap b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.modulemap deleted file mode 100644 index 9246789..0000000 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module ConsistencyManager { - umbrella header "ConsistencyManager-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig b/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig deleted file mode 100644 index 36aa2bb..0000000 --- a/Pods/Target Support Files/ConsistencyManager/ConsistencyManager.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/ConsistencyManager -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES diff --git a/Pods/Target Support Files/ConsistencyManager/Info.plist b/Pods/Target Support Files/ConsistencyManager/Info.plist deleted file mode 100644 index e92eb78..0000000 --- a/Pods/Target Support Files/ConsistencyManager/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 6.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/Pods-RocketData/Info.plist b/Pods/Target Support Files/Pods-RocketData/Info.plist deleted file mode 100644 index 2243fe6..0000000 --- a/Pods/Target Support Files/Pods-RocketData/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-Info.plist b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-Info.plist deleted file mode 100644 index 2243fe6..0000000 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.markdown b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.markdown deleted file mode 100644 index 1162850..0000000 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.markdown +++ /dev/null @@ -1,210 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## ConsistencyManager - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2016 LinkedIn Corp. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - 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. - - -Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist deleted file mode 100644 index adbf402..0000000 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-acknowledgements.plist +++ /dev/null @@ -1,242 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2016 LinkedIn Corp. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - 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 License, Version 2.0 - Title - ConsistencyManager - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - https://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-dummy.m b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-dummy.m deleted file mode 100644 index ecd29aa..0000000 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_RocketData : NSObject -@end -@implementation PodsDummy_Pods_RocketData -@end diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-resources.sh b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-resources.sh deleted file mode 100755 index a7df440..0000000 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-resources.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/sh -set -e - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -case "${TARGETED_DEVICE_FAMILY}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - 3) - TARGET_DEVICE_ARGS="--target-device tv" - ;; - 4) - TARGET_DEVICE_ARGS="--target-device watch" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; -esac - -install_resource() -{ - if [[ "$1" = /* ]] ; then - RESOURCE_PATH="$1" - else - RESOURCE_PATH="${PODS_ROOT}/$1" - fi - if [[ ! -e "$RESOURCE_PATH" ]] ; then - cat << EOM -error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. -EOM - exit 1 - fi - case $RESOURCE_PATH in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true - xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - *) - echo "$RESOURCE_PATH" || true - echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] -then - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "${PODS_ROOT}*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-umbrella.h b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-umbrella.h deleted file mode 100644 index 834be3f..0000000 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double Pods_RocketDataVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_RocketDataVersionString[]; - diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig deleted file mode 100644 index 4652052..0000000 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.modulemap b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.modulemap deleted file mode 100644 index a2d01d3..0000000 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_RocketData { - umbrella header "Pods-RocketData-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig b/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig deleted file mode 100644 index 4652052..0000000 --- a/Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Info.plist b/Pods/Target Support Files/Pods-RocketDataTests/Info.plist deleted file mode 100644 index 2243fe6..0000000 --- a/Pods/Target Support Files/Pods-RocketDataTests/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-Info.plist b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-Info.plist deleted file mode 100644 index 2243fe6..0000000 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.markdown b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.markdown deleted file mode 100644 index 1162850..0000000 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.markdown +++ /dev/null @@ -1,210 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## ConsistencyManager - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2016 LinkedIn Corp. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - 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. - - -Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist deleted file mode 100644 index adbf402..0000000 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-acknowledgements.plist +++ /dev/null @@ -1,242 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2016 LinkedIn Corp. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - 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 License, Version 2.0 - Title - ConsistencyManager - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - https://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-dummy.m b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-dummy.m deleted file mode 100644 index 5ac2e15..0000000 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_RocketDataTests : NSObject -@end -@implementation PodsDummy_Pods_RocketDataTests -@end diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh deleted file mode 100755 index 7976487..0000000 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh +++ /dev/null @@ -1,171 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -function on_error { - echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" -} -trap 'on_error $LINENO' ERR - -if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" - -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -# Copies and strips a vendored framework -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 don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --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}" - elif [ -L "${binary}" ]; then - echo "Destination binary is symlinked..." - dirname="$(dirname "${binary}")" - binary="${dirname}/$(readlink "${binary}")" - 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) - 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 -} - -# Copies and strips a vendored dSYM -install_dsym() { - local source="$1" - if [ -r "$source" ]; then - # Copy the dSYM into a the targets temp dir. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" - - local basename - basename="$(basename -s .framework.dSYM "$source")" - binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then - strip_invalid_archs "$binary" - fi - - if [[ $STRIP_BINARY_RETVAL == 1 ]]; then - # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" - else - # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" - fi - fi -} - -# Copies the bcsymbolmap files of a vendored framework -install_bcsymbolmap() { - local bcsymbolmap_path="$1" - local destination="${BUILT_PRODUCTS_DIR}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" -} - -# 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_identity - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - # Get architectures for current target binary - binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" - # Intersect them with the architectures we are building for - intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" - # If there are no archs supported by this binary then warn the user - if [[ -z "$intersected_archs" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - STRIP_BINARY_RETVAL=0 - return - fi - stripped="" - for arch in $binary_archs; do - if ! [[ "${ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi - STRIP_BINARY_RETVAL=1 -} - - -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 -if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - wait -fi diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh deleted file mode 100755 index a7df440..0000000 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-resources.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/sh -set -e - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -case "${TARGETED_DEVICE_FAMILY}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - 3) - TARGET_DEVICE_ARGS="--target-device tv" - ;; - 4) - TARGET_DEVICE_ARGS="--target-device watch" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; -esac - -install_resource() -{ - if [[ "$1" = /* ]] ; then - RESOURCE_PATH="$1" - else - RESOURCE_PATH="${PODS_ROOT}/$1" - fi - if [[ ! -e "$RESOURCE_PATH" ]] ; then - cat << EOM -error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. -EOM - exit 1 - fi - case $RESOURCE_PATH in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true - xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - *) - echo "$RESOURCE_PATH" || true - echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] -then - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "${PODS_ROOT}*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-umbrella.h b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-umbrella.h deleted file mode 100644 index d3401ba..0000000 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double Pods_RocketDataTestsVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_RocketDataTestsVersionString[]; - diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig deleted file mode 100644 index a65d749..0000000 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig +++ /dev/null @@ -1,11 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.modulemap b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.modulemap deleted file mode 100644 index d22fdba..0000000 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_RocketDataTests { - umbrella header "Pods-RocketDataTests-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig b/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig deleted file mode 100644 index a65d749..0000000 --- a/Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig +++ /dev/null @@ -1,11 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ConsistencyManager/ConsistencyManager.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "ConsistencyManager" -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/. -PODS_ROOT = ${SRCROOT}/Pods diff --git a/RocketData.xcodeproj/project.pbxproj b/RocketData.xcodeproj/project.pbxproj deleted file mode 100644 index 2e75f5f..0000000 --- a/RocketData.xcodeproj/project.pbxproj +++ /dev/null @@ -1,706 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 611323AA1D5BB0070046625E /* FullChildModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 611323A91D5BB0070046625E /* FullChildModel.swift */; }; - 611562DB1CC16B490001F5CE /* CollectionChangeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 611562DA1CC16B490001F5CE /* CollectionChangeTests.swift */; }; - 6117DDF81CD7A8EB002F57C1 /* BatchDataProviderListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDE51CD7A8EB002F57C1 /* BatchDataProviderListener.swift */; }; - 6117DDFA1CD7A8EB002F57C1 /* CacheDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDE71CD7A8EB002F57C1 /* CacheDelegate.swift */; }; - 6117DDFB1CD7A8EB002F57C1 /* ChangeTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDE81CD7A8EB002F57C1 /* ChangeTime.swift */; }; - 6117DDFC1CD7A8EB002F57C1 /* CollectionChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDE91CD7A8EB002F57C1 /* CollectionChange.swift */; }; - 6117DDFD1CD7A8EB002F57C1 /* CollectionDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDEA1CD7A8EB002F57C1 /* CollectionDataProvider.swift */; }; - 6117DDFE1CD7A8EB002F57C1 /* ConsistencyContextWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDEB1CD7A8EB002F57C1 /* ConsistencyContextWrapper.swift */; }; - 6117DDFF1CD7A8EB002F57C1 /* DataHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDED1CD7A8EB002F57C1 /* DataHolder.swift */; }; - 6117DE001CD7A8EB002F57C1 /* DataModelManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDEE1CD7A8EB002F57C1 /* DataModelManager.swift */; }; - 6117DE011CD7A8EB002F57C1 /* DataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDEF1CD7A8EB002F57C1 /* DataProvider.swift */; }; - 6117DE021CD7A8EB002F57C1 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDF01CD7A8EB002F57C1 /* Errors.swift */; }; - 6117DE041CD7A8EB002F57C1 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDF21CD7A8EB002F57C1 /* Logger.swift */; }; - 6117DE051CD7A8EB002F57C1 /* Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDF31CD7A8EB002F57C1 /* Model.swift */; }; - 6117DE061CD7A8EB002F57C1 /* ParsingHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDF41CD7A8EB002F57C1 /* ParsingHelpers.swift */; }; - 6117DE071CD7A8EB002F57C1 /* RocketData.h in Headers */ = {isa = PBXBuildFile; fileRef = 6117DDF51CD7A8EB002F57C1 /* RocketData.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6117DE081CD7A8EB002F57C1 /* SharedCollectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDF61CD7A8EB002F57C1 /* SharedCollectionManager.swift */; }; - 6117DE091CD7A8EB002F57C1 /* WeakSharedCollectionArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6117DDF71CD7A8EB002F57C1 /* WeakSharedCollectionArray.swift */; }; - 612242BC1C7B85D40017B0C4 /* RocketData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 612242B11C7B85D40017B0C4 /* RocketData.framework */; }; - 612AB3E11CCE7C1C0034EADD /* PauseDataProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 612AB3E01CCE7C1C0034EADD /* PauseDataProviderTests.swift */; }; - 612AB3E31CCE877D0034EADD /* PauseCollectionDataProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 612AB3E21CCE877D0034EADD /* PauseCollectionDataProviderTests.swift */; }; - 612AB3E71CCE8AC30034EADD /* SharedCollectionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 612AB3E61CCE8AC30034EADD /* SharedCollectionTests.swift */; }; - 612B73621C8F9CD2005B12B1 /* RocketDataTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 612B73611C8F9CD2005B12B1 /* RocketDataTestCase.swift */; }; - 612B736D1C8FAF17005B12B1 /* SimpleCollectionDataProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 612B736C1C8FAF17005B12B1 /* SimpleCollectionDataProviderTests.swift */; }; - 612B736F1C9079DC005B12B1 /* ConsistencyCollectionDataProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 612B736E1C9079DC005B12B1 /* ConsistencyCollectionDataProviderTests.swift */; }; - 6137042E1CC91FAC008D0EBB /* WeakSharedCollectionArrayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6137042D1CC91FAC008D0EBB /* WeakSharedCollectionArrayTests.swift */; }; - 613C430E1CA091E00080B7A3 /* ParsingHelpersTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 613C430D1CA091E00080B7A3 /* ParsingHelpersTests.swift */; }; - 61427D061D63CD800034617E /* SmallModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61427D051D63CD800034617E /* SmallModels.swift */; }; - 6165455C1CC69E2900AC68C9 /* SharedCollectionDataProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6165455B1CC69E2900AC68C9 /* SharedCollectionDataProviderTests.swift */; }; - 6165455E1CC7E8F600AC68C9 /* CollectionChangeHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6165455D1CC7E8F600AC68C9 /* CollectionChangeHelpers.swift */; }; - 6175BEE31C8E30CF003A162D /* SimpleDataProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6175BEE21C8E30CF003A162D /* SimpleDataProviderTests.swift */; }; - 6175BEE61C8E3140003A162D /* DataManagerHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6175BEE51C8E3140003A162D /* DataManagerHelpers.swift */; }; - 6175BEE81C8F4AE3003A162D /* ConsistencyDataProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6175BEE71C8F4AE3003A162D /* ConsistencyDataProviderTests.swift */; }; - 6175BEEA1C8F4BBD003A162D /* DataProviderDelegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6175BEE91C8F4BBD003A162D /* DataProviderDelegates.swift */; }; - 6192BEDB1CBFFC0A00212DC5 /* ChangeClockTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6192BEDA1CBFFC0A00212DC5 /* ChangeClockTests.swift */; }; - 6192BEDD1CBFFDFB00212DC5 /* BatchListenerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6192BEDC1CBFFDFB00212DC5 /* BatchListenerTests.swift */; }; - 61B6660B1DB92CB600D9A812 /* DataModelManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61B6660A1DB92CB500D9A812 /* DataModelManagerTests.swift */; }; - 61FD70A91C8E1BC800DFAD2E /* ParentModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61FD70A81C8E1BC800DFAD2E /* ParentModel.swift */; }; - 61FD70AB1C8E1BED00DFAD2E /* ChildModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61FD70AA1C8E1BED00DFAD2E /* ChildModel.swift */; }; - FA5D03BE8841FEDD5A3433AD /* Pods_RocketData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93F416DEBD8929CFE59C87ED /* Pods_RocketData.framework */; }; - FD1BE2EED5F581B3341935E0 /* Pods_RocketDataTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A5AE98A173DEF5C77D0F071F /* Pods_RocketDataTests.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 612242BD1C7B85D40017B0C4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 612242A81C7B85D40017B0C4 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 612242B01C7B85D40017B0C4; - remoteInfo = Scherzo; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 566307F55691F221608078D7 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 611323A91D5BB0070046625E /* FullChildModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FullChildModel.swift; sourceTree = ""; }; - 611562DA1CC16B490001F5CE /* CollectionChangeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionChangeTests.swift; sourceTree = ""; }; - 6117DDE51CD7A8EB002F57C1 /* BatchDataProviderListener.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchDataProviderListener.swift; sourceTree = ""; }; - 6117DDE71CD7A8EB002F57C1 /* CacheDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CacheDelegate.swift; sourceTree = ""; }; - 6117DDE81CD7A8EB002F57C1 /* ChangeTime.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangeTime.swift; sourceTree = ""; }; - 6117DDE91CD7A8EB002F57C1 /* CollectionChange.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionChange.swift; sourceTree = ""; }; - 6117DDEA1CD7A8EB002F57C1 /* CollectionDataProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionDataProvider.swift; sourceTree = ""; }; - 6117DDEB1CD7A8EB002F57C1 /* ConsistencyContextWrapper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConsistencyContextWrapper.swift; sourceTree = ""; }; - 6117DDED1CD7A8EB002F57C1 /* DataHolder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataHolder.swift; sourceTree = ""; }; - 6117DDEE1CD7A8EB002F57C1 /* DataModelManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataModelManager.swift; sourceTree = ""; }; - 6117DDEF1CD7A8EB002F57C1 /* DataProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataProvider.swift; sourceTree = ""; }; - 6117DDF01CD7A8EB002F57C1 /* Errors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = ""; }; - 6117DDF21CD7A8EB002F57C1 /* Logger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = ""; }; - 6117DDF31CD7A8EB002F57C1 /* Model.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Model.swift; sourceTree = ""; }; - 6117DDF41CD7A8EB002F57C1 /* ParsingHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ParsingHelpers.swift; sourceTree = ""; }; - 6117DDF51CD7A8EB002F57C1 /* RocketData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RocketData.h; sourceTree = ""; }; - 6117DDF61CD7A8EB002F57C1 /* SharedCollectionManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedCollectionManager.swift; sourceTree = ""; }; - 6117DDF71CD7A8EB002F57C1 /* WeakSharedCollectionArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WeakSharedCollectionArray.swift; sourceTree = ""; }; - 612242B11C7B85D40017B0C4 /* RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RocketData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 612242BB1C7B85D40017B0C4 /* RocketDataTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RocketDataTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 612242C21C7B85D40017B0C4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 612AB3E01CCE7C1C0034EADD /* PauseDataProviderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PauseDataProviderTests.swift; sourceTree = ""; }; - 612AB3E21CCE877D0034EADD /* PauseCollectionDataProviderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PauseCollectionDataProviderTests.swift; sourceTree = ""; }; - 612AB3E61CCE8AC30034EADD /* SharedCollectionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedCollectionTests.swift; sourceTree = ""; }; - 612B73611C8F9CD2005B12B1 /* RocketDataTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RocketDataTestCase.swift; sourceTree = ""; }; - 612B736C1C8FAF17005B12B1 /* SimpleCollectionDataProviderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimpleCollectionDataProviderTests.swift; sourceTree = ""; }; - 612B736E1C9079DC005B12B1 /* ConsistencyCollectionDataProviderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConsistencyCollectionDataProviderTests.swift; sourceTree = ""; }; - 6137042D1CC91FAC008D0EBB /* WeakSharedCollectionArrayTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WeakSharedCollectionArrayTests.swift; sourceTree = ""; }; - 613C430D1CA091E00080B7A3 /* ParsingHelpersTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ParsingHelpersTests.swift; sourceTree = ""; }; - 61427D051D63CD800034617E /* SmallModels.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SmallModels.swift; sourceTree = ""; }; - 6165455B1CC69E2900AC68C9 /* SharedCollectionDataProviderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedCollectionDataProviderTests.swift; sourceTree = ""; }; - 6165455D1CC7E8F600AC68C9 /* CollectionChangeHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionChangeHelpers.swift; sourceTree = ""; }; - 6175BEE21C8E30CF003A162D /* SimpleDataProviderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimpleDataProviderTests.swift; sourceTree = ""; }; - 6175BEE51C8E3140003A162D /* DataManagerHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataManagerHelpers.swift; sourceTree = ""; }; - 6175BEE71C8F4AE3003A162D /* ConsistencyDataProviderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConsistencyDataProviderTests.swift; sourceTree = ""; }; - 6175BEE91C8F4BBD003A162D /* DataProviderDelegates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataProviderDelegates.swift; sourceTree = ""; }; - 6192BEDA1CBFFC0A00212DC5 /* ChangeClockTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangeClockTests.swift; sourceTree = ""; }; - 6192BEDC1CBFFDFB00212DC5 /* BatchListenerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchListenerTests.swift; sourceTree = ""; }; - 6195AA441D413E8400F8BABB /* Pods_RocketData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Pods_RocketData.framework; path = "../../../Library/Developer/Xcode/DerivedData/RocketData-fakibhwbjgxxqqbhtroabdzpzvve/Build/Products/Debug-iphonesimulator/Pods_RocketData.framework"; sourceTree = ""; }; - 61B6660A1DB92CB500D9A812 /* DataModelManagerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataModelManagerTests.swift; sourceTree = ""; }; - 61FD70A81C8E1BC800DFAD2E /* ParentModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ParentModel.swift; sourceTree = ""; }; - 61FD70AA1C8E1BED00DFAD2E /* ChildModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChildModel.swift; sourceTree = ""; }; - 93F416DEBD8929CFE59C87ED /* Pods_RocketData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RocketData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 997C3052192E11916F11C270 /* Pods-RocketData.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RocketData.release.xcconfig"; path = "Pods/Target Support Files/Pods-RocketData/Pods-RocketData.release.xcconfig"; sourceTree = ""; }; - A5AE98A173DEF5C77D0F071F /* Pods_RocketDataTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RocketDataTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - AC288B6D02498F01FECDAA0F /* Pods-RocketDataTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RocketDataTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.debug.xcconfig"; sourceTree = ""; }; - E1E495CE9B06BB69A277C55E /* Pods-RocketDataTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RocketDataTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests.release.xcconfig"; sourceTree = ""; }; - E816E0EC503C5F077273A5B3 /* Pods-RocketData.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RocketData.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RocketData/Pods-RocketData.debug.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 612242AD1C7B85D40017B0C4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - FA5D03BE8841FEDD5A3433AD /* Pods_RocketData.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 612242B81C7B85D40017B0C4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 612242BC1C7B85D40017B0C4 /* RocketData.framework in Frameworks */, - FD1BE2EED5F581B3341935E0 /* Pods_RocketDataTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 6117DDE41CD7A8EB002F57C1 /* RocketData */ = { - isa = PBXGroup; - children = ( - 6117DDF51CD7A8EB002F57C1 /* RocketData.h */, - 6117DDEE1CD7A8EB002F57C1 /* DataModelManager.swift */, - 6117DDE71CD7A8EB002F57C1 /* CacheDelegate.swift */, - 6117DDF31CD7A8EB002F57C1 /* Model.swift */, - 6117DDEF1CD7A8EB002F57C1 /* DataProvider.swift */, - 6117DDEA1CD7A8EB002F57C1 /* CollectionDataProvider.swift */, - 6117DDE91CD7A8EB002F57C1 /* CollectionChange.swift */, - 6117DDE51CD7A8EB002F57C1 /* BatchDataProviderListener.swift */, - 6117DDF41CD7A8EB002F57C1 /* ParsingHelpers.swift */, - 6117DDF01CD7A8EB002F57C1 /* Errors.swift */, - 6117DDF21CD7A8EB002F57C1 /* Logger.swift */, - 6117DDE81CD7A8EB002F57C1 /* ChangeTime.swift */, - 6117DDEB1CD7A8EB002F57C1 /* ConsistencyContextWrapper.swift */, - 6117DDED1CD7A8EB002F57C1 /* DataHolder.swift */, - 6117DDF61CD7A8EB002F57C1 /* SharedCollectionManager.swift */, - 6117DDF71CD7A8EB002F57C1 /* WeakSharedCollectionArray.swift */, - ); - path = RocketData; - sourceTree = ""; - }; - 612242A71C7B85D40017B0C4 = { - isa = PBXGroup; - children = ( - 6117DDE41CD7A8EB002F57C1 /* RocketData */, - 612242BF1C7B85D40017B0C4 /* RocketDataTests */, - 612242B21C7B85D40017B0C4 /* Products */, - 72013DB2DEFA74D74C4FA450 /* Pods */, - 76A9FB109C5780297CFB89E3 /* Frameworks */, - ); - sourceTree = ""; - }; - 612242B21C7B85D40017B0C4 /* Products */ = { - isa = PBXGroup; - children = ( - 612242B11C7B85D40017B0C4 /* RocketData.framework */, - 612242BB1C7B85D40017B0C4 /* RocketDataTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 612242BF1C7B85D40017B0C4 /* RocketDataTests */ = { - isa = PBXGroup; - children = ( - 612B73611C8F9CD2005B12B1 /* RocketDataTestCase.swift */, - 61FD70A71C8E1BB300DFAD2E /* TestModels */, - 6175BEE41C8E3120003A162D /* TestHelpers */, - 61FD70A51C8E1BB300DFAD2E /* CollectionDataProviderTests */, - 61FD70A61C8E1BB300DFAD2E /* DataProviderTests */, - 613C430D1CA091E00080B7A3 /* ParsingHelpersTests.swift */, - 61B6660A1DB92CB500D9A812 /* DataModelManagerTests.swift */, - 6192BEDA1CBFFC0A00212DC5 /* ChangeClockTests.swift */, - 6192BEDC1CBFFDFB00212DC5 /* BatchListenerTests.swift */, - 611562DA1CC16B490001F5CE /* CollectionChangeTests.swift */, - 6137042D1CC91FAC008D0EBB /* WeakSharedCollectionArrayTests.swift */, - 612242C21C7B85D40017B0C4 /* Info.plist */, - ); - path = RocketDataTests; - sourceTree = ""; - }; - 6175BEE41C8E3120003A162D /* TestHelpers */ = { - isa = PBXGroup; - children = ( - 6175BEE51C8E3140003A162D /* DataManagerHelpers.swift */, - 6175BEE91C8F4BBD003A162D /* DataProviderDelegates.swift */, - 6165455D1CC7E8F600AC68C9 /* CollectionChangeHelpers.swift */, - ); - path = TestHelpers; - sourceTree = ""; - }; - 61FD70A51C8E1BB300DFAD2E /* CollectionDataProviderTests */ = { - isa = PBXGroup; - children = ( - 612B736C1C8FAF17005B12B1 /* SimpleCollectionDataProviderTests.swift */, - 612B736E1C9079DC005B12B1 /* ConsistencyCollectionDataProviderTests.swift */, - 612AB3E61CCE8AC30034EADD /* SharedCollectionTests.swift */, - 6165455B1CC69E2900AC68C9 /* SharedCollectionDataProviderTests.swift */, - 612AB3E21CCE877D0034EADD /* PauseCollectionDataProviderTests.swift */, - ); - path = CollectionDataProviderTests; - sourceTree = ""; - }; - 61FD70A61C8E1BB300DFAD2E /* DataProviderTests */ = { - isa = PBXGroup; - children = ( - 6175BEE21C8E30CF003A162D /* SimpleDataProviderTests.swift */, - 6175BEE71C8F4AE3003A162D /* ConsistencyDataProviderTests.swift */, - 612AB3E01CCE7C1C0034EADD /* PauseDataProviderTests.swift */, - ); - path = DataProviderTests; - sourceTree = ""; - }; - 61FD70A71C8E1BB300DFAD2E /* TestModels */ = { - isa = PBXGroup; - children = ( - 61FD70A81C8E1BC800DFAD2E /* ParentModel.swift */, - 61FD70AA1C8E1BED00DFAD2E /* ChildModel.swift */, - 611323A91D5BB0070046625E /* FullChildModel.swift */, - 61427D051D63CD800034617E /* SmallModels.swift */, - ); - path = TestModels; - sourceTree = ""; - }; - 72013DB2DEFA74D74C4FA450 /* Pods */ = { - isa = PBXGroup; - children = ( - E816E0EC503C5F077273A5B3 /* Pods-RocketData.debug.xcconfig */, - 997C3052192E11916F11C270 /* Pods-RocketData.release.xcconfig */, - AC288B6D02498F01FECDAA0F /* Pods-RocketDataTests.debug.xcconfig */, - E1E495CE9B06BB69A277C55E /* Pods-RocketDataTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; - 76A9FB109C5780297CFB89E3 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 6195AA441D413E8400F8BABB /* Pods_RocketData.framework */, - 566307F55691F221608078D7 /* Pods.framework */, - 93F416DEBD8929CFE59C87ED /* Pods_RocketData.framework */, - A5AE98A173DEF5C77D0F071F /* Pods_RocketDataTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 612242AE1C7B85D40017B0C4 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 6117DE071CD7A8EB002F57C1 /* RocketData.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 612242B01C7B85D40017B0C4 /* RocketData */ = { - isa = PBXNativeTarget; - buildConfigurationList = 612242C51C7B85D40017B0C4 /* Build configuration list for PBXNativeTarget "RocketData" */; - buildPhases = ( - CC432D6C732060E3D11BA838 /* [CP] Check Pods Manifest.lock */, - 612242AC1C7B85D40017B0C4 /* Sources */, - 612242AD1C7B85D40017B0C4 /* Frameworks */, - 612242AE1C7B85D40017B0C4 /* Headers */, - 612242AF1C7B85D40017B0C4 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = RocketData; - productName = Scherzo; - productReference = 612242B11C7B85D40017B0C4 /* RocketData.framework */; - productType = "com.apple.product-type.framework"; - }; - 612242BA1C7B85D40017B0C4 /* RocketDataTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 612242C81C7B85D40017B0C4 /* Build configuration list for PBXNativeTarget "RocketDataTests" */; - buildPhases = ( - BAD9CFA1BEB4289CD8554F62 /* [CP] Check Pods Manifest.lock */, - 612242B71C7B85D40017B0C4 /* Sources */, - 612242B81C7B85D40017B0C4 /* Frameworks */, - 612242B91C7B85D40017B0C4 /* Resources */, - F23AEA2B7986D85FBAEE25DF /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 612242BE1C7B85D40017B0C4 /* PBXTargetDependency */, - ); - name = RocketDataTests; - productName = ScherzoTests; - productReference = 612242BB1C7B85D40017B0C4 /* RocketDataTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 612242A81C7B85D40017B0C4 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 1020; - ORGANIZATIONNAME = LinkedIn; - TargetAttributes = { - 612242B01C7B85D40017B0C4 = { - CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 1020; - }; - 612242BA1C7B85D40017B0C4 = { - CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 1020; - }; - }; - }; - buildConfigurationList = 612242AB1C7B85D40017B0C4 /* Build configuration list for PBXProject "RocketData" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 612242A71C7B85D40017B0C4; - productRefGroup = 612242B21C7B85D40017B0C4 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 612242B01C7B85D40017B0C4 /* RocketData */, - 612242BA1C7B85D40017B0C4 /* RocketDataTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 612242AF1C7B85D40017B0C4 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 612242B91C7B85D40017B0C4 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - BAD9CFA1BEB4289CD8554F62 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RocketDataTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/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# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - CC432D6C732060E3D11BA838 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RocketData-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/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# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - F23AEA2B7986D85FBAEE25DF /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/ConsistencyManager/ConsistencyManager.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ConsistencyManager.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RocketDataTests/Pods-RocketDataTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 612242AC1C7B85D40017B0C4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6117DDFE1CD7A8EB002F57C1 /* ConsistencyContextWrapper.swift in Sources */, - 6117DE061CD7A8EB002F57C1 /* ParsingHelpers.swift in Sources */, - 6117DE041CD7A8EB002F57C1 /* Logger.swift in Sources */, - 6117DDF81CD7A8EB002F57C1 /* BatchDataProviderListener.swift in Sources */, - 6117DE051CD7A8EB002F57C1 /* Model.swift in Sources */, - 6117DDFB1CD7A8EB002F57C1 /* ChangeTime.swift in Sources */, - 6117DDFD1CD7A8EB002F57C1 /* CollectionDataProvider.swift in Sources */, - 6117DDFA1CD7A8EB002F57C1 /* CacheDelegate.swift in Sources */, - 6117DE091CD7A8EB002F57C1 /* WeakSharedCollectionArray.swift in Sources */, - 6117DE081CD7A8EB002F57C1 /* SharedCollectionManager.swift in Sources */, - 6117DDFF1CD7A8EB002F57C1 /* DataHolder.swift in Sources */, - 6117DE021CD7A8EB002F57C1 /* Errors.swift in Sources */, - 6117DE011CD7A8EB002F57C1 /* DataProvider.swift in Sources */, - 6117DDFC1CD7A8EB002F57C1 /* CollectionChange.swift in Sources */, - 6117DE001CD7A8EB002F57C1 /* DataModelManager.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 612242B71C7B85D40017B0C4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 612B736D1C8FAF17005B12B1 /* SimpleCollectionDataProviderTests.swift in Sources */, - 6165455C1CC69E2900AC68C9 /* SharedCollectionDataProviderTests.swift in Sources */, - 6175BEE31C8E30CF003A162D /* SimpleDataProviderTests.swift in Sources */, - 612AB3E31CCE877D0034EADD /* PauseCollectionDataProviderTests.swift in Sources */, - 61427D061D63CD800034617E /* SmallModels.swift in Sources */, - 61B6660B1DB92CB600D9A812 /* DataModelManagerTests.swift in Sources */, - 61FD70AB1C8E1BED00DFAD2E /* ChildModel.swift in Sources */, - 611562DB1CC16B490001F5CE /* CollectionChangeTests.swift in Sources */, - 612B73621C8F9CD2005B12B1 /* RocketDataTestCase.swift in Sources */, - 611323AA1D5BB0070046625E /* FullChildModel.swift in Sources */, - 6165455E1CC7E8F600AC68C9 /* CollectionChangeHelpers.swift in Sources */, - 612AB3E11CCE7C1C0034EADD /* PauseDataProviderTests.swift in Sources */, - 61FD70A91C8E1BC800DFAD2E /* ParentModel.swift in Sources */, - 6192BEDB1CBFFC0A00212DC5 /* ChangeClockTests.swift in Sources */, - 6192BEDD1CBFFDFB00212DC5 /* BatchListenerTests.swift in Sources */, - 6175BEE81C8F4AE3003A162D /* ConsistencyDataProviderTests.swift in Sources */, - 6175BEE61C8E3140003A162D /* DataManagerHelpers.swift in Sources */, - 6137042E1CC91FAC008D0EBB /* WeakSharedCollectionArrayTests.swift in Sources */, - 612AB3E71CCE8AC30034EADD /* SharedCollectionTests.swift in Sources */, - 612B736F1C9079DC005B12B1 /* ConsistencyCollectionDataProviderTests.swift in Sources */, - 613C430E1CA091E00080B7A3 /* ParsingHelpersTests.swift in Sources */, - 6175BEEA1C8F4BBD003A162D /* DataProviderDelegates.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 612242BE1C7B85D40017B0C4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 612242B01C7B85D40017B0C4 /* RocketData */; - targetProxy = 612242BD1C7B85D40017B0C4 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 612242C31C7B85D40017B0C4 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 612242C41C7B85D40017B0C4 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 612242C61C7B85D40017B0C4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E816E0EC503C5F077273A5B3 /* Pods-RocketData.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_MODULES = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = RocketData/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketData; - PRODUCT_NAME = RocketData; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 612242C71C7B85D40017B0C4 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 997C3052192E11916F11C270 /* Pods-RocketData.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_MODULES = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = RocketData/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketData; - PRODUCT_NAME = RocketData; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 612242C91C7B85D40017B0C4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AC288B6D02498F01FECDAA0F /* Pods-RocketDataTests.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - INFOPLIST_FILE = RocketDataTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketDataTests; - PRODUCT_NAME = RocketDataTests; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 612242CA1C7B85D40017B0C4 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E1E495CE9B06BB69A277C55E /* Pods-RocketDataTests.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - INFOPLIST_FILE = RocketDataTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = LinkedIn.RocketDataTests; - PRODUCT_NAME = RocketDataTests; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 612242AB1C7B85D40017B0C4 /* Build configuration list for PBXProject "RocketData" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 612242C31C7B85D40017B0C4 /* Debug */, - 612242C41C7B85D40017B0C4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 612242C51C7B85D40017B0C4 /* Build configuration list for PBXNativeTarget "RocketData" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 612242C61C7B85D40017B0C4 /* Debug */, - 612242C71C7B85D40017B0C4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 612242C81C7B85D40017B0C4 /* Build configuration list for PBXNativeTarget "RocketDataTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 612242C91C7B85D40017B0C4 /* Debug */, - 612242CA1C7B85D40017B0C4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 612242A81C7B85D40017B0C4 /* Project object */; -} diff --git a/RocketData.xcworkspace/contents.xcworkspacedata b/RocketData.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index e2bd8c9..0000000 --- a/RocketData.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/RocketData.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/RocketData.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/RocketData.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/RocketData/Info.plist b/RocketData/Info.plist deleted file mode 100644 index d3de8ee..0000000 --- a/RocketData/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSPrincipalClass - - - diff --git a/RocketData/RocketData.h b/RocketData/RocketData.h deleted file mode 100644 index 132a3dd..0000000 --- a/RocketData/RocketData.h +++ /dev/null @@ -1,20 +0,0 @@ -// © 2016 LinkedIn Corp. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -#import - -//! Project version number for RocketData. -FOUNDATION_EXPORT double RocketDataVersionNumber; - -//! Project version string for RocketData. -FOUNDATION_EXPORT const unsigned char RocketDataVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/RocketDataTests/Info.plist b/RocketDataTests/Info.plist deleted file mode 100644 index ba72822..0000000 --- a/RocketDataTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/RocketDataTests/WeakSharedCollectionArrayTests.swift b/RocketDataTests/WeakSharedCollectionArrayTests.swift index 2718895..a1267d6 100644 --- a/RocketDataTests/WeakSharedCollectionArrayTests.swift +++ b/RocketDataTests/WeakSharedCollectionArrayTests.swift @@ -21,7 +21,7 @@ class WeakSharedCollectionArrayTests: RocketDataTestCase { // MARK: Basic Functionality func testWeakArrayBasic() { - var array: WeakSharedCollectionArray = { + let array: WeakSharedCollectionArray = { var array = WeakSharedCollectionArray() let test = CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache) array.append(test) @@ -63,7 +63,7 @@ class WeakSharedCollectionArrayTests: RocketDataTestCase { func testArrayLiteralFull() { let array: WeakSharedCollectionArray = { - var strongArray = [CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache), CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache), CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache)] + let strongArray = [CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache), CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache), CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache)] let array: WeakSharedCollectionArray = [strongArray[0], strongArray[1], strongArray[2]] for i in 0..<3 { XCTAssertTrue(array[i] === strongArray[i]) @@ -86,7 +86,7 @@ class WeakSharedCollectionArrayTests: RocketDataTestCase { func testArrayLiteralPartial() { let array: WeakSharedCollectionArray = { - var strongArray = [CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache), CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache), CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache)] + let strongArray = [CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache), CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache), CollectionDataProvider(dataModelManager: DataModelManager.sharedDataManagerNoCache)] let array: WeakSharedCollectionArray = [strongArray[0], nil, strongArray[1], nil, strongArray[2], nil] for i in 0..<6 { if i % 2 == 0 { diff --git a/build.sh b/build.sh index e4f0751..6d694b3 100755 --- a/build.sh +++ b/build.sh @@ -1,20 +1,28 @@ #!/bin/sh -# disable-concurrent-destination-testing appears to fix travis on Xcode10 - https://stackoverflow.com/questions/52395946/xcodebuild-software-caused-connection-abort-userinfo-nslocalizeddescription-e - set -o pipefail && time xcodebuild clean test \ - -workspace RocketData.xcworkspace \ + -scheme RocketData \ + -sdk macosx \ + -enableCodeCoverage YES \ + | tee build.log \ + | xcpretty && +time xcodebuild clean test \ -scheme RocketData \ -sdk iphonesimulator \ -disable-concurrent-destination-testing \ - -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.3' \ - -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.1' \ - -destination 'platform=iOS Simulator,name=iPhone X,OS=11.3' \ - -destination 'platform=iOS Simulator,name=iPhone XS Max,OS=12.2' \ -| xcpretty - -# Disabling 8.4 because it's very flaky on travis -# We can look at reenabling when it gets more stable -# -destination 'platform=iOS Simulator,name=iPhone 6,OS=8.4' \ - + -enableCodeCoverage YES \ + -destination 'platform=iOS Simulator,name=iPhone 6,OS=10.3.1' \ + -destination 'platform=iOS Simulator,name=iPhone 7,OS=11.4' \ + -destination 'platform=iOS Simulator,name=iPhone X,OS=12.4' \ + -destination 'platform=iOS Simulator,name=iPhone 11 Pro,OS=13.3' \ + | tee build.log \ + | xcpretty && +time xcodebuild clean test \ + -scheme RocketData \ + -sdk appletvsimulator \ + -enableCodeCoverage YES \ + -destination 'platform=tvOS Simulator,name=Apple TV,OS=13.3' \ + | tee build.log \ + | xcpretty && +cat build.log From 91f729200be2afecb752ac527421c24ed16c89b2 Mon Sep 17 00:00:00 2001 From: Heberti Almeida Date: Thu, 16 Jan 2020 13:02:13 -0500 Subject: [PATCH 33/33] Update some files after ConsistencyManager repo renamed (#95) --- Cartfile | 2 +- Package.resolved | 2 +- Package.swift | 2 +- README.md | 2 +- docs/index.rst | 6 +++--- docs/pages/015_architecture.rst | 2 +- docs/pages/050_models.rst | 2 +- docs/pages/090_otherFeatures.rst | 2 +- docs/pages/095_projections.rst | 2 +- docs/pages/120_testing.rst | 2 +- docs/pages/150_futurePlans.rst | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cartfile b/Cartfile index 9b46714..82dd2b0 100644 --- a/Cartfile +++ b/Cartfile @@ -1 +1 @@ -github "plivesey/ConsistencyManager-iOS" ~> 7.0.0 +github "plivesey/ConsistencyManager" ~> 7.0.0 diff --git a/Package.resolved b/Package.resolved index 5938b1b..d68e760 100644 --- a/Package.resolved +++ b/Package.resolved @@ -3,7 +3,7 @@ "pins": [ { "package": "ConsistencyManager", - "repositoryURL": "https://github.com/plivesey/ConsistencyManager-iOS", + "repositoryURL": "https://github.com/plivesey/ConsistencyManager", "state": { "branch": "master", "revision": "ea9b0ddfb60d4a14d7a87e2f4017390f280e71b5", diff --git a/Package.swift b/Package.swift index 29baff2..3a9e377 100644 --- a/Package.swift +++ b/Package.swift @@ -14,7 +14,7 @@ let package = Package( .library(name: "RocketData", targets: ["RocketData"]), ], dependencies: [ - .package(url: "https://github.com/plivesey/ConsistencyManager-iOS", .branch("master")) + .package(url: "https://github.com/plivesey/ConsistencyManager", .branch("master")) ], targets: [ .target( diff --git a/README.md b/README.md index f0bf8ad..e2d3b9b 100644 --- a/README.md +++ b/README.md @@ -67,5 +67,5 @@ To get started, you should take a look at the [docs](https://plivesey.github.io/ ### Consistency Manager -Rocket Data uses [ConsistencyManager-iOS](https://github.com/plivesey/ConsistencyManager-iOS/) to manage the in-memory consistency of models. While you never need to access the Consistency Manager directly, understanding how it works will help you understand Rocket Data. +Rocket Data uses [ConsistencyManager](https://github.com/plivesey/ConsistencyManager/) to manage the in-memory consistency of models. While you never need to access the Consistency Manager directly, understanding how it works will help you understand Rocket Data. diff --git a/docs/index.rst b/docs/index.rst index b780909..2f6ba25 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -35,11 +35,11 @@ https://realm.io/news/slug-peter-livesey-managing-consistency-immutable-models/ Consistency Manager ------------------- -Rocket Data uses ConsistencyManager-iOS to manage the in memory consistency of models. While you never need to access the Consistency Manager directly, understanding how it works will help you understand Rocket Data. +Rocket Data uses ConsistencyManager to manage the in memory consistency of models. While you never need to access the Consistency Manager directly, understanding how it works will help you understand Rocket Data. -Consistency Manager Docs: https://linkedin.github.io/ConsistencyManager-iOS/ +Consistency Manager Docs: https://plivesey.github.io/ConsistencyManager/ -Consistency Manager Code: https://github.com/linkedin/ConsistencyManager-iOS/ +Consistency Manager Code: https://github.com/linkedin/ConsistencyManager/ Documentation ------------- diff --git a/docs/pages/015_architecture.rst b/docs/pages/015_architecture.rst index 04ff118..8c109bb 100644 --- a/docs/pages/015_architecture.rst +++ b/docs/pages/015_architecture.rst @@ -10,7 +10,7 @@ Diagram Elements 1. View Controller. Application code which mainly talks to ``DataProviders``. 2. ``DataProvider``. The main API which view controllers interact with. See :doc:`030_dataProviders` - 3. ``ConsistencyManager``. The consistency engine which drives Rocket Data. See https://linkedin.github.io/ConsistencyManager-iOS/. + 3. ``ConsistencyManager``. The consistency engine which drives Rocket Data. See https://plivesey.github.io/ConsistencyManager/. 4. Rocket Data Model Manager. A light-weight class which coordinates between ``DataProviders`` and the cache. 5. Cache. The cache implemented by the application. See :doc:`060_cacheDelegate`. diff --git a/docs/pages/050_models.rst b/docs/pages/050_models.rst index 5ba7255..b13f0aa 100644 --- a/docs/pages/050_models.rst +++ b/docs/pages/050_models.rst @@ -8,7 +8,7 @@ Model vs SimpleModel SimpleModel is easier to implement since there are only two methods to implement, but they are less powerful. All immutable models are trees, and if you implement the Model protocol, the library will keep all subtrees consistent. So, if a child model needs updating, the library will replace it, regenerate a new person model, and update the DataProviders. The Model protocol takes more work to implement, but we would recommend it unless your models are very simple and you only need to keep the top level models consistent. -For a more detailed discussion on how child models are kept consistent, see https://linkedin.github.io/ConsistencyManager-iOS/pages/010_consistencyManager.html. However, you do not need to call the Consistency Manager directly because Rocket Data will do this automatically for you. +For a more detailed discussion on how child models are kept consistent, see https://plivesey.github.io/ConsistencyManager/pages/010_consistencyManager.html. However, you do not need to call the Consistency Manager directly because Rocket Data will do this automatically for you. The Protocols ------------- diff --git a/docs/pages/090_otherFeatures.rst b/docs/pages/090_otherFeatures.rst index a313996..82e9848 100644 --- a/docs/pages/090_otherFeatures.rst +++ b/docs/pages/090_otherFeatures.rst @@ -21,4 +21,4 @@ Logging If you make a mistake in setting up or using Rocket Data, it will throw an assertion. This will not crash in release builds and the library always makes a best effort to recover (usually by ignoring a change and reverting to a previous state). This assert is implemented in the Logger class. If you want to intercept this assert, you can implement the LoggerDelegate. -The Consistency Manager can make many changes while the application runs. If you want additional information for debugging purposes, you may want to register as the delegate of the ConsistencyManager owned by the DataModelManager. See https://linkedin.github.io/ConsistencyManager-iOS/pages/110_errorsAndDebugging.html for more information. +The Consistency Manager can make many changes while the application runs. If you want additional information for debugging purposes, you may want to register as the delegate of the ConsistencyManager owned by the DataModelManager. See https://plivesey.github.io/ConsistencyManager/pages/110_errorsAndDebugging.html for more information. diff --git a/docs/pages/095_projections.rst b/docs/pages/095_projections.rst index 7675f05..1256441 100644 --- a/docs/pages/095_projections.rst +++ b/docs/pages/095_projections.rst @@ -3,7 +3,7 @@ Projections Usually, IDs must be globally unique. However, you can use the same ID for two different classes if you want to use projections. This feature is advanced and not particularly common. -For the full docs on this, please see: https://linkedin.github.io/ConsistencyManager-iOS/pages/055_projections.html. +For the full docs on this, please see: https://plivesey.github.io/ConsistencyManager/pages/055_projections.html. However, there are a few additional things to note: diff --git a/docs/pages/120_testing.rst b/docs/pages/120_testing.rst index 3cad6ff..c5cfaeb 100644 --- a/docs/pages/120_testing.rst +++ b/docs/pages/120_testing.rst @@ -1,4 +1,4 @@ Testing ======= -Both the Consistency Manager and Rocket Data are extensively tested. Since it's so critical to the application, every edge case we could think of has been tested and verified. Also, see https://linkedin.github.io/ConsistencyManager-iOS/pages/130_testing.html. +Both the Consistency Manager and Rocket Data are extensively tested. Since it's so critical to the application, every edge case we could think of has been tested and verified. Also, see https://plivesey.github.io/ConsistencyManager/pages/130_testing.html. diff --git a/docs/pages/150_futurePlans.rst b/docs/pages/150_futurePlans.rst index 85c2d9d..72134e4 100644 --- a/docs/pages/150_futurePlans.rst +++ b/docs/pages/150_futurePlans.rst @@ -4,4 +4,4 @@ Future Plans - Adding a listener functionality which allows you to listen for certain changes. For instance, you may want to listen for any new Message model with unread property equal to true that's been added. This is similar to using predicates to identify changes which haven't even happened yet. - Adding support for projections. We could allow two models with the same id if they provide a merge function. This could be useful if you want to have two representations of the same model with different fields. -For Consistency Manager plans, see https://linkedin.github.io/ConsistencyManager-iOS/pages/180_futurePlans.html. +For Consistency Manager plans, see https://plivesey.github.io/ConsistencyManager/pages/180_futurePlans.html.