diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 9a48ad6..506b297 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 46; objects = { /* Begin PBXBuildFile section */ @@ -500,47 +500,47 @@ /* Begin PBXFileReference section */ 00DE87D841A65ABEF675A7CC4B75375E /* RLMPlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMPlatform.h; path = include/RLMPlatform.h; sourceTree = ""; }; 0121D20D9E8E591D410348DEEC8419AD /* RLMArray_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMArray_Private.h; path = include/RLMArray_Private.h; sourceTree = ""; }; - 0186D7FF06B2AA0CF675B262569B6875 /* RLMSyncPermission.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncPermission.mm; path = Realm/RLMSyncPermission.mm; sourceTree = ""; }; + 0186D7FF06B2AA0CF675B262569B6875 /* RLMSyncPermission.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncPermission.mm; path = Realm/RLMSyncPermission.mm; sourceTree = ""; }; 0257ED3312238D6F28490F9540A4D92F /* RLMRealmConfiguration+Sync.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RLMRealmConfiguration+Sync.h"; path = "include/RLMRealmConfiguration+Sync.h"; sourceTree = ""; }; 033BECE918B1FBD37D5C586FDB9A88FE /* SVProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SVProgressHUD-umbrella.h"; sourceTree = ""; }; 041546C28FAD9947BD99E5DA0DAB76DE /* Pods-pocloud-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-pocloud-resources.sh"; sourceTree = ""; }; 05C09D0374B427D3E107ED81E4CA546E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 067F73E79FC632FA973441E5B3D87BFA /* ChameleonFramework.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ChameleonFramework.modulemap; sourceTree = ""; }; 069859A775F881E0108466D6B55A9F1B /* Realm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Realm.h; path = include/Realm.h; sourceTree = ""; }; - 0712E727FA0BD0C1005CFE322655ECAF /* sync_config.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_config.cpp; path = Realm/ObjectStore/src/sync/sync_config.cpp; sourceTree = ""; }; - 0749864DB54B08D2F4FEC5B20848E8CE /* RLMUpdateChecker.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMUpdateChecker.mm; path = Realm/RLMUpdateChecker.mm; sourceTree = ""; }; + 0712E727FA0BD0C1005CFE322655ECAF /* sync_config.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = sync_config.cpp; path = Realm/ObjectStore/src/sync/sync_config.cpp; sourceTree = ""; }; + 0749864DB54B08D2F4FEC5B20848E8CE /* RLMUpdateChecker.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMUpdateChecker.mm; path = Realm/RLMUpdateChecker.mm; sourceTree = ""; }; 07E6790A3D1E3164684BAFAF643F949B /* RLMCollection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMCollection.h; path = include/RLMCollection.h; sourceTree = ""; }; - 0850078DD2527CF121657494F188F14B /* collection_change_builder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_change_builder.cpp; path = Realm/ObjectStore/src/impl/collection_change_builder.cpp; sourceTree = ""; }; + 0850078DD2527CF121657494F188F14B /* collection_change_builder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = collection_change_builder.cpp; path = Realm/ObjectStore/src/impl/collection_change_builder.cpp; sourceTree = ""; }; 08D74B2C583EA62F89EC057648DBE5A3 /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; 0959BDEE1293E37DF38F776CB3C4BB26 /* ChameleonFramework-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ChameleonFramework-dummy.m"; sourceTree = ""; }; - 09BB08D7F1E09355F8763CBD15AE482A /* RLMMigration.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMMigration.mm; path = Realm/RLMMigration.mm; sourceTree = ""; }; + 09BB08D7F1E09355F8763CBD15AE482A /* RLMMigration.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMMigration.mm; path = Realm/RLMMigration.mm; sourceTree = ""; }; 0ADB12423AA8940DAAB2C57CF50D618C /* UIView+ChameleonPrivate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+ChameleonPrivate.m"; path = "Pod/Classes/Objective-C/UIView+ChameleonPrivate.m"; sourceTree = ""; }; 0C08AEA77E2EE782FBB518969B921C38 /* librealmcore-ios.a */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = archive.ar; name = "librealmcore-ios.a"; path = "core/librealmcore-ios.a"; sourceTree = ""; }; 0C28171636B6478CBCAC65064B00BA52 /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; 0CB0DA25E9DA1C92615FAD91A904DF57 /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; 0D65ABDA10FB6FAF97F621D9415A1578 /* LinkingObjects.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinkingObjects.swift; path = RealmSwift/LinkingObjects.swift; sourceTree = ""; }; - 0DFBADAC198E4113D3BB18E0483B367B /* RLMResults.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMResults.mm; path = Realm/RLMResults.mm; sourceTree = ""; }; + 0DFBADAC198E4113D3BB18E0483B367B /* RLMResults.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMResults.mm; path = Realm/RLMResults.mm; sourceTree = ""; }; 0E6D8EBEE41AAC8803400533591C2230 /* ThreadSafeReference.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThreadSafeReference.swift; path = RealmSwift/ThreadSafeReference.swift; sourceTree = ""; }; 0FCBC5B3C38D32A7F45D1DA22BD87B65 /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; 115A33401E0A120F11554A919253CB53 /* ImageModifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageModifier.swift; path = Sources/ImageModifier.swift; sourceTree = ""; }; 11C5B97A8303AF21EE7F79D66F93DCC1 /* Realm-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Realm-prefix.pch"; sourceTree = ""; }; 12F9F10AAE236243AA10204AF34BC750 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 133826FF8FF5FE0D9AE70552ACFF1FF9 /* RLMPredicateUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMPredicateUtil.mm; path = Realm/RLMPredicateUtil.mm; sourceTree = ""; }; + 133826FF8FF5FE0D9AE70552ACFF1FF9 /* RLMPredicateUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMPredicateUtil.mm; path = Realm/RLMPredicateUtil.mm; sourceTree = ""; }; 13F70639283568A70007C70A85CC543D /* ImageDownloader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDownloader.swift; path = Sources/ImageDownloader.swift; sourceTree = ""; }; - 1469A50845FA94302A1AC097C19A435F /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PromiseKit.framework; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 149E497A86D0B04D07C4BF26F707A127 /* object_schema.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object_schema.cpp; path = Realm/ObjectStore/src/object_schema.cpp; sourceTree = ""; }; + 1469A50845FA94302A1AC097C19A435F /* PromiseKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PromiseKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 149E497A86D0B04D07C4BF26F707A127 /* object_schema.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = object_schema.cpp; path = Realm/ObjectStore/src/object_schema.cpp; sourceTree = ""; }; 1632ECB7002FCED4B34B430E0F7B14C9 /* UIViewController+Chameleon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+Chameleon.m"; path = "Pod/Classes/Objective-C/UIViewController+Chameleon.m"; sourceTree = ""; }; 167D1E618C7945529947657FF4015F66 /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; 1683F36890A30C35C6CF6C85705834C3 /* Kingfisher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-prefix.pch"; sourceTree = ""; }; 186BBB5BF293E847606EB9ED758B36A9 /* Realm.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Realm.modulemap; sourceTree = ""; }; - 19B6F9814D5C8F98661440AB4B6B37CD /* RLMNetworkClient.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMNetworkClient.mm; path = Realm/RLMNetworkClient.mm; sourceTree = ""; }; + 19B6F9814D5C8F98661440AB4B6B37CD /* RLMNetworkClient.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMNetworkClient.mm; path = Realm/RLMNetworkClient.mm; sourceTree = ""; }; 1A059D53313CF9882AE7A44B58170985 /* Property.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Property.swift; path = RealmSwift/Property.swift; sourceTree = ""; }; - 1B051A1AD2040EAF87DE33B9E5A0A899 /* Pods_pocloud.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_pocloud.framework; path = "Pods-pocloud.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1B051A1AD2040EAF87DE33B9E5A0A899 /* Pods_pocloud.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_pocloud.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1B5E75D734B464E8D0D744DA8E6A45E8 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; - 1C8CDE49478E71D0325DA17BCC70F9F1 /* primitive_list_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = primitive_list_notifier.cpp; path = Realm/ObjectStore/src/impl/primitive_list_notifier.cpp; sourceTree = ""; }; + 1C8CDE49478E71D0325DA17BCC70F9F1 /* primitive_list_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = primitive_list_notifier.cpp; path = Realm/ObjectStore/src/impl/primitive_list_notifier.cpp; sourceTree = ""; }; 1FEDBC380D7CCDDC3CCA561F541E677E /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = ""; }; - 20C174A994D9149F1382445215556BD8 /* RLMRealmConfiguration.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMRealmConfiguration.mm; path = Realm/RLMRealmConfiguration.mm; sourceTree = ""; }; - 2410CDE93220A09C799FCFE762F50744 /* RLMManagedArray.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMManagedArray.mm; path = Realm/RLMManagedArray.mm; sourceTree = ""; }; + 20C174A994D9149F1382445215556BD8 /* RLMRealmConfiguration.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMRealmConfiguration.mm; path = Realm/RLMRealmConfiguration.mm; sourceTree = ""; }; + 2410CDE93220A09C799FCFE762F50744 /* RLMManagedArray.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMManagedArray.mm; path = Realm/RLMManagedArray.mm; sourceTree = ""; }; 27DB3E20C26716CE1AC6AD951B44BB26 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 27F1908F5DC6B99B77DAA63A304ECE54 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; 282ADBD426BF6ABFAC0BE91ED24B6CC0 /* RLMRealm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealm.h; path = include/RLMRealm.h; sourceTree = ""; }; @@ -549,10 +549,10 @@ 29EB1E52DAC6AA5B279E6AB0EE47275B /* RealmSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RealmSwift-umbrella.h"; sourceTree = ""; }; 2A32A5F933056AF0BB4CC991F44AE061 /* Pods-pocloud.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-pocloud.release.xcconfig"; sourceTree = ""; }; 2A508549D773152C50D7A7F0D30E6C6B /* Thenable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Thenable.swift; path = Sources/Thenable.swift; sourceTree = ""; }; - 2C69FE4D4B4A989F68FB329B1A5FFCFF /* RLMSyncPermissionResults.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncPermissionResults.mm; path = Realm/RLMSyncPermissionResults.mm; sourceTree = ""; }; - 2D69C25F4DED73304CFC415FC060EC04 /* results.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = results.cpp; path = Realm/ObjectStore/src/results.cpp; sourceTree = ""; }; - 2D6DB555DF052E561309BE6FF785B7D3 /* RLMArray.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMArray.mm; path = Realm/RLMArray.mm; sourceTree = ""; }; - 2F6BE2672CF829FA8CE19678E9CEAF02 /* RLMClassInfo.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMClassInfo.mm; path = Realm/RLMClassInfo.mm; sourceTree = ""; }; + 2C69FE4D4B4A989F68FB329B1A5FFCFF /* RLMSyncPermissionResults.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncPermissionResults.mm; path = Realm/RLMSyncPermissionResults.mm; sourceTree = ""; }; + 2D69C25F4DED73304CFC415FC060EC04 /* results.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = results.cpp; path = Realm/ObjectStore/src/results.cpp; sourceTree = ""; }; + 2D6DB555DF052E561309BE6FF785B7D3 /* RLMArray.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMArray.mm; path = Realm/RLMArray.mm; sourceTree = ""; }; + 2F6BE2672CF829FA8CE19678E9CEAF02 /* RLMClassInfo.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMClassInfo.mm; path = Realm/RLMClassInfo.mm; sourceTree = ""; }; 2FB23727980C986278B33391A4EDA98D /* RLMSyncSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncSession.h; path = include/RLMSyncSession.h; sourceTree = ""; }; 2FBA2EC0211955D59DF2AD89333A60D1 /* SVProgressHUD.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SVProgressHUD.xcconfig; sourceTree = ""; }; 2FE771299449CB0E7533B4DC5F58E724 /* Results.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Results.swift; path = RealmSwift/Results.swift; sourceTree = ""; }; @@ -560,31 +560,31 @@ 302761828D29BA3715E56776C64D6459 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Image.swift; sourceTree = ""; }; 30BF8581417F8D6FA8F7432B33694097 /* Optional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Optional.swift; path = RealmSwift/Optional.swift; sourceTree = ""; }; 3213EEED9AF86A39E2C3DE4CC578BB10 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; - 332D7415C3936F8158E7020EF9F244A9 /* RLMSyncManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncManager.mm; path = Realm/RLMSyncManager.mm; sourceTree = ""; }; - 332F7C93DBD31C940E50FA2AD7BABC6E /* SwiftChart.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwiftChart.framework; path = SwiftChart.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 332D7415C3936F8158E7020EF9F244A9 /* RLMSyncManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncManager.mm; path = Realm/RLMSyncManager.mm; sourceTree = ""; }; + 332F7C93DBD31C940E50FA2AD7BABC6E /* SwiftChart.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftChart.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 33AAC4FF727892EB5A88D76441EB8034 /* SVProgressAnimatedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVProgressAnimatedView.h; path = SVProgressHUD/SVProgressAnimatedView.h; sourceTree = ""; }; - 3549C30740CE09B411B903EC7025561C /* network_reachability_observer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = network_reachability_observer.cpp; path = Realm/ObjectStore/src/sync/impl/apple/network_reachability_observer.cpp; sourceTree = ""; }; + 3549C30740CE09B411B903EC7025561C /* network_reachability_observer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = network_reachability_observer.cpp; path = Realm/ObjectStore/src/sync/impl/apple/network_reachability_observer.cpp; sourceTree = ""; }; 35F8599E05E36E8DA489400EE58FEF9A /* RLMSyncConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncConfiguration.h; path = include/RLMSyncConfiguration.h; sourceTree = ""; }; 3678A368CA8C673FD74EB418177A567B /* UIView+ChameleonPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+ChameleonPrivate.h"; path = "Pod/Classes/Objective-C/UIView+ChameleonPrivate.h"; sourceTree = ""; }; 36DF68D5C5DC5D2F0592370CF3E091D3 /* Kingfisher.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kingfisher.xcconfig; sourceTree = ""; }; - 380F6390028F12A9814D9C30B925CAC2 /* RLMObjectStore.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObjectStore.mm; path = Realm/RLMObjectStore.mm; sourceTree = ""; }; + 380F6390028F12A9814D9C30B925CAC2 /* RLMObjectStore.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMObjectStore.mm; path = Realm/RLMObjectStore.mm; sourceTree = ""; }; 3897F2C01770DE95C588C28C3241E47E /* UILabel+Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+Chameleon.h"; path = "Pod/Classes/Objective-C/UILabel+Chameleon.h"; sourceTree = ""; }; 38A91E765AB224793D503E47DE25F967 /* UIColor+Chameleon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+Chameleon.m"; path = "Pod/Classes/Objective-C/UIColor+Chameleon.m"; sourceTree = ""; }; 390A84B69E0EA0B4B0235044426ADB80 /* RLMRealm_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealm_Private.h; path = include/RLMRealm_Private.h; sourceTree = ""; }; 390C619DF008E7A770BFAB5B993D881B /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = ""; }; - 395EE7831170F49D37AF9DD819F59595 /* RLMAnalytics.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMAnalytics.mm; path = Realm/RLMAnalytics.mm; sourceTree = ""; }; + 395EE7831170F49D37AF9DD819F59595 /* RLMAnalytics.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMAnalytics.mm; path = Realm/RLMAnalytics.mm; sourceTree = ""; }; 39805068056EB58D370D71A27CD2F678 /* Pods-pocloud-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-pocloud-umbrella.h"; sourceTree = ""; }; 39F891C0D105C3D7B82AC48E01930036 /* ImageProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProcessor.swift; path = Sources/ImageProcessor.swift; sourceTree = ""; }; 3A9097BC27D5E2DB6D3ECFAA0B466B9D /* Indicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Indicator.swift; path = Sources/Indicator.swift; sourceTree = ""; }; 3B1FD331CE6D658E51E9BE21C74A9D03 /* UIButton+Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+Chameleon.h"; path = "Pod/Classes/Objective-C/UIButton+Chameleon.h"; sourceTree = ""; }; 3B239DB3F6FEBC2871B6BDC37B3800A9 /* RLMRealmConfiguration_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealmConfiguration_Private.h; path = include/RLMRealmConfiguration_Private.h; sourceTree = ""; }; - 3B59FBFBFC8197BF796B725D996AE767 /* RLMRealmUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMRealmUtil.mm; path = Realm/RLMRealmUtil.mm; sourceTree = ""; }; + 3B59FBFBFC8197BF796B725D996AE767 /* RLMRealmUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMRealmUtil.mm; path = Realm/RLMRealmUtil.mm; sourceTree = ""; }; 3BE718D082634402330BCE0909C8FA7B /* Realm.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Realm.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3C76B70A4C9BCC49C83A6F549CFE4356 /* RLMSyncUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncUser.h; path = include/RLMSyncUser.h; sourceTree = ""; }; 3D4975867781530628E20A11F465EA59 /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; - 3DD5FB6C72EDD9F0B7AC128432922FFE /* index_set.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = index_set.cpp; path = Realm/ObjectStore/src/index_set.cpp; sourceTree = ""; }; + 3DD5FB6C72EDD9F0B7AC128432922FFE /* index_set.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = index_set.cpp; path = Realm/ObjectStore/src/index_set.cpp; sourceTree = ""; }; 3EA602B674420FB05E049B058851313F /* SVRadialGradientLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVRadialGradientLayer.h; path = SVProgressHUD/SVRadialGradientLayer.h; sourceTree = ""; }; - 3ECAC0844395303E54DBEAB48691131A /* ChameleonFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ChameleonFramework.framework; path = ChameleonFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3ECAC0844395303E54DBEAB48691131A /* ChameleonFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ChameleonFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3EF09A8B74C85C9AFABDEDBD6238F0B7 /* RLMObjectBase_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectBase_Private.h; path = include/RLMObjectBase_Private.h; sourceTree = ""; }; 3F45EA5868823D57F7FFED4605299E54 /* RLMSwiftSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMSwiftSupport.m; path = Realm/RLMSwiftSupport.m; sourceTree = ""; }; 4026515E0771C12CAC0E848BBB63A2CF /* NSArray+Chameleon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Chameleon.m"; path = "Pod/Classes/Objective-C/NSArray+Chameleon.m"; sourceTree = ""; }; @@ -592,11 +592,11 @@ 409A0399538CBF6F3721F84A24A03952 /* RLMSchema.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSchema.h; path = include/RLMSchema.h; sourceTree = ""; }; 40A162E18F4431A9E2870119C629D7C2 /* RealmSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RealmSwift.xcconfig; sourceTree = ""; }; 40E5049E646905E9AE4E0F2101F206D8 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; - 41158C77FE22B096020E449E4DA92CBB /* RLMSyncSession.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncSession.mm; path = Realm/RLMSyncSession.mm; sourceTree = ""; }; - 42272772E19D27916CD170701A1B18BD /* RLMSyncConfiguration.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncConfiguration.mm; path = Realm/RLMSyncConfiguration.mm; sourceTree = ""; }; + 41158C77FE22B096020E449E4DA92CBB /* RLMSyncSession.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncSession.mm; path = Realm/RLMSyncSession.mm; sourceTree = ""; }; + 42272772E19D27916CD170701A1B18BD /* RLMSyncConfiguration.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncConfiguration.mm; path = Realm/RLMSyncConfiguration.mm; sourceTree = ""; }; 430E903FD52B93897ABB8515CD13B8B6 /* RLMListBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMListBase.h; path = include/RLMListBase.h; sourceTree = ""; }; 4348319519D243801CC6340DAB87B5DB /* SVProgressAnimatedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVProgressAnimatedView.m; path = SVProgressHUD/SVProgressAnimatedView.m; sourceTree = ""; }; - 43D16CE795ACD3F14AEB1903C18AD413 /* RLMSyncUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncUtil.mm; path = Realm/RLMSyncUtil.mm; sourceTree = ""; }; + 43D16CE795ACD3F14AEB1903C18AD413 /* RLMSyncUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncUtil.mm; path = Realm/RLMSyncUtil.mm; sourceTree = ""; }; 44D6405B149A6D18AE16727425E41474 /* Alamofire+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Alamofire+Promise.swift"; path = "Extensions/Alamofire/Sources/Alamofire+Promise.swift"; sourceTree = ""; }; 44DE4DEFAF0B71D0962C7C82D578B0A7 /* 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; }; 450FA9039C576DF6FA9F9E12DD4C3FEF /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; @@ -611,13 +611,13 @@ 4EFC3410355C9EEA94248BDE754DC978 /* KingfisherManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherManager.swift; path = Sources/KingfisherManager.swift; sourceTree = ""; }; 4F3DAD915963159344F4BBDBBF1F0F96 /* UIAppearance+Swift.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIAppearance+Swift.h"; path = "Pod/Classes/Objective-C/UIAppearance+Swift.h"; sourceTree = ""; }; 4FDCC000ECBCDDBF14532533EB299B4A /* Pods-pocloud-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-pocloud-acknowledgements.markdown"; sourceTree = ""; }; - 503A96E996C98B2FECDAD7AD4FF0CC25 /* RLMRealm.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMRealm.mm; path = Realm/RLMRealm.mm; sourceTree = ""; }; + 503A96E996C98B2FECDAD7AD4FF0CC25 /* RLMRealm.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMRealm.mm; path = Realm/RLMRealm.mm; sourceTree = ""; }; 50B057067CD3D377D62F03A87237D7D2 /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; 5286C75A0CB7B7AAB14AA8069F68005A /* Sync.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sync.swift; path = RealmSwift/Sync.swift; sourceTree = ""; }; 53A222CFEE05DA8169D1438B3C83EC9C /* SVProgressHUD.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = SVProgressHUD.bundle; path = SVProgressHUD/SVProgressHUD.bundle; sourceTree = ""; }; 5402AF9328A911176F8326FA84222F4D /* RLMSyncCredentials.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMSyncCredentials.m; path = Realm/RLMSyncCredentials.m; sourceTree = ""; }; 55BA3B5637937797089F9EAC9C8C870F /* RealmConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RealmConfiguration.swift; path = RealmSwift/RealmConfiguration.swift; sourceTree = ""; }; - 55DD0F1A355F1B69276E60F293928D31 /* placeholder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = placeholder.cpp; path = Realm/ObjectStore/src/placeholder.cpp; sourceTree = ""; }; + 55DD0F1A355F1B69276E60F293928D31 /* placeholder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = placeholder.cpp; path = Realm/ObjectStore/src/placeholder.cpp; sourceTree = ""; }; 561AFA0DCE0629E26D5FFB38B83388E4 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; 57B6DF119EF2A8AC5070E5E6C8352A03 /* Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Chameleon.h; path = "Pod/Classes/Objective-C/Chameleon.h"; sourceTree = ""; }; 57C6D5D25D90EADCEDE4BBE2732A35A0 /* SwiftyJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftyJSON.modulemap; sourceTree = ""; }; @@ -625,37 +625,37 @@ 58E2B8F8993302603FD006E07C2CFC72 /* Kingfisher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-umbrella.h"; sourceTree = ""; }; 5911D0717F4D9EBB132AC3842B3CFB34 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 5968E3F1ADB1F6151D68974774557F16 /* NSError+RLMSync.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError+RLMSync.m"; path = "Realm/NSError+RLMSync.m"; sourceTree = ""; }; - 5A07A8A8028AE1B33EAAA7979DB6B847 /* list_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = list_notifier.cpp; path = Realm/ObjectStore/src/impl/list_notifier.cpp; sourceTree = ""; }; + 5A07A8A8028AE1B33EAAA7979DB6B847 /* list_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = list_notifier.cpp; path = Realm/ObjectStore/src/impl/list_notifier.cpp; sourceTree = ""; }; 5AB2A81FB0FDFC0048FBB8A05BAB2447 /* Kingfisher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Kingfisher.modulemap; sourceTree = ""; }; 5AC75EF75E9BA81C6A4C393D8867A083 /* RLMOptionalBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMOptionalBase.h; path = include/RLMOptionalBase.h; sourceTree = ""; }; 5AE42C969A99D38B4F7FBE25B00A962F /* RLMRealm_Dynamic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealm_Dynamic.h; path = include/RLMRealm_Dynamic.h; sourceTree = ""; }; - 5B951F4057A699F027DAED0A10480665 /* RLMOptionalBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMOptionalBase.mm; path = Realm/RLMOptionalBase.mm; sourceTree = ""; }; + 5B951F4057A699F027DAED0A10480665 /* RLMOptionalBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMOptionalBase.mm; path = Realm/RLMOptionalBase.mm; sourceTree = ""; }; 5C7DB055A9FF859C8D9B207B0EBEA67E /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; - 5DECE4A96DC82F1788D2496E380388BD /* thread_safe_reference.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = thread_safe_reference.cpp; path = Realm/ObjectStore/src/thread_safe_reference.cpp; sourceTree = ""; }; + 5DECE4A96DC82F1788D2496E380388BD /* thread_safe_reference.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = thread_safe_reference.cpp; path = Realm/ObjectStore/src/thread_safe_reference.cpp; sourceTree = ""; }; 5E0854B11E127B790CB4C391D34D531A /* SVProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SVProgressHUD.modulemap; sourceTree = ""; }; 5E1324D4858E13AEB922B35546D2EF41 /* ChameleonConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ChameleonConstants.m; path = "Pod/Classes/Objective-C/ChameleonConstants.m"; sourceTree = ""; }; 5E59D14AB66092E668FA3724120439E3 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; - 5E8802C37AC6734C5B00455CC46F0A68 /* RLMObjectSchema.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObjectSchema.mm; path = Realm/RLMObjectSchema.mm; sourceTree = ""; }; + 5E8802C37AC6734C5B00455CC46F0A68 /* RLMObjectSchema.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMObjectSchema.mm; path = Realm/RLMObjectSchema.mm; sourceTree = ""; }; 5EDCB4D713194B7985A3F1A40A6CAF59 /* UIButton+Chameleon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+Chameleon.m"; path = "Pod/Classes/Objective-C/UIButton+Chameleon.m"; sourceTree = ""; }; - 5F27F3A93D04D26D8BE8E6A4CDCE3CAC /* RLMProperty.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMProperty.mm; path = Realm/RLMProperty.mm; sourceTree = ""; }; + 5F27F3A93D04D26D8BE8E6A4CDCE3CAC /* RLMProperty.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMProperty.mm; path = Realm/RLMProperty.mm; sourceTree = ""; }; 5FA917B1D37C02352E7C1D9E0E599FA5 /* UINavigationController+Chameleon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UINavigationController+Chameleon.m"; path = "Pod/Classes/Objective-C/UINavigationController+Chameleon.m"; sourceTree = ""; }; 5FCCA2362239AA24556A9225003BC1C2 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; - 615EBDA4FE1C9FF6970F3747D5BB76BB /* SwiftyJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwiftyJSON.framework; path = SwiftyJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 615EBDA4FE1C9FF6970F3747D5BB76BB /* SwiftyJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftyJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 62ED7DCA37B4A12513513DCA99935151 /* String+MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+MD5.swift"; path = "Sources/String+MD5.swift"; sourceTree = ""; }; 6603939CC5A8D3E59297D5C771964301 /* RLMThreadSafeReference.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMThreadSafeReference.h; path = include/RLMThreadSafeReference.h; sourceTree = ""; }; 6677B1E6745CD047E622914F3945E673 /* SwiftChart-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftChart-dummy.m"; sourceTree = ""; }; 66E9A978132CA9F57F2D4CA537E462AE /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; 66F41B50D8310E025A7BBEE9B370D185 /* ObjectSchema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObjectSchema.swift; path = RealmSwift/ObjectSchema.swift; sourceTree = ""; }; - 679C7C7587D40218B193B04091EF22BB /* object.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object.cpp; path = Realm/ObjectStore/src/object.cpp; sourceTree = ""; }; + 679C7C7587D40218B193B04091EF22BB /* object.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = object.cpp; path = Realm/ObjectStore/src/object.cpp; sourceTree = ""; }; 67F991C8B8367174AFF53BF7D8D6F1EE /* SwiftChart.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftChart.modulemap; sourceTree = ""; }; 69E32A2E33DC69D7CAF4DCC47F49ADB0 /* Aliases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Aliases.swift; path = RealmSwift/Aliases.swift; sourceTree = ""; }; - 6A098E23B03FD37283AE835A4243531B /* work_queue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = work_queue.cpp; path = Realm/ObjectStore/src/sync/impl/work_queue.cpp; sourceTree = ""; }; - 6BBE938FF7CE8F598642E2163782F1E8 /* RLMSyncSubscription.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncSubscription.mm; path = Realm/RLMSyncSubscription.mm; sourceTree = ""; }; + 6A098E23B03FD37283AE835A4243531B /* work_queue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = work_queue.cpp; path = Realm/ObjectStore/src/sync/impl/work_queue.cpp; sourceTree = ""; }; + 6BBE938FF7CE8F598642E2163782F1E8 /* RLMSyncSubscription.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncSubscription.mm; path = Realm/RLMSyncSubscription.mm; sourceTree = ""; }; 6BCC3AC3975CFE44021DC84EC0D0F57E /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = ""; }; - 6C329AB32D0C2C0E8F3300D62652EA29 /* RLMCollection.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMCollection.mm; path = Realm/RLMCollection.mm; sourceTree = ""; }; + 6C329AB32D0C2C0E8F3300D62652EA29 /* RLMCollection.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMCollection.mm; path = Realm/RLMCollection.mm; sourceTree = ""; }; 6C88151378845D023AF67DFB3479F7B9 /* Object.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Object.swift; path = RealmSwift/Object.swift; sourceTree = ""; }; 6D398BF7F0C68524EEBB8EC767B71417 /* SwiftVersion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftVersion.swift; path = RealmSwift/SwiftVersion.swift; sourceTree = ""; }; - 6DCAE60115007E4EDEABA45D6B13CBF1 /* RLMRealmConfiguration+Sync.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = "RLMRealmConfiguration+Sync.mm"; path = "Realm/RLMRealmConfiguration+Sync.mm"; sourceTree = ""; }; + 6DCAE60115007E4EDEABA45D6B13CBF1 /* RLMRealmConfiguration+Sync.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = "RLMRealmConfiguration+Sync.mm"; path = "Realm/RLMRealmConfiguration+Sync.mm"; sourceTree = ""; }; 6E3C7CBB281D7EFA8906D97D0D74E98F /* NSError+RLMSync.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError+RLMSync.h"; path = "include/NSError+RLMSync.h"; sourceTree = ""; }; 6EE92BDBC49085DB5EDCF7224595B3B6 /* NSArray+Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Chameleon.h"; path = "Pod/Classes/Objective-C/NSArray+Chameleon.h"; sourceTree = ""; }; 6F5C53EA0A01E65DFB980B5D08BD34B0 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; @@ -663,23 +663,23 @@ 700BDD7CA805B518ACE9EA9171A5EDED /* List.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = List.swift; path = RealmSwift/List.swift; sourceTree = ""; }; 70D255BBF18A3D18FC6BDFF3AAB13DD6 /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; 742D94437DE4E658881F39F5A0F00ED0 /* UIAppearance+Swift.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIAppearance+Swift.m"; path = "Pod/Classes/Objective-C/UIAppearance+Swift.m"; sourceTree = ""; }; - 74474A925762D7E3652C299BF5E17758 /* sync_permission.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_permission.cpp; path = Realm/ObjectStore/src/sync/sync_permission.cpp; sourceTree = ""; }; - 75CFB0970AEB893D68874B9EB5B7DDF8 /* transact_log_handler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = transact_log_handler.cpp; path = Realm/ObjectStore/src/impl/transact_log_handler.cpp; sourceTree = ""; }; + 74474A925762D7E3652C299BF5E17758 /* sync_permission.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = sync_permission.cpp; path = Realm/ObjectStore/src/sync/sync_permission.cpp; sourceTree = ""; }; + 75CFB0970AEB893D68874B9EB5B7DDF8 /* transact_log_handler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = transact_log_handler.cpp; path = Realm/ObjectStore/src/impl/transact_log_handler.cpp; sourceTree = ""; }; 75ED9E29508835F901F7BADBF7FA83B0 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; - 76A24C263F2C65318ED5356308F9EB92 /* partial_sync.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = partial_sync.cpp; path = Realm/ObjectStore/src/sync/partial_sync.cpp; sourceTree = ""; }; + 76A24C263F2C65318ED5356308F9EB92 /* partial_sync.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = partial_sync.cpp; path = Realm/ObjectStore/src/sync/partial_sync.cpp; sourceTree = ""; }; 77B5BC603C2749DE8E87B54B8DC083A4 /* Util.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Util.swift; path = RealmSwift/Util.swift; sourceTree = ""; }; - 77EEC43ED2E8ED0420AE5DC19CF79C92 /* RLMRealm+Sync.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = "RLMRealm+Sync.mm"; path = "Realm/RLMRealm+Sync.mm"; sourceTree = ""; }; - 789902666C34CFD7875524CC17F0F84C /* RLMUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMUtil.mm; path = Realm/RLMUtil.mm; sourceTree = ""; }; + 77EEC43ED2E8ED0420AE5DC19CF79C92 /* RLMRealm+Sync.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = "RLMRealm+Sync.mm"; path = "Realm/RLMRealm+Sync.mm"; sourceTree = ""; }; + 789902666C34CFD7875524CC17F0F84C /* RLMUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMUtil.mm; path = Realm/RLMUtil.mm; sourceTree = ""; }; 7904EA655451E47F1B178CD6080E46B3 /* Pods-pocloud.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-pocloud.debug.xcconfig"; sourceTree = ""; }; 7B694E64D2F0157A60AE632464FD13F2 /* ImagePrefetcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePrefetcher.swift; path = Sources/ImagePrefetcher.swift; sourceTree = ""; }; 7B782A520D3CCEFE5491F8C4DF84B547 /* ChameleonConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ChameleonConstants.h; path = "Pod/Classes/Objective-C/ChameleonConstants.h"; sourceTree = ""; }; 7BCD9D98544104A361E93BA03EDE97FB /* RLMAccessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMAccessor.h; path = include/RLMAccessor.h; sourceTree = ""; }; 7D0132EFFBA0D5F54CF346D6CC6D98CD /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; 7DB3D213AAE67209F9A9D53E1E25D6E7 /* RLMSyncUtil_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncUtil_Private.h; path = include/RLMSyncUtil_Private.h; sourceTree = ""; }; - 7DDC855EDB6F0CDABC40595E645987EF /* RLMThreadSafeReference.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMThreadSafeReference.mm; path = Realm/RLMThreadSafeReference.mm; sourceTree = ""; }; + 7DDC855EDB6F0CDABC40595E645987EF /* RLMThreadSafeReference.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMThreadSafeReference.mm; path = Realm/RLMThreadSafeReference.mm; sourceTree = ""; }; 7EB8C25BC9A862D2A4433D94192A3441 /* RLMObjectBase_Dynamic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectBase_Dynamic.h; path = include/RLMObjectBase_Dynamic.h; sourceTree = ""; }; 7EDAEB2432ADCB64A6F0DA876845C11E /* RLMConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMConstants.h; path = include/RLMConstants.h; sourceTree = ""; }; - 7F80AF0E7104F15B7086BE4CDC817DBC /* realm_coordinator.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = realm_coordinator.cpp; path = Realm/ObjectStore/src/impl/realm_coordinator.cpp; sourceTree = ""; }; + 7F80AF0E7104F15B7086BE4CDC817DBC /* realm_coordinator.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = realm_coordinator.cpp; path = Realm/ObjectStore/src/impl/realm_coordinator.cpp; sourceTree = ""; }; 7FB017EC13054E1B53F9CA04B114CC8B /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Filter.swift; sourceTree = ""; }; 816D222060828A34C1E58D402F34FAE8 /* SwiftyJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyJSON-dummy.m"; sourceTree = ""; }; 83F2F7DBFD5DE0AAFDF63A26784B13FE /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -695,62 +695,62 @@ 8B543979552007AA1891F26D83762863 /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; 8BC73ED419B1086C4CE85240BBB98184 /* SwiftChart-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftChart-prefix.pch"; sourceTree = ""; }; 8D24C0044A30640775D9F8AC3E7AA60C /* ThreadHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThreadHelper.swift; path = Sources/ThreadHelper.swift; sourceTree = ""; }; - 8D43205AB4A71F48FCECD11914F4CAF4 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D43205AB4A71F48FCECD11914F4CAF4 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 8F9EA260639ACC8A3018A686F68A0CAE /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; 911ED0B37F892FF5B2F9A5ABE00F4AB6 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; 9219FD5E8223E62D5964FCE2990ADC6B /* FormatIndicatedCacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormatIndicatedCacheSerializer.swift; path = Sources/FormatIndicatedCacheSerializer.swift; sourceTree = ""; }; - 9230A72F1AEC1BADDCC7186EB25BE0C7 /* RLMObject.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObject.mm; path = Realm/RLMObject.mm; sourceTree = ""; }; - 92B8EF7ABDC366751FCC007B516BBBA0 /* sync_session.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_session.cpp; path = Realm/ObjectStore/src/sync/sync_session.cpp; sourceTree = ""; }; + 9230A72F1AEC1BADDCC7186EB25BE0C7 /* RLMObject.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMObject.mm; path = Realm/RLMObject.mm; sourceTree = ""; }; + 92B8EF7ABDC366751FCC007B516BBBA0 /* sync_session.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = sync_session.cpp; path = Realm/ObjectStore/src/sync/sync_session.cpp; sourceTree = ""; }; 936CD07388EDC2494410B80CC4717FF1 /* SVProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVProgressHUD.h; path = SVProgressHUD/SVProgressHUD.h; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 93CB5431897F122335922F59F3C2B440 /* RLMObjectBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObjectBase.mm; path = Realm/RLMObjectBase.mm; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 93CB5431897F122335922F59F3C2B440 /* RLMObjectBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMObjectBase.mm; path = Realm/RLMObjectBase.mm; sourceTree = ""; }; 9468ECB6C02355492984982A77714C41 /* RLMObjectBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectBase.h; path = include/RLMObjectBase.h; sourceTree = ""; }; - 94BC712E6269E4A7B550E839B34FED84 /* list.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = list.cpp; path = Realm/ObjectStore/src/list.cpp; sourceTree = ""; }; - 94E08983C35624D67250E6A2A7176A54 /* sync_user.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_user.cpp; path = Realm/ObjectStore/src/sync/sync_user.cpp; sourceTree = ""; }; + 94BC712E6269E4A7B550E839B34FED84 /* list.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = list.cpp; path = Realm/ObjectStore/src/list.cpp; sourceTree = ""; }; + 94E08983C35624D67250E6A2A7176A54 /* sync_user.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = sync_user.cpp; path = Realm/ObjectStore/src/sync/sync_user.cpp; sourceTree = ""; }; 959493D71FD0A4BA2E655D786ACFCD6B /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; 960A4DBBFF871779B81F9E045539A9B8 /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = ""; }; 96C3869CF6A43B7BD1F899A5081430AD /* CacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheSerializer.swift; path = Sources/CacheSerializer.swift; sourceTree = ""; }; - 96CF6794C81EE2A4C752C5DC83A892FD /* shared_realm.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = shared_realm.cpp; path = Realm/ObjectStore/src/shared_realm.cpp; sourceTree = ""; }; + 96CF6794C81EE2A4C752C5DC83A892FD /* shared_realm.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = shared_realm.cpp; path = Realm/ObjectStore/src/shared_realm.cpp; sourceTree = ""; }; 97A85459BEEB22063FD286FF84A995C4 /* RLMConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMConstants.m; path = Realm/RLMConstants.m; sourceTree = ""; }; 98BE3F0DB94502FAD3F69D53423B52D2 /* RLMSyncManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncManager.h; path = include/RLMSyncManager.h; sourceTree = ""; }; 993980085140CB356A42A3D861DC0CD1 /* Chart.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Chart.swift; path = Source/Chart.swift; sourceTree = ""; }; 9AAE7C6607187E86982DDA9EDFC0DAFC /* UIImage+ChameleonPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ChameleonPrivate.h"; path = "Pod/Classes/Objective-C/UIImage+ChameleonPrivate.h"; sourceTree = ""; }; 9AE123E69DA163431F9826FCDDFE0622 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 9B50A11F03F5E6C84500E56E4B6849DE /* Pods-pocloud-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-pocloud-frameworks.sh"; sourceTree = ""; }; - 9BEB907E124F77BA9A38B31E88C029A4 /* RLMQueryUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMQueryUtil.mm; path = Realm/RLMQueryUtil.mm; sourceTree = ""; }; + 9BEB907E124F77BA9A38B31E88C029A4 /* RLMQueryUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMQueryUtil.mm; path = Realm/RLMQueryUtil.mm; sourceTree = ""; }; 9C6F33FE3CF07041C28098876552C5FA /* RLMSyncConfiguration_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncConfiguration_Private.h; path = include/RLMSyncConfiguration_Private.h; sourceTree = ""; }; - 9CF1DD8BC8ED7A3E4721B3ACAE9A76D3 /* RLMAccessor.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMAccessor.mm; path = Realm/RLMAccessor.mm; sourceTree = ""; }; + 9CF1DD8BC8ED7A3E4721B3ACAE9A76D3 /* RLMAccessor.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMAccessor.mm; path = Realm/RLMAccessor.mm; sourceTree = ""; }; 9D029DC1A613CFDFD9713293C0629203 /* AnimatedImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnimatedImageView.swift; path = Sources/AnimatedImageView.swift; sourceTree = ""; }; 9D3CD9729DF02D7F14CBCD33D2D56A87 /* SVProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVProgressHUD.m; path = SVProgressHUD/SVProgressHUD.m; sourceTree = ""; }; 9E20F792726DCF3C9B39760070796596 /* RLMMigration_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMMigration_Private.h; path = include/RLMMigration_Private.h; sourceTree = ""; }; A0388843F876AD8146F5BC509D916001 /* ChameleonMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ChameleonMacros.h; path = "Pod/Classes/Objective-C/ChameleonMacros.h"; sourceTree = ""; }; - A1DF647328528C03448741375AE3993B /* weak_realm_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = weak_realm_notifier.cpp; path = Realm/ObjectStore/src/impl/weak_realm_notifier.cpp; sourceTree = ""; }; - A3610FFDE4173AEAFBC020E03D6F7A7B /* Kingfisher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Kingfisher.framework; path = Kingfisher.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A437EDD918468B6F6921037E78334545 /* RLMListBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMListBase.mm; path = Realm/RLMListBase.mm; sourceTree = ""; }; + A1DF647328528C03448741375AE3993B /* weak_realm_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = weak_realm_notifier.cpp; path = Realm/ObjectStore/src/impl/weak_realm_notifier.cpp; sourceTree = ""; }; + A3610FFDE4173AEAFBC020E03D6F7A7B /* Kingfisher.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Kingfisher.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A437EDD918468B6F6921037E78334545 /* RLMListBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMListBase.mm; path = Realm/RLMListBase.mm; sourceTree = ""; }; A46966049B213458C4F1837F7EAF5428 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; A479B3FFCD869510C99518C581F3CC3E /* SwiftChart.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftChart.xcconfig; sourceTree = ""; }; - A4D9C83C2F04C2EA10710B761189AB75 /* object_store.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object_store.cpp; path = Realm/ObjectStore/src/object_store.cpp; sourceTree = ""; }; + A4D9C83C2F04C2EA10710B761189AB75 /* object_store.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = object_store.cpp; path = Realm/ObjectStore/src/object_store.cpp; sourceTree = ""; }; A5801F6E0E6189B6372DFC83650072DC /* Migration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Migration.swift; path = RealmSwift/Migration.swift; sourceTree = ""; }; A84FE5497FF8CF4F39C206333259809A /* Pods-pocloud.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-pocloud.modulemap"; sourceTree = ""; }; A8793A3FE332B791A8B3994B323FCBEE /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; A8840851AFFC0E461B5B935C155CE611 /* Pods-pocloud-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-pocloud-acknowledgements.plist"; sourceTree = ""; }; A8A5C31425BBA75A7B674379EC000AA8 /* Pods-pocloud-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-pocloud-dummy.m"; sourceTree = ""; }; - A9B8919AB39D17A578CED457944217FF /* collection_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_notifier.cpp; path = Realm/ObjectStore/src/impl/collection_notifier.cpp; sourceTree = ""; }; + A9B8919AB39D17A578CED457944217FF /* collection_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = collection_notifier.cpp; path = Realm/ObjectStore/src/impl/collection_notifier.cpp; sourceTree = ""; }; A9FFFD475E5F246FE9C10E3AD59F2DF9 /* ChameleonFramework-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ChameleonFramework-umbrella.h"; sourceTree = ""; }; - AA5A0770AD556EFD045A61522EF433DB /* object_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object_notifier.cpp; path = Realm/ObjectStore/src/impl/object_notifier.cpp; sourceTree = ""; }; + AA5A0770AD556EFD045A61522EF433DB /* object_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = object_notifier.cpp; path = Realm/ObjectStore/src/impl/object_notifier.cpp; sourceTree = ""; }; AAE76F935413B0FAF7D92A096C9E7D52 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - ABBEE751FEE99D1B3841B73CAAA4EF2C /* RLMObservation.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObservation.mm; path = Realm/RLMObservation.mm; sourceTree = ""; }; + ABBEE751FEE99D1B3841B73CAAA4EF2C /* RLMObservation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMObservation.mm; path = Realm/RLMObservation.mm; sourceTree = ""; }; AC1C57636899483A36A0683AF4DFA245 /* SwiftyJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-umbrella.h"; sourceTree = ""; }; AC779ECCB944E8ADD37CE1D3304804B9 /* Kingfisher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Kingfisher-dummy.m"; sourceTree = ""; }; AD1E07936EAB4A15168DA68310A4DF7B /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; - ADDD57D0E4D5BBCBD1CEDFAF9506F54E /* RLMSyncUser.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncUser.mm; path = Realm/RLMSyncUser.mm; sourceTree = ""; }; + ADDD57D0E4D5BBCBD1CEDFAF9506F54E /* RLMSyncUser.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncUser.mm; path = Realm/RLMSyncUser.mm; sourceTree = ""; }; AE88DC5DB31B209D9FEDA68534239E38 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; AF3202BCDE9338D96382AAFC69557E0C /* RealmSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RealmSwift-prefix.pch"; sourceTree = ""; }; B04A3B8874B83F4558B31ADCD4D48784 /* RLMSyncCredentials.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncCredentials.h; path = include/RLMSyncCredentials.h; sourceTree = ""; }; B1F47AFF559BBA2345ACDF2A2ECC38C1 /* Realm.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Realm.swift; path = RealmSwift/Realm.swift; sourceTree = ""; }; B269550DDC991F08F069BBD57CFF1CF7 /* SVProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SVProgressHUD-dummy.m"; sourceTree = ""; }; B27560F181AA3E49CA33193B3FBAA57B /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B2C2B4488829465EC2AA197D6E1581B4 /* collection_notifications.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_notifications.cpp; path = Realm/ObjectStore/src/collection_notifications.cpp; sourceTree = ""; }; + B2C2B4488829465EC2AA197D6E1581B4 /* collection_notifications.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = collection_notifications.cpp; path = Realm/ObjectStore/src/collection_notifications.cpp; sourceTree = ""; }; B2C5BC8F9D3F74D15191F47FB7B5BADD /* ImageView+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageView+Kingfisher.swift"; path = "Sources/ImageView+Kingfisher.swift"; sourceTree = ""; }; B33C26C5E25552E6B15683259CA5E7DA /* SwiftChart-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftChart-umbrella.h"; sourceTree = ""; }; B578193AE36AEC6E5A4DD7ABA452296C /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; @@ -758,7 +758,7 @@ B6694706AE2206C12B59D754417F369C /* SVIndefiniteAnimatedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVIndefiniteAnimatedView.h; path = SVProgressHUD/SVIndefiniteAnimatedView.h; sourceTree = ""; }; B792B5F4E88AF38723BE305EE68159CB /* Guarantee.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Guarantee.swift; path = Sources/Guarantee.swift; sourceTree = ""; }; B8643B17061D5E3E247AD19C7FEB0A9A /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; - BE33B99930418B82C0DA55AD1B1DABB0 /* binding_callback_thread_observer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = binding_callback_thread_observer.cpp; path = Realm/ObjectStore/src/binding_callback_thread_observer.cpp; sourceTree = ""; }; + BE33B99930418B82C0DA55AD1B1DABB0 /* binding_callback_thread_observer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = binding_callback_thread_observer.cpp; path = Realm/ObjectStore/src/binding_callback_thread_observer.cpp; sourceTree = ""; }; BE8729FE5BD1DB20C41AB92A9AD2E0C2 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; BF9BEE78AB64896F7786F842E14C3D75 /* Schema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Schema.swift; path = RealmSwift/Schema.swift; sourceTree = ""; }; C18FDC08C1866ACB755BC6456D9F9CF7 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; @@ -766,7 +766,7 @@ C2BDEFF55386C131D4B8AFF30946D6E7 /* Kingfisher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Kingfisher.h; path = Sources/Kingfisher.h; sourceTree = ""; }; C3A19D76E413374358C330C6364B473F /* RLMSyncSubscription.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncSubscription.h; path = include/RLMSyncSubscription.h; sourceTree = ""; }; C3C51B95FB2EFCB9C1A1B29C49D780A0 /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; - C518CC0FB273D5CDAD64A638F6AF8789 /* system_configuration.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = system_configuration.cpp; path = Realm/ObjectStore/src/sync/impl/apple/system_configuration.cpp; sourceTree = ""; }; + C518CC0FB273D5CDAD64A638F6AF8789 /* system_configuration.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = system_configuration.cpp; path = Realm/ObjectStore/src/sync/impl/apple/system_configuration.cpp; sourceTree = ""; }; C94AA744EFB890DE04E7980909D8DF33 /* RLMSyncManager_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncManager_Private.h; path = include/RLMSyncManager_Private.h; sourceTree = ""; }; CA149F823BC1CD745AB9E0534C694326 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CA59A1769701148D1CA2A062B1111F8D /* UIViewController+Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+Chameleon.h"; path = "Pod/Classes/Objective-C/UIViewController+Chameleon.h"; sourceTree = ""; }; @@ -784,26 +784,26 @@ D86DE146514060FB03A8EB7875751CB4 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; D8927FDE96718D53059A955F2EEDDE40 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; D90E8890249BDC47B817968A9A80B81F /* UILabel+Chameleon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+Chameleon.m"; path = "Pod/Classes/Objective-C/UILabel+Chameleon.m"; sourceTree = ""; }; - D931BEE4427488C33D747F3923E0ABE2 /* RLMSchema.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSchema.mm; path = Realm/RLMSchema.mm; sourceTree = ""; }; - D9F9DA0637D9CF2A4AF268F202EA6398 /* keychain_helper.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = keychain_helper.cpp; path = Realm/ObjectStore/src/impl/apple/keychain_helper.cpp; sourceTree = ""; }; + D931BEE4427488C33D747F3923E0ABE2 /* RLMSchema.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSchema.mm; path = Realm/RLMSchema.mm; sourceTree = ""; }; + D9F9DA0637D9CF2A4AF268F202EA6398 /* keychain_helper.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = keychain_helper.cpp; path = Realm/ObjectStore/src/impl/apple/keychain_helper.cpp; sourceTree = ""; }; DD0EDB245A288DFDD27D5D49211DB642 /* RLMSyncPermission.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncPermission.h; path = include/RLMSyncPermission.h; sourceTree = ""; }; DD44D6E44FF60A041CB2B80D2F3D74EF /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; DE49909CAAF22EFDE000F82BCBAB5899 /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = ""; }; DEA70D31C0AF1A4B71D45FDC83A3CCC6 /* ChartSeries.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartSeries.swift; path = Source/ChartSeries.swift; sourceTree = ""; }; DEFBCB31C513282CB43F15B7BAB3D159 /* Placeholder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Placeholder.swift; path = Sources/Placeholder.swift; sourceTree = ""; }; E00EE42819656097BC0FB4054C002156 /* SwiftyJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-prefix.pch"; sourceTree = ""; }; - E0196365D91766D5A182C86761244B62 /* RealmSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = RealmSwift.framework; path = RealmSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E0196365D91766D5A182C86761244B62 /* RealmSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RealmSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; E15BF07935FB7810EB495127E7CDF1ED /* ChameleonFramework.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ChameleonFramework.xcconfig; sourceTree = ""; }; - E277506BC6D46DC785F6FEFDDBC904B6 /* SVProgressHUD.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SVProgressHUD.framework; path = SVProgressHUD.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E277506BC6D46DC785F6FEFDDBC904B6 /* SVProgressHUD.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SVProgressHUD.framework; sourceTree = BUILT_PRODUCTS_DIR; }; E368D0F9301094C0876677C1EDA28AAF /* RLMResults_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMResults_Private.h; path = include/RLMResults_Private.h; sourceTree = ""; }; E4FF2B9FEDC88A76BFCF771EC7CB4D2B /* ImageTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageTransition.swift; path = Sources/ImageTransition.swift; sourceTree = ""; }; E53A56088ACEAE7BF35D1B69201BEB95 /* Realm-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Realm-dummy.m"; sourceTree = ""; }; - E572E840A2B6EB3A72C5E3A1A2F8E2B7 /* sync_metadata.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_metadata.cpp; path = Realm/ObjectStore/src/sync/impl/sync_metadata.cpp; sourceTree = ""; }; - E5ABB25E379859D47265F2097C96DB0C /* uuid.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = uuid.cpp; path = Realm/ObjectStore/src/util/uuid.cpp; sourceTree = ""; }; - E613A12D65DCDDFB89BF512E54016D0E /* sync_file.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_file.cpp; path = Realm/ObjectStore/src/sync/impl/sync_file.cpp; sourceTree = ""; }; - E65BFFCF67FA024A57F6810BDB3EF0AF /* RLMSyncSessionRefreshHandle.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncSessionRefreshHandle.mm; path = Realm/RLMSyncSessionRefreshHandle.mm; sourceTree = ""; }; + E572E840A2B6EB3A72C5E3A1A2F8E2B7 /* sync_metadata.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = sync_metadata.cpp; path = Realm/ObjectStore/src/sync/impl/sync_metadata.cpp; sourceTree = ""; }; + E5ABB25E379859D47265F2097C96DB0C /* uuid.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = uuid.cpp; path = Realm/ObjectStore/src/util/uuid.cpp; sourceTree = ""; }; + E613A12D65DCDDFB89BF512E54016D0E /* sync_file.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = sync_file.cpp; path = Realm/ObjectStore/src/sync/impl/sync_file.cpp; sourceTree = ""; }; + E65BFFCF67FA024A57F6810BDB3EF0AF /* RLMSyncSessionRefreshHandle.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncSessionRefreshHandle.mm; path = Realm/RLMSyncSessionRefreshHandle.mm; sourceTree = ""; }; E705FFD877223D0B0101AF6254E69858 /* SVRadialGradientLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVRadialGradientLayer.m; path = SVProgressHUD/SVRadialGradientLayer.m; sourceTree = ""; }; - E79F6D4273AE165CB0C762D941FD49F8 /* sync_manager.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_manager.cpp; path = Realm/ObjectStore/src/sync/sync_manager.cpp; sourceTree = ""; }; + E79F6D4273AE165CB0C762D941FD49F8 /* sync_manager.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = sync_manager.cpp; path = Realm/ObjectStore/src/sync/sync_manager.cpp; sourceTree = ""; }; E952E44C64CC59E5A7D6F8EEB2DFCAAA /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; E9C01B96F4ABBD938FDDD288B04E75D1 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; E9DB9B15672EAA97BA0381CF11F2FB14 /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; @@ -813,22 +813,22 @@ EC02C03E2D70A5F5B8477340245B0BDA /* RLMRealm+Sync.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RLMRealm+Sync.h"; path = "include/RLMRealm+Sync.h"; sourceTree = ""; }; EC210E282A20580AC777D20AD7521060 /* RLMResults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMResults.h; path = include/RLMResults.h; sourceTree = ""; }; EC546713A40C285F1F96D60407A65EE5 /* RLMCollection_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMCollection_Private.h; path = include/RLMCollection_Private.h; sourceTree = ""; }; - EDFEA1AAAEE746F5CA07C8FF7245D734 /* schema.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = schema.cpp; path = Realm/ObjectStore/src/schema.cpp; sourceTree = ""; }; + EDFEA1AAAEE746F5CA07C8FF7245D734 /* schema.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = schema.cpp; path = Realm/ObjectStore/src/schema.cpp; sourceTree = ""; }; EF24AD35F2C7ED5931566922740848CF /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; F046922896204348860BB33590371530 /* RLMObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObject.h; path = include/RLMObject.h; sourceTree = ""; }; F07E279D64010940180B74CC84FB57C8 /* UIColor+ChameleonPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+ChameleonPrivate.h"; path = "Pod/Classes/Objective-C/UIColor+ChameleonPrivate.h"; sourceTree = ""; }; F0967F9F28642BF501CA462A45581601 /* RLMRealmConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealmConfiguration.h; path = include/RLMRealmConfiguration.h; sourceTree = ""; }; - F0E37B37755144723909293D2AFDAE35 /* Realm.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Realm.framework; path = Realm.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F0E37B37755144723909293D2AFDAE35 /* Realm.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Realm.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F100498E3A55FCD698343AE663FBC533 /* RLMProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMProperty.h; path = include/RLMProperty.h; sourceTree = ""; }; F267BDEF56530ADE06BEB781B7A96C8C /* RLMMigration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMMigration.h; path = include/RLMMigration.h; sourceTree = ""; }; F3EC90777F4DA5BFBEFB31392629C1F3 /* UIColor+ChameleonPrivate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+ChameleonPrivate.m"; path = "Pod/Classes/Objective-C/UIColor+ChameleonPrivate.m"; sourceTree = ""; }; - F50C035EF952D40A95D7E03ED0D26D1F /* results_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = results_notifier.cpp; path = Realm/ObjectStore/src/impl/results_notifier.cpp; sourceTree = ""; }; + F50C035EF952D40A95D7E03ED0D26D1F /* results_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = results_notifier.cpp; path = Realm/ObjectStore/src/impl/results_notifier.cpp; sourceTree = ""; }; F64E781507231AFC862D7E32C32FFB6E /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; F7882ACE5B6A0B5560149D22A412B6F0 /* UINavigationController+Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UINavigationController+Chameleon.h"; path = "Pod/Classes/Objective-C/UINavigationController+Chameleon.h"; sourceTree = ""; }; F79570CF737176CFFBF9D891400C15A9 /* RLMArray.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMArray.h; path = include/RLMArray.h; sourceTree = ""; }; F8E96D57D774FB575BB6B3CB8D816916 /* 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; }; F90C6667BE5F969C6C6A89B01EF88909 /* RLMSyncUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncUtil.h; path = include/RLMSyncUtil.h; sourceTree = ""; }; - FA66934D15EF142915C94B4685C37F7B /* external_commit_helper.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = external_commit_helper.cpp; path = Realm/ObjectStore/src/impl/apple/external_commit_helper.cpp; sourceTree = ""; }; + FA66934D15EF142915C94B4685C37F7B /* external_commit_helper.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = external_commit_helper.cpp; path = Realm/ObjectStore/src/impl/apple/external_commit_helper.cpp; sourceTree = ""; }; FB3F016B9AA6259951ECA7A3D347BC59 /* RLMJSONModels.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMJSONModels.m; path = Realm/RLMJSONModels.m; sourceTree = ""; }; FE7C6F13939F14802A9A1BD79EAC1D4A /* KingfisherOptionsInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherOptionsInfo.swift; path = Sources/KingfisherOptionsInfo.swift; sourceTree = ""; }; FFBFB5DDEF0EEBD4B1B76BD110F5721C /* Catchable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catchable.swift; path = Sources/Catchable.swift; sourceTree = ""; }; @@ -948,7 +948,6 @@ 055B4DDDC44467870C5868DA615A214B /* CorePromise */, D3A9FFC7A7DF180F143935D09676D58F /* Support Files */, ); - name = PromiseKit; path = PromiseKit; sourceTree = ""; }; @@ -993,7 +992,6 @@ DEA70D31C0AF1A4B71D45FDC83A3CCC6 /* ChartSeries.swift */, 2F40A251D3F0ABCE777A456418D650A8 /* Support Files */, ); - name = SwiftChart; path = SwiftChart; sourceTree = ""; }; @@ -1033,7 +1031,6 @@ D8927FDE96718D53059A955F2EEDDE40 /* Validation.swift */, 21F6ED38C06F4F37CE47A47DA8696CAD /* Support Files */, ); - name = Alamofire; path = Alamofire; sourceTree = ""; }; @@ -1043,7 +1040,6 @@ 57C9BAE72893AC9C460C5F5499F415EB /* SwiftyJSON.swift */, 0DBE9ED05B7659D45DB39164597A36A2 /* Support Files */, ); - name = SwiftyJSON; path = SwiftyJSON; sourceTree = ""; }; @@ -1128,7 +1124,6 @@ 991BFA1A73F46395A5F2573D18EFA63D /* Default */, DBE754F7C57B7900C8127830A779DF83 /* Support Files */, ); - name = ChameleonFramework; path = ChameleonFramework; sourceTree = ""; }; @@ -1234,7 +1229,6 @@ E6D3EF2EC9DF5E5554330269DA2E965D /* Headers */, 824E509BB1536F03E52BD7E044D8ABEB /* Support Files */, ); - name = Realm; path = Realm; sourceTree = ""; }; @@ -1368,7 +1362,6 @@ CFEB396365D1E33963DF0A95EB36CE56 /* UIButton+Kingfisher.swift */, 485F22482344BB9623BB8CFA577B72FB /* Support Files */, ); - name = Kingfisher; path = Kingfisher; sourceTree = ""; }; @@ -1386,7 +1379,6 @@ 9A61732050FD42242FEB65ED3A8DBFFE /* Resources */, 00457AF00F1AAC862301AE0BBC5EF6BD /* Support Files */, ); - name = SVProgressHUD; path = SVProgressHUD; sourceTree = ""; }; @@ -1522,7 +1514,6 @@ 77B5BC603C2749DE8E87B54B8DC083A4 /* Util.swift */, 7588718F6AA22F9FB8F90BA43749F76A /* Support Files */, ); - name = RealmSwift; path = RealmSwift; sourceTree = ""; }; @@ -1871,7 +1862,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0930; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 0940; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -2524,6 +2515,7 @@ MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; SYMROOT = "${SRCROOT}/../build"; }; name = Release; diff --git a/pocloud.xcodeproj/project.pbxproj b/pocloud.xcodeproj/project.pbxproj index 9feb009..f3e712b 100644 --- a/pocloud.xcodeproj/project.pbxproj +++ b/pocloud.xcodeproj/project.pbxproj @@ -31,6 +31,8 @@ C58C142A20B86C1C001BE9DA /* ChannelDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C58C142920B86C1C001BE9DA /* ChannelDetailViewController.swift */; }; C58C142C20B87197001BE9DA /* ChannelHistoryValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C58C142B20B87197001BE9DA /* ChannelHistoryValue.swift */; }; C58C142E20BDD6BA001BE9DA /* HistoryGraphViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C58C142D20BDD6BA001BE9DA /* HistoryGraphViewController.swift */; }; + C5B75C1F20BE339F00EB850D /* NavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5B75C1E20BE339F00EB850D /* NavigationController.swift */; }; + C5B75C2120BE350600EB850D /* MeshifyFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5B75C2020BE350600EB850D /* MeshifyFunctions.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -61,6 +63,8 @@ C58C142920B86C1C001BE9DA /* ChannelDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelDetailViewController.swift; sourceTree = ""; }; C58C142B20B87197001BE9DA /* ChannelHistoryValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelHistoryValue.swift; sourceTree = ""; }; C58C142D20BDD6BA001BE9DA /* HistoryGraphViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryGraphViewController.swift; sourceTree = ""; }; + C5B75C1E20BE339F00EB850D /* NavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationController.swift; sourceTree = ""; }; + C5B75C2020BE350600EB850D /* MeshifyFunctions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeshifyFunctions.swift; sourceTree = ""; }; D7E8B9ABE8755B533A815A1B /* Pods_pocloud.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_pocloud.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -153,6 +157,8 @@ isa = PBXGroup; children = ( C5589BED20B47E2100639393 /* AppDelegate.swift */, + C5B75C2020BE350600EB850D /* MeshifyFunctions.swift */, + C5B75C1E20BE339F00EB850D /* NavigationController.swift */, C5589BEF20B47E2100639393 /* LoginViewController.swift */, C5589C7320B657CA00639393 /* DeviceListViewController.swift */, C5589C0B20B4B12100639393 /* MapViewController.swift */, @@ -311,6 +317,7 @@ buildActionMask = 2147483647; files = ( C53407DC20B7333B0016CFAB /* Device.swift in Sources */, + C5B75C2120BE350600EB850D /* MeshifyFunctions.swift in Sources */, C5589BF020B47E2100639393 /* LoginViewController.swift in Sources */, C53407E020B7462C0016CFAB /* DeviceDetailViewController.swift in Sources */, C53407E220B74A0A0016CFAB /* Channel.swift in Sources */, @@ -329,6 +336,7 @@ C5589C1A20B4DF0A00639393 /* MapDetailViewController.swift in Sources */, C53407E620B753940016CFAB /* DeviceDetailChannelCell.swift in Sources */, C53407DA20B7328C0016CFAB /* DeviceType.swift in Sources */, + C5B75C1F20BE339F00EB850D /* NavigationController.swift in Sources */, C58C142A20B86C1C001BE9DA /* ChannelDetailViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/pocloud/Controller/AppDelegate.swift b/pocloud/Controller/AppDelegate.swift index b88896b..6071a98 100644 --- a/pocloud/Controller/AppDelegate.swift +++ b/pocloud/Controller/AppDelegate.swift @@ -7,6 +7,9 @@ // import UIKit +import PromiseKit +import Alamofire +import SwiftyJSON import RealmSwift @UIApplicationMain @@ -14,21 +17,212 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? let baseURL : String = "https://henrypump.meshify.com/api/v3" + var user : User? + + let channelDataTypes: [Int : String] = [ + 0: "Unknown", + 1: "Float", + 2: "String", + 3: "Integer", + 4: "Boolean", + 5: "DateTime", + 6: "Timespan", + 7 :"File", + 8: "LatLng" + ] func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - +// Chameleon.setGlobalThemeUsingPrimaryColor(UIColor.flatSkyBlue(), with: UIContentStyle.contrast) // print(Realm.Configuration.defaultConfiguration.fileURL) -// -// do { -// _ = try Realm() -// } catch { -// print("Error initializing Realm: \(error)") -// } -// + return true } + + //MARK: - Data Methods + +// func getAddresses() ->Promise { +// let realm = try! Realm() +// let url = "\(baseURL)/addresses" +// let headers : HTTPHeaders = [ +// "Authorization": user!.authToken +// ] +// +// return Promise { promise in +// Alamofire.request(url, method: .get, headers: headers) +// .validate() +// .responseJSON { response in +// switch response.result { +// +// case .success: +// let addressesJSON : JSON = JSON(response.result.value!) +// for(_, json) : (String, JSON) in addressesJSON { +// do { +// try realm.write { +// let addr = Address() +// addr.id = json["id"].intValue +// addr.apartment = json["id"].stringValue +// addr.city = json["city"].stringValue +// addr.country = json["country"].stringValue +// addr.lat = json["lat"].doubleValue +// addr.long = json["long"].doubleValue +// addr.state = json["state"].stringValue +// addr.street1 = json["street1"].stringValue +// addr.street2 = json["street2"].stringValue +// addr.zip = json["zip"].stringValue +// addr.zoneId = json["zoneid"].intValue +// realm.add(addr, update: true) +// } +// } catch { +// promise.reject(error) +// } +// } +// promise.fulfill(true) +// case .failure(let error): +// promise.reject(error) +// } +// } +// } +// +// } +// +// func getDevices(gateways : Results, deviceTypes : Results) ->Promise { +// let realm = try! Realm() +// let url = "\(baseURL)/devices" +// let headers : HTTPHeaders = [ +// "Authorization": user!.authToken +// ] +// +// return Promise { promise in +// Alamofire.request(url, method: .get, headers: headers) +// .validate() +// .responseJSON { response in +// +// switch response.result { +// +// case .success: +// let devicesJSON : JSON = JSON(response.result.value!) +// for(_, json) : (String, JSON) in devicesJSON { +// do { +// try realm.write { +// let dev = Device() +// dev.companyId = json["companyId"].intValue +// dev.deviceTypeId = json["deviceTypeId"].intValue +// dev.gatewayId = json["gatewayId"].intValue +// dev.id = json["id"].intValue +// dev.macAddress = json["macAddress"].stringValue +// dev.techName = json["techname"].stringValue +// dev.tenantId = json["tenantId"].intValue +// dev.vanityName = json["vanityName"].stringValue +// +// let pGateway = gateways.filter("id == %d", dev.gatewayId).first +// let pDeviceType = deviceTypes.filter("id == %d", dev.deviceTypeId).first +// +// realm.add(dev, update: true) +// pGateway?.devices.append(dev) +// pDeviceType?.devices.append(dev) +// } +// } catch { +// promise.reject(error) +// } +// } +// promise.fulfill(true) +// case .failure(let error): +// promise.reject(error) +// } +// } +// } +// +// } +// +// func getGateways(addresses : Results
) -> Promise { +// +// let realm = try! Realm() +// let url = "\(baseURL)/gateways" +// let headers : HTTPHeaders = [ +// "Authorization": user!.authToken +// ] +// +// return Promise { promise in +// Alamofire.request(url, method: .get, headers: headers) +// .responseJSON { response in +// switch response.result { +// +// case .success: +// let gatewaysJSON : JSON = JSON(response.result.value!) +// for(_, json) : (String, JSON) in gatewaysJSON { +// +// do { +// try realm.write { +// let gtw = Gateway() +// gtw.addressId = json["addressId"].intValue +// gtw.companyId = json["companyId"].intValue +// gtw.diaVersion = json["diaVersion"].stringValue +// gtw.gatewayConfigurationId = json["gatewayConfigurationId"].intValue +// gtw.gatewayTypeId = json["gatewayTypeId"].intValue +// gtw.id = json["id"].intValue +// gtw.macAddress = json["macAddress"].stringValue +// gtw.name = json["name"].stringValue +// gtw.panId = json["panId"].stringValue +// gtw.tenantId = json["tenantId"].intValue +// gtw.userId = json["userId"].intValue +// +// let associatedAddress = addresses.filter("id == %d", gtw.addressId).first +// +// gtw.address = associatedAddress +// realm.add(gtw, update: true) +// } +// } catch { +// promise.reject(error) +// } +// } +// promise.fulfill(true) +// case .failure(let error): +// promise.reject(error) +// } +// } +// } +// } +// +// +// func getDeviceTypes() -> Promise { +// let realm = try! Realm() +// let url = "\(baseURL)/devicetypes" +// let headers : HTTPHeaders = [ +// "Authorization": user!.authToken +// ] +// +// return Promise { promise in +// Alamofire.request(url, method: .get, headers: headers) +// .responseJSON { response in +// switch response.result { +// +// case .success: +// let deviceTypesJson : JSON = JSON(response.result.value!) +// for(_, json) : (String, JSON) in deviceTypesJson { +// do { +// try realm.write { +// let dt = DeviceType() +// dt.companyId = json["CompanyId"].intValue +// dt.id = json["id"].intValue +// dt.imgUrl = json["imgUrl"].stringValue +// dt.name = json["name"].stringValue +// dt.note = json["note"].stringValue +// dt.tenantId = json["tenantId"].intValue +// dt.vanityName = json["vanityName"].stringValue +// realm.add(dt, update: true) +// } +// } catch { +// promise.reject(error) +// } +// } +// promise.fulfill(true) +// case .failure(let error): +// promise.reject(error) +// } +// } +// } +// } } diff --git a/pocloud/Controller/ChannelDetailViewController.swift b/pocloud/Controller/ChannelDetailViewController.swift index 7df6fb4..ee8f331 100644 --- a/pocloud/Controller/ChannelDetailViewController.swift +++ b/pocloud/Controller/ChannelDetailViewController.swift @@ -15,30 +15,16 @@ import SVProgressHUD class ChannelDetailViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { let realm = try! Realm() + let baseURL = (UIApplication.shared.delegate as! AppDelegate).baseURL + let user = (UIApplication.shared.delegate as! AppDelegate).user + let channelDataTypes = (UIApplication.shared.delegate as! AppDelegate).channelDataTypes + let formatter = DateFormatter() - - - - - var user : User? var thisDevice : Device? var thisChannel : Channel? - var channelHistory : [ChannelHistoryValue] = [ChannelHistoryValue]() - let channelDataTypes: [Int : String] = [ - 0: "Unknown", - 1: "Float", - 2: "String", - 3: "Integer", - 4: "Boolean", - 5: "DateTime", - 6: "Timespan", - 7 :"File", - 8: "LatLng" - ] - @IBOutlet weak var deviceNameLabel: UILabel! @IBOutlet weak var nameLabel: UILabel! @IBOutlet weak var helpDescriptionLabel: UILabel! @@ -57,8 +43,9 @@ class ChannelDetailViewController: UIViewController, UITableViewDelegate, UITabl setupChannelDisplay() SVProgressHUD.show() firstly { - getChannelHistory() - }.done { _ in + getChannelHistory(deviceId: (self.thisDevice?.id)!, channelId: (self.thisChannel?.id)!, baseURL: self.baseURL, authToken: (self.user?.authToken)!) + }.done { (hist) in + self.channelHistory = hist self.historyTableView.reloadData() SVProgressHUD.dismiss() }.catch { error in @@ -70,7 +57,6 @@ class ChannelDetailViewController: UIViewController, UITableViewDelegate, UITabl if segue.identifier == "openHistoryGraph" { let destinationVC = segue.destination as! HistoryGraphViewController destinationVC.channelHistory = channelHistory - destinationVC.user = user destinationVC.thisChannel = thisChannel } } @@ -112,10 +98,11 @@ class ChannelDetailViewController: UIViewController, UITableViewDelegate, UITabl // what will happen once the user clicks the add item button on our UIAlert SVProgressHUD.show() firstly { - self.writeChannelValue(value: textField.text!) + writeChannelValue(deviceId: (self.thisDevice?.id)!, channelName: (self.thisChannel?.name)!, value: textField.text!, baseURL: self.baseURL, authToken: (self.user?.authToken)!) }.then{ _ in - self.getChannelHistory() - }.done { _ in + getChannelHistory(deviceId: (self.thisDevice?.id)!, channelId: (self.thisChannel?.id)!, baseURL: self.baseURL, authToken: (self.user?.authToken)!) + }.done { (hist) in + self.channelHistory = hist self.historyTableView.reloadData() SVProgressHUD.dismiss() }.catch { error in @@ -134,77 +121,50 @@ class ChannelDetailViewController: UIViewController, UITableViewDelegate, UITabl present(alert, animated: true, completion: nil) } - func getChannelHistory() -> Promise { - let url = "\(baseURL)/devices/\(thisDevice!.id)/values/\(thisChannel!.id)" - let headers : HTTPHeaders = [ - "Authorization": user!.authToken - ] - - return Promise { promise in - Alamofire.request(url, method: .get, headers: headers) - .responseJSON { response in - switch response.result { - - case .success: - let channelHistoryJSON : JSON = JSON(response.result.value!) - self.channelHistory.removeAll() - for(_, json) : (String, JSON) in channelHistoryJSON { - let chHistVal = ChannelHistoryValue() - chHistVal.timestamp = Date(timeIntervalSince1970: Double(json["timestamp"].intValue)) - chHistVal.value = json["value"].stringValue - self.channelHistory.append(chHistVal) - } - self.channelHistory.reverse() - promise.fulfill(true) - case .failure(let error): - promise.reject(error) - } - } - } - } - - func writeChannelValue(value : String) -> Promise { - let timestamp: Int = Int(Date().timeIntervalSince1970) - let channelName = thisChannel?.name - var channelJson : JSON = JSON() - channelJson["name"].string = channelName - channelJson["timestamp"].int = timestamp - channelJson["value"].string = value - - var listJson = JSON() - listJson.arrayObject = [channelJson] - - let url = "\(baseURL)/devices/\(thisDevice!.id)/values" - let headers : HTTPHeaders = [ - "Authorization": user!.authToken - ] - - - return Promise { promise in - Alamofire.request(url, method: .put, parameters: [:], encoding: listJson.rawString()!, headers: headers) - .response { response in - if response.response?.statusCode == 200 { - promise.fulfill(true) - } else { - promise.reject(String(response.response!.statusCode) as! Error) - } - } - } - - } + +// func writeChannelValue(value : String) -> Promise { +// let timestamp: Int = Int(Date().timeIntervalSince1970) +// let channelName = thisChannel?.name +// var channelJson : JSON = JSON() +// channelJson["name"].string = channelName +// channelJson["timestamp"].int = timestamp +// channelJson["value"].string = value +// +// var listJson = JSON() +// listJson.arrayObject = [channelJson] +// +// let url = "\(baseURL)/devices/\(thisDevice!.id)/values" +// let headers : HTTPHeaders = [ +// "Authorization": user!.authToken +// ] +// +// +// +// return Promise { promise in +// Alamofire.request(url, method: .put, parameters: [:], encoding: listJson.rawString()!, headers: headers) +// .response { response in +// if response.response?.statusCode == 200 { +// promise.fulfill(true) +// } else { +// promise.reject(String(response.response!.statusCode) as! Error) +// } +// } +// } +// +// } } -extension String: ParameterEncoding { - - public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { - var request = try urlRequest.asURLRequest() - request.httpBody = data(using: .utf8, allowLossyConversion: false) - return request - } - -} +//extension String: ParameterEncoding { +// +// public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { +// var request = try urlRequest.asURLRequest() +// request.httpBody = data(using: .utf8, allowLossyConversion: false) +// return request +// } +// +//} diff --git a/pocloud/Controller/DeviceDetailViewController.swift b/pocloud/Controller/DeviceDetailViewController.swift index a9c6b46..7fdda54 100644 --- a/pocloud/Controller/DeviceDetailViewController.swift +++ b/pocloud/Controller/DeviceDetailViewController.swift @@ -16,11 +16,10 @@ import SVProgressHUD class DeviceDetailViewController: UITableViewController { let realm = try! Realm() let baseURL = (UIApplication.shared.delegate as! AppDelegate).baseURL + let user = (UIApplication.shared.delegate as! AppDelegate).user var thisDevice : Device? - var user : User? var deviceTypes : Results? - var selectedChannel : Channel? override func viewDidLoad() { @@ -43,9 +42,9 @@ class DeviceDetailViewController: UITableViewController { // tableView.addSubview(refreshControl!) firstly { - getChannels(deviceTypeId: thisDevice!.deviceTypeId) + getChannels(deviceTypeId: thisDevice!.deviceTypeId, baseURL: baseURL, authToken: (user?.authToken)!) }.then { _ in - self.getChannelValues(deviceId: self.thisDevice!.id) + getChannelValues(deviceId: self.thisDevice!.id, baseURL: self.baseURL, authToken: (self.user?.authToken)!) }.done { _ in self.tableView.reloadData() SVProgressHUD.dismiss() @@ -59,9 +58,9 @@ class DeviceDetailViewController: UITableViewController { @objc func refresh() { SVProgressHUD.show() firstly { - getChannels(deviceTypeId: thisDevice!.deviceTypeId) + getChannels(deviceTypeId: thisDevice!.deviceTypeId, baseURL: baseURL, authToken: (user?.authToken)!) }.then { _ in - self.getChannelValues(deviceId: self.thisDevice!.id) + getChannelValues(deviceId: self.thisDevice!.id, baseURL: self.baseURL, authToken: (self.user?.authToken)!) }.done { _ in self.tableView.reloadData() SVProgressHUD.dismiss() @@ -102,7 +101,6 @@ class DeviceDetailViewController: UITableViewController { override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "goToChannelView" { let destinationVC = segue.destination as! ChannelDetailViewController - destinationVC.user = user! destinationVC.thisDevice = thisDevice! destinationVC.thisChannel = selectedChannel! @@ -112,92 +110,92 @@ class DeviceDetailViewController: UITableViewController { //MARK: - Data Methods - func getChannels(deviceTypeId: Int) -> Promise { - let url = "\(baseURL)/devicetypes/\(deviceTypeId)/channels" - let headers : HTTPHeaders = [ - "Authorization": user!.authToken - ] - - return Promise { seal in - Alamofire.request(url, method: .get, headers: headers) - .responseJSON { response in - switch response.result { - - case .success: - let channelsJSON : JSON = JSON(response.result.value!) - for(_, json) : (String, JSON) in channelsJSON { - do { - try self.realm.write { - let ch = Channel() - ch.channelType = json["channelType"].intValue - ch.dataType = json["dataType"].intValue - ch.defaultValue = json["defaultValue"].stringValue - ch.deviceTypeId = json["deviceTypeId"].intValue - ch.fromMe = json["fromMe"].boolValue - ch.helpExplanation = json["helpExplanation"].stringValue - ch.id = json["id"].intValue - ch.io = json["io"].boolValue - ch.name = json["name"].stringValue - ch.regex = json["regex"].stringValue - ch.regexErrMsg = json["regexErrMsg"].stringValue - ch.subTitle = json["subTitle"].stringValue - - let pDeviceType = self.deviceTypes?.filter("id == %d", ch.deviceTypeId).first - - self.realm.add(ch, update: true) - pDeviceType?.channels.append(ch) - - } - } catch { - seal.reject(error) - } - } - seal.fulfill(true) - case .failure(let error): - seal.reject(error) - } - } - } - } +// func getChannels(deviceTypeId: Int) -> Promise { +// let url = "\(baseURL)/devicetypes/\(deviceTypeId)/channels" +// let headers : HTTPHeaders = [ +// "Authorization": user!.authToken +// ] +// +// return Promise { seal in +// Alamofire.request(url, method: .get, headers: headers) +// .responseJSON { response in +// switch response.result { +// +// case .success: +// let channelsJSON : JSON = JSON(response.result.value!) +// for(_, json) : (String, JSON) in channelsJSON { +// do { +// try self.realm.write { +// let ch = Channel() +// ch.channelType = json["channelType"].intValue +// ch.dataType = json["dataType"].intValue +// ch.defaultValue = json["defaultValue"].stringValue +// ch.deviceTypeId = json["deviceTypeId"].intValue +// ch.fromMe = json["fromMe"].boolValue +// ch.helpExplanation = json["helpExplanation"].stringValue +// ch.id = json["id"].intValue +// ch.io = json["io"].boolValue +// ch.name = json["name"].stringValue +// ch.regex = json["regex"].stringValue +// ch.regexErrMsg = json["regexErrMsg"].stringValue +// ch.subTitle = json["subTitle"].stringValue +// +// let pDeviceType = self.deviceTypes?.filter("id == %d", ch.deviceTypeId).first +// +// self.realm.add(ch, update: true) +// pDeviceType?.channels.append(ch) +// +// } +// } catch { +// seal.reject(error) +// } +// } +// seal.fulfill(true) +// case .failure(let error): +// seal.reject(error) +// } +// } +// } +// } - func getChannelValues(deviceId: Int) -> Promise { - let url = "\(baseURL)/devices/\(deviceId)/values" - let headers : HTTPHeaders = [ - "Authorization": user!.authToken - ] - - return Promise { prom in - Alamofire.request(url, method: .get, headers: headers) - .responseJSON { response in - switch response.result { - - case .success: - let channelValJSON : JSON = JSON(response.result.value!) - - for(chName, json) : (String, JSON) in channelValJSON { - do { - try self.realm.write { - let chv = ChanValue() - chv.uid = "\(deviceId).\(chName)" - chv.name = chName - chv.value = json["value"].stringValue - chv.timestamp = json["timestamp"].intValue - - self.realm.add(chv, update: true) - self.thisDevice!.values.append(chv) - - } - } catch { - prom.reject(error) - } - } - prom.fulfill(true) - case .failure(let error): - prom.reject(error) - } - } - } - } +// func getChannelValues(deviceId: Int) -> Promise { +// let url = "\(baseURL)/devices/\(deviceId)/values" +// let headers : HTTPHeaders = [ +// "Authorization": user!.authToken +// ] +// +// return Promise { prom in +// Alamofire.request(url, method: .get, headers: headers) +// .responseJSON { response in +// switch response.result { +// +// case .success: +// let channelValJSON : JSON = JSON(response.result.value!) +// +// for(chName, json) : (String, JSON) in channelValJSON { +// do { +// try self.realm.write { +// let chv = ChanValue() +// chv.uid = "\(deviceId).\(chName)" +// chv.name = chName +// chv.value = json["value"].stringValue +// chv.timestamp = json["timestamp"].intValue +// +// self.realm.add(chv, update: true) +// self.thisDevice!.values.append(chv) +// +// } +// } catch { +// prom.reject(error) +// } +// } +// prom.fulfill(true) +// case .failure(let error): +// prom.reject(error) +// } +// } +// } +// } func loadData() -> Promise { return Promise { promise in diff --git a/pocloud/Controller/DeviceListViewController.swift b/pocloud/Controller/DeviceListViewController.swift index 168d729..dfeae40 100644 --- a/pocloud/Controller/DeviceListViewController.swift +++ b/pocloud/Controller/DeviceListViewController.swift @@ -16,7 +16,7 @@ import SVProgressHUD class DeviceListViewController: UITableViewController { let realm = try! Realm() - var user : User? + let user = (UIApplication.shared.delegate as! AppDelegate).user var addresses : Results
? var gateways : Results? var devices : Results? @@ -49,13 +49,13 @@ class DeviceListViewController: UITableViewController { func loadJSONData() -> Promise{ return Promise { promise in firstly { - self.getDeviceTypes() + getDeviceTypes(baseURL: self.baseURL, authToken: (self.user?.authToken)!) }.then { _ in - self.getAddresses() + getAddresses(baseURL: self.baseURL, authToken: (self.user?.authToken)!) }.then { _ in - self.getGateways() + getGateways(baseURL: self.baseURL, authToken: (self.user?.authToken)!) }.then { _ in - self.getDevices() + getDevices(baseURL: self.baseURL, authToken: (self.user?.authToken)!) }.done{ _ in promise.fulfill(()) }.catch { error in @@ -100,14 +100,8 @@ class DeviceListViewController: UITableViewController { } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - if segue.identifier == "openMapView" { - let destinationVC = segue.destination as! MapViewController - destinationVC.user = user! - } - if segue.identifier == "openDeviceDetailView" { let destinationVC = segue.destination as! DeviceDetailViewController - destinationVC.user = user! destinationVC.thisDevice = selectedDevice! } } @@ -127,191 +121,6 @@ class DeviceListViewController: UITableViewController { } - //MARK: - Data Methods - - func getAddresses() ->Promise { - let url = "\(baseURL)/addresses" - let headers : HTTPHeaders = [ - "Authorization": user!.authToken - ] - - return Promise { seal in - Alamofire.request(url, method: .get, headers: headers) - .validate() - .responseJSON { response in - switch response.result { - - case .success: - let addressesJSON : JSON = JSON(response.result.value!) - for(_, json) : (String, JSON) in addressesJSON { - do { - try self.realm.write { - let addr = Address() - addr.id = json["id"].intValue - addr.apartment = json["id"].stringValue - addr.city = json["city"].stringValue - addr.country = json["country"].stringValue - addr.lat = json["lat"].doubleValue - addr.long = json["long"].doubleValue - addr.state = json["state"].stringValue - addr.street1 = json["street1"].stringValue - addr.street2 = json["street2"].stringValue - addr.zip = json["zip"].stringValue - addr.zoneId = json["zoneid"].intValue - self.realm.add(addr, update: true) - } - } catch { - seal.reject(error) - } - } - seal.fulfill(true) - case .failure(let error): - seal.reject(error) - } - } - } - - } - - func getDevices() ->Promise { - let url = "\(baseURL)/devices" - let headers : HTTPHeaders = [ - "Authorization": user!.authToken - ] - - return Promise { seal in - Alamofire.request(url, method: .get, headers: headers) - .validate() - .responseJSON { response in - - switch response.result { - - case .success: - let devicesJSON : JSON = JSON(response.result.value!) - for(_, json) : (String, JSON) in devicesJSON { - do { - try self.realm.write { - let dev = Device() - dev.companyId = json["companyId"].intValue - dev.deviceTypeId = json["deviceTypeId"].intValue - dev.gatewayId = json["gatewayId"].intValue - dev.id = json["id"].intValue - dev.macAddress = json["macAddress"].stringValue - dev.techName = json["techname"].stringValue - dev.tenantId = json["tenantId"].intValue - dev.vanityName = json["vanityName"].stringValue - - let pGateway = self.gateways?.filter("id == %d", dev.gatewayId).first - let pDeviceType = self.deviceTypes?.filter("id == %d", dev.deviceTypeId).first - - self.realm.add(dev, update: true) - pGateway?.devices.append(dev) - pDeviceType?.devices.append(dev) - } - } catch { - seal.reject(error) - } - } - seal.fulfill(true) - case .failure(let error): - seal.reject(error) - } - } - } - - } - - func getGateways() -> Promise { - let url = "\(baseURL)/gateways" - let headers : HTTPHeaders = [ - "Authorization": user!.authToken - ] - - return Promise { seal in - Alamofire.request(url, method: .get, headers: headers) - .responseJSON { response in - switch response.result { - - case .success: - let gatewaysJSON : JSON = JSON(response.result.value!) - for(_, json) : (String, JSON) in gatewaysJSON { - - do { - try self.realm.write { - let gtw = Gateway() - gtw.addressId = json["addressId"].intValue - gtw.companyId = json["companyId"].intValue - gtw.diaVersion = json["diaVersion"].stringValue - gtw.gatewayConfigurationId = json["gatewayConfigurationId"].intValue - gtw.gatewayTypeId = json["gatewayTypeId"].intValue - gtw.id = json["id"].intValue - gtw.macAddress = json["macAddress"].stringValue - gtw.name = json["name"].stringValue - gtw.panId = json["panId"].stringValue - gtw.tenantId = json["tenantId"].intValue - gtw.userId = json["userId"].intValue - - let associatedAddress = self.addresses?.filter("id == %d", gtw.addressId).first - - gtw.address = associatedAddress - self.realm.add(gtw, update: true) - } - } catch { - seal.reject(error) - } - - - - - } - seal.fulfill(true) - case .failure(let error): - seal.reject(error) - } - } - } - } - - - func getDeviceTypes() -> Promise { - let url = "\(baseURL)/devicetypes" - let headers : HTTPHeaders = [ - "Authorization": user!.authToken - ] - - return Promise { seal in - Alamofire.request(url, method: .get, headers: headers) - .responseJSON { response in - switch response.result { - - case .success: - let deviceTypesJson : JSON = JSON(response.result.value!) - for(_, json) : (String, JSON) in deviceTypesJson { - do { - try self.realm.write { - let dt = DeviceType() - dt.companyId = json["CompanyId"].intValue - dt.id = json["id"].intValue - dt.imgUrl = json["imgUrl"].stringValue - dt.name = json["name"].stringValue - dt.note = json["note"].stringValue - dt.tenantId = json["tenantId"].intValue - dt.vanityName = json["vanityName"].stringValue - self.realm.add(dt, update: true) - } - } catch { - seal.reject(error) - } - } - seal.fulfill(true) - case .failure(let error): - seal.reject(error) - } - } - } - } - - //MARK: - Realm Functions func loadRealmData() -> Promise { diff --git a/pocloud/Controller/HistoryGraphViewController.swift b/pocloud/Controller/HistoryGraphViewController.swift index 839834f..0ea8436 100644 --- a/pocloud/Controller/HistoryGraphViewController.swift +++ b/pocloud/Controller/HistoryGraphViewController.swift @@ -10,25 +10,17 @@ import UIKit import SwiftChart class HistoryGraphViewController: UIViewController, ChartDelegate{ + let user = (UIApplication.shared.delegate as! AppDelegate).user + let channelDataTypes = (UIApplication.shared.delegate as! AppDelegate).channelDataTypes + @IBOutlet weak var leftConstraint: NSLayoutConstraint! @IBOutlet weak var lineChart: Chart! @IBOutlet weak var label: UILabel! + var thisChannel : Channel? var channelHistory : [ChannelHistoryValue] = [ChannelHistoryValue]() - var user : User? var dateFormatter = DateFormatter() - let channelDataTypes: [Int : String] = [ - 0: "Unknown", - 1: "Float", - 2: "String", - 3: "Integer", - 4: "Boolean", - 5: "DateTime", - 6: "Timespan", - 7 :"File", - 8: "LatLng" - ] override func viewDidLoad() { super.viewDidLoad() diff --git a/pocloud/Controller/LoginViewController.swift b/pocloud/Controller/LoginViewController.swift index 5810c27..1f8aa2c 100644 --- a/pocloud/Controller/LoginViewController.swift +++ b/pocloud/Controller/LoginViewController.swift @@ -28,7 +28,7 @@ extension String { class LoginViewController: UIViewController { let baseURL = (UIApplication.shared.delegate as! AppDelegate).baseURL - var user : User? + let user = (UIApplication.shared.delegate as! AppDelegate).user let dataFilePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("Auth.plist") @@ -51,7 +51,7 @@ class LoginViewController: UIViewController { firstly { fetchCurrentUser(authToken: authToken) }.done { fetchedUser in - self.user = fetchedUser + (UIApplication.shared.delegate as! AppDelegate).user = fetchedUser self.saveAuth() SVProgressHUD.dismiss() SVProgressHUD.showSuccess(withStatus: "Login Success") @@ -100,15 +100,9 @@ class LoginViewController: UIViewController { @IBAction func logOutPressed(_ sender: UIBarButtonItem) { - user = User() + (UIApplication.shared.delegate as! AppDelegate).user = User() saveAuth() } - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - if segue.identifier == "logInSegue" { - let destinationVC = segue.destination as! DeviceListViewController - destinationVC.user = user - } - } func saveAuth(){ let encoder = PropertyListEncoder() @@ -132,7 +126,7 @@ class LoginViewController: UIViewController { firstly { fetchCurrentUser(authToken: storedUser.authToken) }.done { currentUser in - self.user = currentUser + (UIApplication.shared.delegate as! AppDelegate).user = currentUser SVProgressHUD.dismiss() SVProgressHUD.showSuccess(withStatus: "Found User!") self.performSegue(withIdentifier: "logInSegue", sender: nil) diff --git a/pocloud/Controller/MapDetailViewController.swift b/pocloud/Controller/MapDetailViewController.swift index 468acc4..79574c8 100644 --- a/pocloud/Controller/MapDetailViewController.swift +++ b/pocloud/Controller/MapDetailViewController.swift @@ -17,8 +17,8 @@ import SVProgressHUD class MapDetailViewController: UIViewController, MKMapViewDelegate, UITableViewDataSource, UITableViewDelegate { let baseURL = (UIApplication.shared.delegate as! AppDelegate).baseURL let realm = try! Realm() + let user = (UIApplication.shared.delegate as! AppDelegate).user - var user : User? var gateway: Gateway? var devices : Results? var selectedDevice : Device? @@ -113,7 +113,6 @@ class MapDetailViewController: UIViewController, MKMapViewDelegate, UITableViewD override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "openDeviceDetailView" { let destinationVC = segue.destination as! DeviceDetailViewController - destinationVC.user = user! destinationVC.thisDevice = selectedDevice! } } diff --git a/pocloud/Controller/MapViewController.swift b/pocloud/Controller/MapViewController.swift index e75ee71..9355d1a 100644 --- a/pocloud/Controller/MapViewController.swift +++ b/pocloud/Controller/MapViewController.swift @@ -20,10 +20,8 @@ class MapViewController: UIViewController, MKMapViewDelegate { let realm = try! Realm() let locationManager = CLLocationManager() + let user = (UIApplication.shared.delegate as! AppDelegate).user - - - var user : User? var addresses : Results
? var gateways : Results? var devices : Results? @@ -42,13 +40,13 @@ class MapViewController: UIViewController, MKMapViewDelegate { SVProgressHUD.show() loadData() firstly { - getDeviceTypes() + getDeviceTypes(baseURL: self.baseURL, authToken: (self.user?.authToken)!) }.then { _ in - self.getAddresses() + getAddresses(baseURL: self.baseURL, authToken: (self.user?.authToken)!) }.then { _ in - self.getGateways() + getGateways(baseURL: self.baseURL, authToken: (self.user?.authToken)!) }.then { _ in - self.getDevices() + getDevices(baseURL: self.baseURL, authToken: (self.user?.authToken)!) }.done { _ in self.showMarkersOnMap() SVProgressHUD.dismiss() @@ -111,201 +109,10 @@ class MapViewController: UIViewController, MKMapViewDelegate { override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "openDetailView" { let destinationVC = segue.destination as! MapDetailViewController - destinationVC.user = user! destinationVC.gateway = selectedGateway } - - if segue.identifier == "openListView" { - let destinationVC = segue.destination as! DeviceListViewController - destinationVC.user = user! - } } - - //MARK: - Data Methods - - func getAddresses() ->Promise { - let url = "\(baseURL)/addresses" - let headers : HTTPHeaders = [ - "Authorization": user!.authToken - ] - - return Promise { seal in - Alamofire.request(url, method: .get, headers: headers) - .validate() - .responseJSON { response in - switch response.result { - - case .success: - let addressesJSON : JSON = JSON(response.result.value!) - for(_, json) : (String, JSON) in addressesJSON { - do { - try self.realm.write { - let addr = Address() - addr.id = json["id"].intValue - addr.apartment = json["apartment"].stringValue - addr.city = json["city"].stringValue - addr.country = json["country"].stringValue - addr.lat = json["lat"].doubleValue - addr.long = json["long"].doubleValue - addr.state = json["state"].stringValue - addr.street1 = json["street1"].stringValue - addr.street2 = json["street2"].stringValue - addr.zip = json["zip"].stringValue - addr.zoneId = json["zoneid"].intValue - self.realm.add(addr, update: true) - } - } catch { - seal.reject(error) - } - } - seal.fulfill(true) - case .failure(let error): - seal.reject(error) - } - } - } - - } - - func getDevices() ->Promise { - let url = "\(baseURL)/devices" - let headers : HTTPHeaders = [ - "Authorization": user!.authToken - ] - - return Promise { seal in - Alamofire.request(url, method: .get, headers: headers) - .validate() - .responseJSON { response in - - switch response.result { - - case .success: - let devicesJSON : JSON = JSON(response.result.value!) - for(_, json) : (String, JSON) in devicesJSON { - do { - try self.realm.write { - let dev = Device() - dev.companyId = json["companyId"].intValue - dev.deviceTypeId = json["deviceTypeId"].intValue - dev.gatewayId = json["gatewayId"].intValue - dev.id = json["id"].intValue - dev.macAddress = json["macAddress"].stringValue - dev.techName = json["techname"].stringValue - dev.tenantId = json["tenantId"].intValue - dev.vanityName = json["vanityName"].stringValue - - let pGateway = self.gateways?.filter("id == %d", dev.gatewayId).first - let pDeviceType = self.deviceTypes?.filter("id == %d", dev.deviceTypeId).first - - self.realm.add(dev, update: true) - pGateway?.devices.append(dev) - pDeviceType?.devices.append(dev) - } - } catch { - seal.reject(error) - } - } - seal.fulfill(true) - case .failure(let error): - seal.reject(error) - } - } - } - - } - - func getGateways() -> Promise { - let url = "\(baseURL)/gateways" - let headers : HTTPHeaders = [ - "Authorization": user!.authToken - ] - - return Promise { seal in - Alamofire.request(url, method: .get, headers: headers) - .responseJSON { response in - switch response.result { - - case .success: - let gatewaysJSON : JSON = JSON(response.result.value!) - for(_, json) : (String, JSON) in gatewaysJSON { - - do { - try self.realm.write { - let gtw = Gateway() - gtw.addressId = json["addressId"].intValue - gtw.companyId = json["companyId"].intValue - gtw.diaVersion = json["diaVersion"].stringValue - gtw.gatewayConfigurationId = json["gatewayConfigurationId"].intValue - gtw.gatewayTypeId = json["gatewayTypeId"].intValue - gtw.id = json["id"].intValue - gtw.macAddress = json["macAddress"].stringValue - gtw.name = json["name"].stringValue - gtw.panId = json["panId"].stringValue - gtw.tenantId = json["tenantId"].intValue - gtw.userId = json["userId"].intValue - - let associatedAddress = self.addresses?.filter("id == %d", gtw.addressId).first - gtw.address = associatedAddress - self.realm.add(gtw, update: true) - } - } catch { - seal.reject(error) - } - - - - - } - seal.fulfill(true) - case .failure(let error): - seal.reject(error) - } - } - } - } - - - func getDeviceTypes() -> Promise { - let url = "\(baseURL)/devicetypes" - let headers : HTTPHeaders = [ - "Authorization": user!.authToken - ] - - return Promise { seal in - Alamofire.request(url, method: .get, headers: headers) - .responseJSON { response in - switch response.result { - - case .success: - let deviceTypesJson : JSON = JSON(response.result.value!) - for(_, json) : (String, JSON) in deviceTypesJson { - do { - try self.realm.write { - let dt = DeviceType() - dt.companyId = json["CompanyId"].intValue - dt.id = json["id"].intValue - dt.imgUrl = json["imgUrl"].stringValue - dt.name = json["name"].stringValue - dt.note = json["note"].stringValue - dt.tenantId = json["tenantId"].intValue - dt.vanityName = json["vanityName"].stringValue - self.realm.add(dt, update: true) - } - } catch { - seal.reject(error) - } - } - seal.fulfill(true) - case .failure(let error): - seal.reject(error) - } - } - } - } - - //MARK: - Realm Functions func loadData() { diff --git a/pocloud/Controller/MeshifyFunctions.swift b/pocloud/Controller/MeshifyFunctions.swift new file mode 100644 index 0000000..d6e4b39 --- /dev/null +++ b/pocloud/Controller/MeshifyFunctions.swift @@ -0,0 +1,358 @@ +// +// MeshifyFunctions.swift +// pocloud +// +// Created by Patrick McDonagh on 5/29/18. +// Copyright © 2018 patrickjmcd. All rights reserved. +// + +import Foundation +import RealmSwift +import Alamofire +import SwiftyJSON +import PromiseKit + +func getDeviceTypes(baseURL : String, authToken : String) -> Promise { + let realm = try! Realm() + let url = "\(baseURL)/devicetypes" + let headers : HTTPHeaders = [ + "Authorization": authToken + ] + + return Promise { seal in + Alamofire.request(url, method: .get, headers: headers) + .responseJSON { response in + switch response.result { + + case .success: + let deviceTypesJson : JSON = JSON(response.result.value!) + for(_, json) : (String, JSON) in deviceTypesJson { + do { + try realm.write { + let dt = DeviceType() + dt.companyId = json["CompanyId"].intValue + dt.id = json["id"].intValue + dt.imgUrl = json["imgUrl"].stringValue + dt.name = json["name"].stringValue + dt.note = json["note"].stringValue + dt.tenantId = json["tenantId"].intValue + dt.vanityName = json["vanityName"].stringValue + realm.add(dt, update: true) + } + } catch { + seal.reject(error) + } + } + seal.fulfill(true) + case .failure(let error): + seal.reject(error) + } + } + } +} + + +func getAddresses(baseURL : String, authToken : String) ->Promise { + let realm = try! Realm() + let url = "\(baseURL)/addresses" + let headers : HTTPHeaders = [ + "Authorization": authToken + ] + + return Promise { seal in + Alamofire.request(url, method: .get, headers: headers) + .validate() + .responseJSON { response in + switch response.result { + + case .success: + let addressesJSON : JSON = JSON(response.result.value!) + for(_, json) : (String, JSON) in addressesJSON { + do { + try realm.write { + let addr = Address() + addr.id = json["id"].intValue + addr.apartment = json["id"].stringValue + addr.city = json["city"].stringValue + addr.country = json["country"].stringValue + addr.lat = json["lat"].doubleValue + addr.long = json["long"].doubleValue + addr.state = json["state"].stringValue + addr.street1 = json["street1"].stringValue + addr.street2 = json["street2"].stringValue + addr.zip = json["zip"].stringValue + addr.zoneId = json["zoneid"].intValue + realm.add(addr, update: true) + } + } catch { + seal.reject(error) + } + } + seal.fulfill(true) + case .failure(let error): + seal.reject(error) + } + } + } + +} + +func getGateways(baseURL : String, authToken : String) -> Promise { + let realm = try! Realm() + let url = "\(baseURL)/gateways" + let headers : HTTPHeaders = [ + "Authorization": authToken + ] + + return Promise { seal in + Alamofire.request(url, method: .get, headers: headers) + .responseJSON { response in + switch response.result { + + case .success: + let gatewaysJSON : JSON = JSON(response.result.value!) + for(_, json) : (String, JSON) in gatewaysJSON { + + do { + try realm.write { + let gtw = Gateway() + gtw.addressId = json["addressId"].intValue + gtw.companyId = json["companyId"].intValue + gtw.diaVersion = json["diaVersion"].stringValue + gtw.gatewayConfigurationId = json["gatewayConfigurationId"].intValue + gtw.gatewayTypeId = json["gatewayTypeId"].intValue + gtw.id = json["id"].intValue + gtw.macAddress = json["macAddress"].stringValue + gtw.name = json["name"].stringValue + gtw.panId = json["panId"].stringValue + gtw.tenantId = json["tenantId"].intValue + gtw.userId = json["userId"].intValue + + let associatedAddress = realm.objects(Address.self).filter("id == %d", gtw.addressId).first + + gtw.address = associatedAddress + realm.add(gtw, update: true) + } + } catch { + seal.reject(error) + } + + + + + } + seal.fulfill(true) + case .failure(let error): + seal.reject(error) + } + } + } +} + +func getDevices(baseURL : String, authToken : String) ->Promise { + let realm = try! Realm() + let url = "\(baseURL)/devices" + let headers : HTTPHeaders = [ + "Authorization": authToken + ] + + return Promise { seal in + Alamofire.request(url, method: .get, headers: headers) + .validate() + .responseJSON { response in + + switch response.result { + + case .success: + let devicesJSON : JSON = JSON(response.result.value!) + for(_, json) : (String, JSON) in devicesJSON { + do { + try realm.write { + let dev = Device() + dev.companyId = json["companyId"].intValue + dev.deviceTypeId = json["deviceTypeId"].intValue + dev.gatewayId = json["gatewayId"].intValue + dev.id = json["id"].intValue + dev.macAddress = json["macAddress"].stringValue + dev.techName = json["techname"].stringValue + dev.tenantId = json["tenantId"].intValue + dev.vanityName = json["vanityName"].stringValue + + let pGateway = realm.objects(Gateway.self).filter("id == %d", dev.gatewayId).first + let pDeviceType = realm.objects(DeviceType.self).filter("id == %d", dev.deviceTypeId).first + + realm.add(dev, update: true) + pGateway?.devices.append(dev) + pDeviceType?.devices.append(dev) + } + } catch { + seal.reject(error) + } + } + seal.fulfill(true) + case .failure(let error): + seal.reject(error) + } + } + } +} + +func getChannels(deviceTypeId: Int, baseURL : String, authToken : String) -> Promise { + let realm = try! Realm() + let url = "\(baseURL)/devicetypes/\(deviceTypeId)/channels" + let headers : HTTPHeaders = [ + "Authorization": authToken + ] + + return Promise { seal in + Alamofire.request(url, method: .get, headers: headers) + .responseJSON { response in + switch response.result { + + case .success: + let channelsJSON : JSON = JSON(response.result.value!) + for(_, json) : (String, JSON) in channelsJSON { + do { + try realm.write { + let ch = Channel() + ch.channelType = json["channelType"].intValue + ch.dataType = json["dataType"].intValue + ch.defaultValue = json["defaultValue"].stringValue + ch.deviceTypeId = json["deviceTypeId"].intValue + ch.fromMe = json["fromMe"].boolValue + ch.helpExplanation = json["helpExplanation"].stringValue + ch.id = json["id"].intValue + ch.io = json["io"].boolValue + ch.name = json["name"].stringValue + ch.regex = json["regex"].stringValue + ch.regexErrMsg = json["regexErrMsg"].stringValue + ch.subTitle = json["subTitle"].stringValue + + let pDeviceType = realm.objects(DeviceType.self).filter("id == %d", ch.deviceTypeId).first + + realm.add(ch, update: true) + pDeviceType?.channels.append(ch) + + } + } catch { + seal.reject(error) + } + } + seal.fulfill(true) + case .failure(let error): + seal.reject(error) + } + } + } +} + + +func getChannelValues(deviceId: Int, baseURL : String, authToken : String) -> Promise { + let realm = try! Realm() + let url = "\(baseURL)/devices/\(deviceId)/values" + let headers : HTTPHeaders = [ + "Authorization": authToken + ] + + return Promise { prom in + Alamofire.request(url, method: .get, headers: headers) + .responseJSON { response in + switch response.result { + + case .success: + let channelValJSON : JSON = JSON(response.result.value!) + + for(chName, json) : (String, JSON) in channelValJSON { + do { + try realm.write { + let chv = ChanValue() + chv.uid = "\(deviceId).\(chName)" + chv.name = chName + chv.value = json["value"].stringValue + chv.timestamp = json["timestamp"].intValue + + realm.add(chv, update: true) + realm.objects(Device.self).filter("id == %d", deviceId).first?.values.append(chv) + } + } catch { + prom.reject(error) + } + } + prom.fulfill(true) + case .failure(let error): + prom.reject(error) + } + } + } +} + +func getChannelHistory(deviceId: Int, channelId : Int, baseURL : String, authToken : String) -> Promise<[ChannelHistoryValue]> { + let url = "\(baseURL)/devices/\(deviceId)/values/\(channelId)" + let headers : HTTPHeaders = [ + "Authorization": authToken + ] + + return Promise { promise in + Alamofire.request(url, method: .get, headers: headers) + .responseJSON { response in + switch response.result { + + case .success: + let channelHistoryJSON : JSON = JSON(response.result.value!) + var channelHistory = [ChannelHistoryValue]() + for(_, json) : (String, JSON) in channelHistoryJSON { + let chHistVal = ChannelHistoryValue() + chHistVal.timestamp = Date(timeIntervalSince1970: Double(json["timestamp"].intValue)) + chHistVal.value = json["value"].stringValue + channelHistory.append(chHistVal) + } + channelHistory.reverse() + promise.fulfill(channelHistory) + case .failure(let error): + promise.reject(error) + } + } + } +} + +func writeChannelValue(deviceId: Int, channelName: String, value : String, baseURL : String, authToken : String) -> Promise { + let timestamp: Int = Int(Date().timeIntervalSince1970) + var channelJson : JSON = JSON() + channelJson["name"].string = channelName + channelJson["timestamp"].int = timestamp + channelJson["value"].string = value + + var listJson = JSON() + listJson.arrayObject = [channelJson] + + let url = "\(baseURL)/devices/\(deviceId)/values" + let headers : HTTPHeaders = [ + "Authorization": authToken + ] + + + + return Promise { promise in + Alamofire.request(url, method: .put, parameters: [:], encoding: listJson.rawString()!, headers: headers) + .response { response in + if response.response?.statusCode == 200 { + promise.fulfill(true) + } else { + promise.reject(String(response.response!.statusCode) as! Error) + } + } + } + +} + +extension String: ParameterEncoding { + + public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { + var request = try urlRequest.asURLRequest() + request.httpBody = data(using: .utf8, allowLossyConversion: false) + return request + } + +} + + diff --git a/pocloud/Controller/NavigationController.swift b/pocloud/Controller/NavigationController.swift new file mode 100644 index 0000000..babb2fd --- /dev/null +++ b/pocloud/Controller/NavigationController.swift @@ -0,0 +1,21 @@ +// +// NavigationController.swift +// pocloud +// +// Created by Patrick McDonagh on 5/29/18. +// Copyright © 2018 patrickjmcd. All rights reserved. +// + +import UIKit +import ChameleonFramework + +class NavigationController: UINavigationController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + self.navigationBar.tintColor = UIColor.flatSkyBlue() + } + +} diff --git a/pocloud/View/Base.lproj/Main.storyboard b/pocloud/View/Base.lproj/Main.storyboard index 2a5cfe7..1da3a43 100644 --- a/pocloud/View/Base.lproj/Main.storyboard +++ b/pocloud/View/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ - + @@ -655,10 +655,11 @@ - + +