From f943a8f13fbb8af1be45bcc2e5568f11461cec5b Mon Sep 17 00:00:00 2001 From: Corey Date: Thu, 12 Nov 2020 17:06:18 -0500 Subject: [PATCH] Add ParseLiveQuery and add missing OCK fields (#67) * Add missing fields * Add LiveQuery * Update podspec * Switch to canImport * Use if not watchOS * Add delegate for descriptions * Update --- .gitignore | 1 + ParseCareKit/PCKObjects/CarePlan.swift | 3 +- ParseCareKit/PCKObjects/Contact.swift | 3 +- ParseCareKit/PCKObjects/Outcome.swift | 3 +- ParseCareKit/PCKObjects/OutcomeValue.swift | 4 +-- ParseCareKit/PCKObjects/PCKObject.swift | 5 +++ ParseCareKit/PCKObjects/Patient.swift | 3 +- ParseCareKit/PCKObjects/Task.swift | 3 +- .../ParseRemoteSynchronizationManager.swift | 7 ++-- ParseCareKit/Protocols/PCKSynchronized.swift | 2 +- Pods/Pods.xcodeproj/project.pbxproj | 35 ++++++++++--------- 11 files changed, 42 insertions(+), 27 deletions(-) diff --git a/.gitignore b/.gitignore index 10beaaad4..1ad26bf19 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ xcuserdata/ ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) build/ DerivedData/ +.DS_Store *.moved-aside *.pbxuser !default.pbxuser diff --git a/ParseCareKit/PCKObjects/CarePlan.swift b/ParseCareKit/PCKObjects/CarePlan.swift index c1700fb50..356c67754 100644 --- a/ParseCareKit/PCKObjects/CarePlan.swift +++ b/ParseCareKit/PCKObjects/CarePlan.swift @@ -148,7 +148,7 @@ open class CarePlan: PCKVersionedObject, PCKRemoteSynchronized { completion(true,nil) } - public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void){ + public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) -> PFQuery { let query = CarePlan.query()! query.whereKey(kPCKObjectClockKey, greaterThanOrEqualTo: localClock) @@ -177,6 +177,7 @@ open class CarePlan: PCKVersionedObject, PCKRemoteSynchronized { let revision = OCKRevisionRecord(entities: entities, knowledgeVector: cloudClock) mergeRevision(revision) } + return query } public func pushRevision(_ overwriteRemote: Bool, cloudClock: Int, completion: @escaping (Error?) -> Void){ diff --git a/ParseCareKit/PCKObjects/Contact.swift b/ParseCareKit/PCKObjects/Contact.swift index 188d4b5ef..2dc8bace9 100644 --- a/ParseCareKit/PCKObjects/Contact.swift +++ b/ParseCareKit/PCKObjects/Contact.swift @@ -234,7 +234,7 @@ open class Contact: PCKVersionedObject, PCKRemoteSynchronized { completion(true,nil) } - public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void){ + public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) -> PFQuery { let query = Contact.query()! query.whereKey(kPCKObjectClockKey, greaterThanOrEqualTo: localClock) @@ -263,6 +263,7 @@ open class Contact: PCKVersionedObject, PCKRemoteSynchronized { let revision = OCKRevisionRecord(entities: entities, knowledgeVector: cloudClock) mergeRevision(revision) } + return query } public func pushRevision(_ overwriteRemote: Bool, cloudClock: Int, completion: @escaping (Error?) -> Void){ diff --git a/ParseCareKit/PCKObjects/Outcome.swift b/ParseCareKit/PCKObjects/Outcome.swift index 81dbb4aa0..85432b004 100644 --- a/ParseCareKit/PCKObjects/Outcome.swift +++ b/ParseCareKit/PCKObjects/Outcome.swift @@ -140,7 +140,7 @@ open class Outcome: PCKObject, PCKRemoteSynchronized { completion(true,nil) } - public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void){ + public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) -> PFQuery { let query = Outcome.query()! query.whereKey(kPCKObjectClockKey, greaterThanOrEqualTo: localClock) @@ -169,6 +169,7 @@ open class Outcome: PCKObject, PCKRemoteSynchronized { let revision = OCKRevisionRecord(entities: entities, knowledgeVector: cloudClock) mergeRevision(revision) } + return query } public func pushRevision(_ overwriteRemote: Bool, cloudClock: Int, completion: @escaping (Error?) -> Void){ diff --git a/ParseCareKit/PCKObjects/OutcomeValue.swift b/ParseCareKit/PCKObjects/OutcomeValue.swift index 4b2a81efc..e82ff4270 100644 --- a/ParseCareKit/PCKObjects/OutcomeValue.swift +++ b/ParseCareKit/PCKObjects/OutcomeValue.swift @@ -140,6 +140,7 @@ open class OutcomeValue: PCKObject, PFSubclassing { self.value = outcomeValue.value self.units = outcomeValue.units + self.asset = outcomeValue.asset self.groupIdentifier = outcomeValue.groupIdentifier self.tags = outcomeValue.tags self.source = outcomeValue.source @@ -147,8 +148,7 @@ open class OutcomeValue: PCKObject, PFSubclassing { self.remoteID = outcomeValue.remoteID self.createdDate = outcomeValue.createdDate self.notes = outcomeValue.notes?.compactMap{Note(careKitEntity: $0)} - - + return self } diff --git a/ParseCareKit/PCKObjects/PCKObject.swift b/ParseCareKit/PCKObjects/PCKObject.swift index 095a50dab..c0939b8d0 100644 --- a/ParseCareKit/PCKObjects/PCKObject.swift +++ b/ParseCareKit/PCKObjects/PCKObject.swift @@ -43,6 +43,11 @@ open class PCKObject: PFObject { self.createdDate = other.createdDate self.notes = other.notes self.logicalClock = other.logicalClock + self.asset = other.asset + self.tags = other.tags + self.schemaVersion = other.schemaVersion + self.groupIdentifier = other.groupIdentifier + self.source = other.source } open func copyRelationalEntities(_ parse: PCKObject){ diff --git a/ParseCareKit/PCKObjects/Patient.swift b/ParseCareKit/PCKObjects/Patient.swift index bf51a7ce9..a475e3818 100644 --- a/ParseCareKit/PCKObjects/Patient.swift +++ b/ParseCareKit/PCKObjects/Patient.swift @@ -125,7 +125,7 @@ open class Patient: PCKVersionedObject, PCKRemoteSynchronized { completion(true,nil) } - public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void){ + public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) -> PFQuery { let query = Patient.query()! query.whereKey(kPCKObjectClockKey, greaterThanOrEqualTo: localClock) @@ -154,6 +154,7 @@ open class Patient: PCKVersionedObject, PCKRemoteSynchronized { let revision = OCKRevisionRecord(entities: entities, knowledgeVector: cloudClock) mergeRevision(revision) } + return query } public func pushRevision(_ overwriteRemote: Bool, cloudClock: Int, completion: @escaping (Error?) -> Void){ diff --git a/ParseCareKit/PCKObjects/Task.swift b/ParseCareKit/PCKObjects/Task.swift index c2b17a62e..6af8496b5 100644 --- a/ParseCareKit/PCKObjects/Task.swift +++ b/ParseCareKit/PCKObjects/Task.swift @@ -152,7 +152,7 @@ open class Task: PCKVersionedObject, PCKRemoteSynchronized { completion(true,nil) } - public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void){ + public func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) -> PFQuery { let query = Task.query()! query.whereKey(kPCKObjectClockKey, greaterThanOrEqualTo: localClock) @@ -181,6 +181,7 @@ open class Task: PCKVersionedObject, PCKRemoteSynchronized { let revision = OCKRevisionRecord(entities: entities, knowledgeVector: cloudClock) mergeRevision(revision) } + return query } public func pushRevision(_ overwriteRemote: Bool, cloudClock: Int, completion: @escaping (Error?) -> Void){ diff --git a/ParseCareKit/ParseRemoteSynchronizationManager.swift b/ParseCareKit/ParseRemoteSynchronizationManager.swift index e47a90854..8bd655d07 100644 --- a/ParseCareKit/ParseRemoteSynchronizationManager.swift +++ b/ParseCareKit/ParseRemoteSynchronizationManager.swift @@ -21,6 +21,7 @@ public protocol ParseRemoteSynchronizationDelegate: OCKRemoteSynchronizationDele func storeUpdatedPatient(_ patient: OCKPatient) func storeUpdatedTask(_ task: OCKTask) func successfullyPushedDataToCloud() + func subscribe(_ query: PFQuery) } open class ParseRemoteSynchronizationManager: NSObject, OCKRemoteSynchronizable { @@ -107,7 +108,7 @@ open class ParseRemoteSynchronizationManager: NSObject, OCKRemoteSynchronizable } var currentError = previousError - newConcreteClass.pullRevisions(localClock, cloudClock: cloudClock){ + let query = newConcreteClass.pullRevisions(localClock, cloudClock: cloudClock){ customRevision in mergeRevision(customRevision){ error in @@ -120,6 +121,7 @@ open class ParseRemoteSynchronizationManager: NSObject, OCKRemoteSynchronizable } } + self.parseDelegate?.subscribe(query) } func pullRevisionsForCustomClasses(customClassesAlreadyPulled:Int=0, previousError: Error?, localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord, @escaping (Error?) -> Void) -> Void, completion: @escaping (Error?) -> Void){ @@ -134,7 +136,7 @@ open class ParseRemoteSynchronizationManager: NSObject, OCKRemoteSynchronizable return } var currentError = previousError - newCustomClass.pullRevisions(localClock, cloudClock: cloudClock){ + let query = newCustomClass.pullRevisions(localClock, cloudClock: cloudClock){ customRevision in mergeRevision(customRevision){ error in @@ -146,6 +148,7 @@ open class ParseRemoteSynchronizationManager: NSObject, OCKRemoteSynchronizable self.pullRevisionsForCustomClasses(customClassesAlreadyPulled: customClassesAlreadyPulled+1, previousError: currentError, localClock: localClock, cloudClock: cloudClock, mergeRevision: mergeRevision, completion: completion) } } + self.parseDelegate?.subscribe(query) }else{ completion(previousError) } diff --git a/ParseCareKit/Protocols/PCKSynchronized.swift b/ParseCareKit/Protocols/PCKSynchronized.swift index d6bb4fe7b..7171d3eb4 100644 --- a/ParseCareKit/Protocols/PCKSynchronized.swift +++ b/ParseCareKit/Protocols/PCKSynchronized.swift @@ -25,6 +25,6 @@ public protocol PCKSynchronized: PFObject, PFSubclassing { Protocol that defines the properties and methods for parse carekit entities that are synchronized using a knowledge vector. */ public protocol PCKRemoteSynchronized: PCKSynchronized { - func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) + func pullRevisions(_ localClock: Int, cloudClock: OCKRevisionRecord.KnowledgeVector, mergeRevision: @escaping (OCKRevisionRecord) -> Void) -> PFQuery func pushRevision(_ overwriteRemote: Bool, cloudClock: Int, completion: @escaping (Error?) -> Void) } diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index c242392a1..c46348100 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -602,7 +602,7 @@ 058E72CBA2AACD55905C0B0A4C6F0C7B /* PFCloud+Synchronous.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFCloud+Synchronous.h"; path = "Parse/Parse/PFCloud+Synchronous.h"; sourceTree = ""; }; 060DF194851ED119E7A4ECECF399CD45 /* Bolts.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bolts.debug.xcconfig; sourceTree = ""; }; 0651635F37C1698684EEE9BE2DC92792 /* Parse.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Parse.modulemap; sourceTree = ""; }; - 0652F2476C7C87C6C0F6CB68072EA25F /* Parse.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Parse.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0652F2476C7C87C6C0F6CB68072EA25F /* Parse.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Parse.framework; path = Parse.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 06D9782F1EBCD3921BEC5B531D0491BA /* PFRelationState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationState.h; path = Parse/Parse/Internal/Relation/State/PFRelationState.h; sourceTree = ""; }; 07F471BF2E393AB03CAFC050F923A4C8 /* PFUserAuthenticationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserAuthenticationController.m; path = Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m; sourceTree = ""; }; 085F355F62AB08E9D3E24F24FE8D4313 /* PFFieldOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFFieldOperation.h; path = Parse/Parse/Internal/FieldOperation/PFFieldOperation.h; sourceTree = ""; }; @@ -629,7 +629,7 @@ 129DF909BDF7D4EC97008F3AD1943928 /* PFCloudCodeController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCloudCodeController.m; path = Parse/Parse/Internal/CloudCode/PFCloudCodeController.m; sourceTree = ""; }; 12A91D0F5B993730E460EC72F20644A0 /* OCKCDPatient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OCKCDPatient.swift; path = CareKitStore/CareKitStore/CoreData/OCKCDPatient.swift; sourceTree = ""; }; 12EEB19BB507F7A73D2BFD46474FADC2 /* OCKScheduleEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OCKScheduleEvent.swift; path = CareKitStore/CareKitStore/Structs/OCKScheduleEvent.swift; sourceTree = ""; }; - 1312C21F03BCEBC7D7F207F9DFA1D391 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = en.lproj; path = Parse/Parse/Resources/en.lproj; sourceTree = ""; }; + 1312C21F03BCEBC7D7F207F9DFA1D391 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = en.lproj; path = Parse/Parse/Resources/en.lproj; sourceTree = ""; }; 13861C38245082B8769931A437BF4B9B /* PFQuery+Synchronous.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFQuery+Synchronous.h"; path = "Parse/Parse/PFQuery+Synchronous.h"; sourceTree = ""; }; 140532D7E80DA3AE9100180F580ED941 /* PFPropertyInfo_Runtime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPropertyInfo_Runtime.m; path = Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.m; sourceTree = ""; }; 14A2D01244A199D729CC6764EBC43285 /* PFObjectSubclassInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectSubclassInfo.m; path = Parse/Parse/Internal/Object/Subclassing/PFObjectSubclassInfo.m; sourceTree = ""; }; @@ -866,7 +866,7 @@ 85BEE05C531E8D307D88DF541192AC74 /* PFQueryController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFQueryController.h; path = Parse/Parse/Internal/Query/Controller/PFQueryController.h; sourceTree = ""; }; 85D62AFD16EFD9E6991126DBFBCECDCE /* PFQueryController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFQueryController.m; path = Parse/Parse/Internal/Query/Controller/PFQueryController.m; sourceTree = ""; }; 8609C5A66CECCCC8282B3A60FD7B8C55 /* PFPushUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFPushUtilities.m; path = Parse/Parse/Internal/Push/Utilites/PFPushUtilities.m; sourceTree = ""; }; - 865E67283BC997F0041A960A6A71E4DA /* Pods_TestHost.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TestHost.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 865E67283BC997F0041A960A6A71E4DA /* Pods_TestHost.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_TestHost.framework; path = "Pods-TestHost.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 8661C7557D34877449936D2B86BDB3F9 /* PFLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFLogging.h; path = Parse/Parse/Internal/PFLogging.h; sourceTree = ""; }; 86C45FCDCCC10E905C45B38548289C2B /* PFEventuallyPin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFEventuallyPin.h; path = Parse/Parse/Internal/PFEventuallyPin.h; sourceTree = ""; }; 871532E8A0DC4E9D8E46E5EC45A34E45 /* PFRelationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRelationPrivate.h; path = Parse/Parse/Internal/Relation/PFRelationPrivate.h; sourceTree = ""; }; @@ -897,7 +897,7 @@ 90098005D88D2C8DA094E417D0069EA9 /* PFAnalytics_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAnalytics_Private.h; path = Parse/Parse/Internal/Analytics/PFAnalytics_Private.h; sourceTree = ""; }; 90396D3356DF365F990AA1F4404DDDC7 /* PFPropertyInfo_Runtime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPropertyInfo_Runtime.h; path = Parse/Parse/Internal/PropertyInfo/PFPropertyInfo_Runtime.h; sourceTree = ""; }; 906EF077F796EC6474B4E38FD298E252 /* OCKAnyOutcome.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OCKAnyOutcome.swift; path = CareKitStore/CareKitStore/Protocols/Outcomes/OCKAnyOutcome.swift; sourceTree = ""; }; - 909DECA92EE382A8AA7F2F6C6234E1C4 /* CareKitStore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CareKitStore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 909DECA92EE382A8AA7F2F6C6234E1C4 /* CareKitStore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CareKitStore.framework; path = CareKitStore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 90A6437E3D75EBCDC2D3358EBBAC3200 /* Pods-ParseCareKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ParseCareKit-dummy.m"; sourceTree = ""; }; 90CFC13600CB34B5A0789E1F48B77854 /* OCKContactStoreDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OCKContactStoreDelegate.swift; path = CareKitStore/CareKitStore/Protocols/Contacts/OCKContactStoreDelegate.swift; sourceTree = ""; }; 9141DDB26AF8542AADC39BBF5C0C2107 /* PFObject+Synchronous.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PFObject+Synchronous.h"; path = "Parse/Parse/PFObject+Synchronous.h"; sourceTree = ""; }; @@ -929,7 +929,7 @@ 9CF953C7293CF6D918079B7A01C0AE25 /* PFObjectLocalIdStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFObjectLocalIdStore.h; path = Parse/Parse/Internal/Object/LocalIdStore/PFObjectLocalIdStore.h; sourceTree = ""; }; 9CFA36B0C7603AB9C01E86B013EAE516 /* PFInstallationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFInstallationController.m; path = Parse/Parse/Internal/Installation/Controller/PFInstallationController.m; sourceTree = ""; }; 9D43C7CF3525F2273FE06AB196837D1D /* PFURLSessionDataTaskDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLSessionDataTaskDelegate.m; path = Parse/Parse/Internal/Commands/CommandRunner/URLSession/Session/TaskDelegate/PFURLSessionDataTaskDelegate.m; sourceTree = ""; }; - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 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; }; 9D949D4480EDEAC4D23399296A8ECEE8 /* CareKitStore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CareKitStore.debug.xcconfig; sourceTree = ""; }; 9DEA7BAE538EE7E27DAB12A4C10EDC95 /* PFInstallationPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFInstallationPrivate.h; path = Parse/Parse/Internal/Installation/PFInstallationPrivate.h; sourceTree = ""; }; 9E6F8A2196B72E84A194764B0C5BF542 /* PFAsyncTaskQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFAsyncTaskQueue.m; path = Parse/Parse/Internal/PFAsyncTaskQueue.m; sourceTree = ""; }; @@ -1097,7 +1097,7 @@ EB673491F8BD89928F37BBE8CAD8AF0F /* PFURLConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFURLConstructor.m; path = Parse/Parse/Internal/HTTPRequest/PFURLConstructor.m; sourceTree = ""; }; EC2B245C4F7AC9F62A0700733E1EBE08 /* PFPinningEventuallyQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPinningEventuallyQueue.h; path = Parse/Parse/Internal/PFPinningEventuallyQueue.h; sourceTree = ""; }; ECF67F5D7A635361A75E09D5F69A8F77 /* ParseModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseModule.h; path = Parse/Parse/Internal/ParseModule.h; sourceTree = ""; }; - ED7ADA84A7005589821D254428CD2D26 /* Parse.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Parse.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + ED7ADA84A7005589821D254428CD2D26 /* Parse.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = Parse.bundle; path = "Parse-Parse.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; ED7B5BDF76930E439F8764D27845D490 /* PFAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFAssert.h; path = Parse/Parse/Internal/PFAssert.h; sourceTree = ""; }; EDAB490AC3BD1E9A12F7FFB7295128CD /* OCKAnyVersionableTask.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OCKAnyVersionableTask.swift; path = CareKitStore/CareKitStore/Protocols/Tasks/OCKAnyVersionableTask.swift; sourceTree = ""; }; EE63C9A975CCFE8282B89C70FEBFE65A /* OCKStoreProtocol+Synchronous.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "OCKStoreProtocol+Synchronous.swift"; path = "CareKitStore/CareKitStore/Protocols/OCKStoreProtocol+Synchronous.swift"; sourceTree = ""; }; @@ -1109,7 +1109,7 @@ F3239DFD603895B6CF0F78B599A91EF2 /* PFDevice.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFDevice.m; path = Parse/Parse/Internal/PFDevice.m; sourceTree = ""; }; F344543DB12E6635DF1B6BEFF8264FC8 /* PFUserConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFUserConstants.m; path = Parse/Parse/Internal/User/Constants/PFUserConstants.m; sourceTree = ""; }; F3E51DA4FDD5CA5D342D4F02905D6046 /* PFObjectUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFObjectUtilities.m; path = Parse/Parse/Internal/Object/Utilities/PFObjectUtilities.m; sourceTree = ""; }; - F455652D9F8AE1E40E329E486AA9D2FA /* Pods_ParseCareKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ParseCareKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F455652D9F8AE1E40E329E486AA9D2FA /* Pods_ParseCareKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ParseCareKit.framework; path = "Pods-ParseCareKit.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; F47A79EE03C068FF3C384C020991C606 /* BFCancellationTokenRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BFCancellationTokenRegistration.m; path = Bolts/Common/BFCancellationTokenRegistration.m; sourceTree = ""; }; F4DB995FEB1A42C981F597BC6389A171 /* Pods-TestHost-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-TestHost-acknowledgements.plist"; sourceTree = ""; }; F5AEBF78D596698FE9646BD492D36E4E /* PFCurrentUserController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = PFCurrentUserController.m; path = Parse/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m; sourceTree = ""; }; @@ -1119,7 +1119,7 @@ F7684F3B65F72A697745FE33578EB326 /* PFPaymentTransactionObserver_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFPaymentTransactionObserver_Private.h; path = Parse/Parse/Internal/Purchase/PaymentTransactionObserver/PFPaymentTransactionObserver_Private.h; sourceTree = ""; }; F7C170BEA75F894709E46586EF0780AA /* ParseInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ParseInternal.h; path = Parse/Parse/Internal/ParseInternal.h; sourceTree = ""; }; F7FE7CCCD5467B20EF353D795F0E6941 /* CareKitStore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "CareKitStore-Info.plist"; sourceTree = ""; }; - F84B331B5D6AAF1548DD1BB004AE5C2A /* Bolts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Bolts.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F84B331B5D6AAF1548DD1BB004AE5C2A /* Bolts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Bolts.framework; path = Bolts.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F87E991ED0B31E37C3EBC878036DAA4E /* PFRESTSessionCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PFRESTSessionCommand.h; path = Parse/Parse/Internal/Commands/PFRESTSessionCommand.h; sourceTree = ""; }; F8B14895D2CA74927BDCFB655C4C1CAF /* OCKCarePlanStoreDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OCKCarePlanStoreDelegate.swift; path = CareKitStore/CareKitStore/Protocols/CarePlans/OCKCarePlanStoreDelegate.swift; sourceTree = ""; }; F8CE1E3CCE3E6E302D628789502078C3 /* CareKitStore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = CareKitStore.release.xcconfig; sourceTree = ""; }; @@ -1313,6 +1313,7 @@ 3C6C8CF8230C87912B9A756AFF9704EE /* OCKWatchConnectivityPeer.swift */, 4E8CF5C043986E1BB048DC39FBAA72F5 /* Support Files */, ); + name = CareKitStore; path = CareKitStore; sourceTree = ""; }; @@ -1402,6 +1403,7 @@ 43309A83E9BCB32226B42F40239A2609 /* Support Files */, DCD50DD0F40CF323AB2FBB17F83E663E /* Tasks */, ); + name = Bolts; path = Bolts; sourceTree = ""; }; @@ -1411,6 +1413,7 @@ B1065B49DE5F03EC8F07310123FE6C50 /* Core */, 32DD0DB8E4F3A6ADF8CF7FE05EAB3514 /* Support Files */, ); + name = Parse; path = Parse; sourceTree = ""; }; @@ -2294,7 +2297,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 1100; - LastUpgradeCheck = 1210; + LastUpgradeCheck = 1100; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 10.0"; @@ -2748,7 +2751,7 @@ GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; INFOPLIST_FILE = "Target Support Files/Bolts/Bolts-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2784,7 +2787,7 @@ GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; INFOPLIST_FILE = "Target Support Files/Parse/Parse-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2858,7 +2861,7 @@ GCC_PREFIX_HEADER = "Target Support Files/Parse/Parse-prefix.pch"; INFOPLIST_FILE = "Target Support Files/Parse/Parse-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2904,7 +2907,6 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -2947,7 +2949,7 @@ CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Parse"; IBSC_MODULE = Parse; INFOPLIST_FILE = "Target Support Files/Parse/ResourceBundle-Parse-Parse-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; PRODUCT_NAME = Parse; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -3079,7 +3081,7 @@ CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Parse"; IBSC_MODULE = Parse; INFOPLIST_FILE = "Target Support Files/Parse/ResourceBundle-Parse-Parse-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; PRODUCT_NAME = Parse; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -3151,7 +3153,6 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -3242,7 +3243,7 @@ GCC_PREFIX_HEADER = "Target Support Files/Bolts/Bolts-prefix.pch"; INFOPLIST_FILE = "Target Support Files/Bolts/Bolts-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks",