Refactor to remove redundancies

This commit is contained in:
Patrick McDonagh
2018-05-29 20:58:07 -05:00
parent 53ddf1b15e
commit 84af67cb1a
13 changed files with 839 additions and 706 deletions

View File

@@ -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 = "<group>"; };
0121D20D9E8E591D410348DEEC8419AD /* RLMArray_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMArray_Private.h; path = include/RLMArray_Private.h; sourceTree = "<group>"; };
0186D7FF06B2AA0CF675B262569B6875 /* RLMSyncPermission.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncPermission.mm; path = Realm/RLMSyncPermission.mm; sourceTree = "<group>"; };
0186D7FF06B2AA0CF675B262569B6875 /* RLMSyncPermission.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncPermission.mm; path = Realm/RLMSyncPermission.mm; sourceTree = "<group>"; };
0257ED3312238D6F28490F9540A4D92F /* RLMRealmConfiguration+Sync.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RLMRealmConfiguration+Sync.h"; path = "include/RLMRealmConfiguration+Sync.h"; sourceTree = "<group>"; };
033BECE918B1FBD37D5C586FDB9A88FE /* SVProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SVProgressHUD-umbrella.h"; sourceTree = "<group>"; };
041546C28FAD9947BD99E5DA0DAB76DE /* Pods-pocloud-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-pocloud-resources.sh"; sourceTree = "<group>"; };
05C09D0374B427D3E107ED81E4CA546E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
067F73E79FC632FA973441E5B3D87BFA /* ChameleonFramework.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ChameleonFramework.modulemap; sourceTree = "<group>"; };
069859A775F881E0108466D6B55A9F1B /* Realm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Realm.h; path = include/Realm.h; sourceTree = "<group>"; };
0712E727FA0BD0C1005CFE322655ECAF /* sync_config.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_config.cpp; path = Realm/ObjectStore/src/sync/sync_config.cpp; sourceTree = "<group>"; };
0749864DB54B08D2F4FEC5B20848E8CE /* RLMUpdateChecker.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMUpdateChecker.mm; path = Realm/RLMUpdateChecker.mm; sourceTree = "<group>"; };
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 = "<group>"; };
0749864DB54B08D2F4FEC5B20848E8CE /* RLMUpdateChecker.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMUpdateChecker.mm; path = Realm/RLMUpdateChecker.mm; sourceTree = "<group>"; };
07E6790A3D1E3164684BAFAF643F949B /* RLMCollection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMCollection.h; path = include/RLMCollection.h; sourceTree = "<group>"; };
0850078DD2527CF121657494F188F14B /* collection_change_builder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_change_builder.cpp; path = Realm/ObjectStore/src/impl/collection_change_builder.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
08D74B2C583EA62F89EC057648DBE5A3 /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = "<group>"; };
0959BDEE1293E37DF38F776CB3C4BB26 /* ChameleonFramework-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ChameleonFramework-dummy.m"; sourceTree = "<group>"; };
09BB08D7F1E09355F8763CBD15AE482A /* RLMMigration.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMMigration.mm; path = Realm/RLMMigration.mm; sourceTree = "<group>"; };
09BB08D7F1E09355F8763CBD15AE482A /* RLMMigration.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMMigration.mm; path = Realm/RLMMigration.mm; sourceTree = "<group>"; };
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 = "<group>"; };
0C08AEA77E2EE782FBB518969B921C38 /* librealmcore-ios.a */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = archive.ar; name = "librealmcore-ios.a"; path = "core/librealmcore-ios.a"; sourceTree = "<group>"; };
0C28171636B6478CBCAC65064B00BA52 /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = "<group>"; };
0CB0DA25E9DA1C92615FAD91A904DF57 /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = "<group>"; };
0D65ABDA10FB6FAF97F621D9415A1578 /* LinkingObjects.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinkingObjects.swift; path = RealmSwift/LinkingObjects.swift; sourceTree = "<group>"; };
0DFBADAC198E4113D3BB18E0483B367B /* RLMResults.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMResults.mm; path = Realm/RLMResults.mm; sourceTree = "<group>"; };
0DFBADAC198E4113D3BB18E0483B367B /* RLMResults.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMResults.mm; path = Realm/RLMResults.mm; sourceTree = "<group>"; };
0E6D8EBEE41AAC8803400533591C2230 /* ThreadSafeReference.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThreadSafeReference.swift; path = RealmSwift/ThreadSafeReference.swift; sourceTree = "<group>"; };
0FCBC5B3C38D32A7F45D1DA22BD87B65 /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = "<group>"; };
115A33401E0A120F11554A919253CB53 /* ImageModifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageModifier.swift; path = Sources/ImageModifier.swift; sourceTree = "<group>"; };
11C5B97A8303AF21EE7F79D66F93DCC1 /* Realm-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Realm-prefix.pch"; sourceTree = "<group>"; };
12F9F10AAE236243AA10204AF34BC750 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
133826FF8FF5FE0D9AE70552ACFF1FF9 /* RLMPredicateUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMPredicateUtil.mm; path = Realm/RLMPredicateUtil.mm; sourceTree = "<group>"; };
133826FF8FF5FE0D9AE70552ACFF1FF9 /* RLMPredicateUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMPredicateUtil.mm; path = Realm/RLMPredicateUtil.mm; sourceTree = "<group>"; };
13F70639283568A70007C70A85CC543D /* ImageDownloader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageDownloader.swift; path = Sources/ImageDownloader.swift; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
167D1E618C7945529947657FF4015F66 /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = "<group>"; };
1683F36890A30C35C6CF6C85705834C3 /* Kingfisher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-prefix.pch"; sourceTree = "<group>"; };
186BBB5BF293E847606EB9ED758B36A9 /* Realm.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Realm.modulemap; sourceTree = "<group>"; };
19B6F9814D5C8F98661440AB4B6B37CD /* RLMNetworkClient.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMNetworkClient.mm; path = Realm/RLMNetworkClient.mm; sourceTree = "<group>"; };
19B6F9814D5C8F98661440AB4B6B37CD /* RLMNetworkClient.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMNetworkClient.mm; path = Realm/RLMNetworkClient.mm; sourceTree = "<group>"; };
1A059D53313CF9882AE7A44B58170985 /* Property.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Property.swift; path = RealmSwift/Property.swift; sourceTree = "<group>"; };
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 = "<group>"; };
1C8CDE49478E71D0325DA17BCC70F9F1 /* primitive_list_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = primitive_list_notifier.cpp; path = Realm/ObjectStore/src/impl/primitive_list_notifier.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
1FEDBC380D7CCDDC3CCA561F541E677E /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = "<group>"; };
20C174A994D9149F1382445215556BD8 /* RLMRealmConfiguration.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMRealmConfiguration.mm; path = Realm/RLMRealmConfiguration.mm; sourceTree = "<group>"; };
2410CDE93220A09C799FCFE762F50744 /* RLMManagedArray.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMManagedArray.mm; path = Realm/RLMManagedArray.mm; sourceTree = "<group>"; };
20C174A994D9149F1382445215556BD8 /* RLMRealmConfiguration.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMRealmConfiguration.mm; path = Realm/RLMRealmConfiguration.mm; sourceTree = "<group>"; };
2410CDE93220A09C799FCFE762F50744 /* RLMManagedArray.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMManagedArray.mm; path = Realm/RLMManagedArray.mm; sourceTree = "<group>"; };
27DB3E20C26716CE1AC6AD951B44BB26 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
27F1908F5DC6B99B77DAA63A304ECE54 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = "<group>"; };
282ADBD426BF6ABFAC0BE91ED24B6CC0 /* RLMRealm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealm.h; path = include/RLMRealm.h; sourceTree = "<group>"; };
@@ -549,10 +549,10 @@
29EB1E52DAC6AA5B279E6AB0EE47275B /* RealmSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RealmSwift-umbrella.h"; sourceTree = "<group>"; };
2A32A5F933056AF0BB4CC991F44AE061 /* Pods-pocloud.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-pocloud.release.xcconfig"; sourceTree = "<group>"; };
2A508549D773152C50D7A7F0D30E6C6B /* Thenable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Thenable.swift; path = Sources/Thenable.swift; sourceTree = "<group>"; };
2C69FE4D4B4A989F68FB329B1A5FFCFF /* RLMSyncPermissionResults.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncPermissionResults.mm; path = Realm/RLMSyncPermissionResults.mm; sourceTree = "<group>"; };
2D69C25F4DED73304CFC415FC060EC04 /* results.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = results.cpp; path = Realm/ObjectStore/src/results.cpp; sourceTree = "<group>"; };
2D6DB555DF052E561309BE6FF785B7D3 /* RLMArray.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMArray.mm; path = Realm/RLMArray.mm; sourceTree = "<group>"; };
2F6BE2672CF829FA8CE19678E9CEAF02 /* RLMClassInfo.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMClassInfo.mm; path = Realm/RLMClassInfo.mm; sourceTree = "<group>"; };
2C69FE4D4B4A989F68FB329B1A5FFCFF /* RLMSyncPermissionResults.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncPermissionResults.mm; path = Realm/RLMSyncPermissionResults.mm; sourceTree = "<group>"; };
2D69C25F4DED73304CFC415FC060EC04 /* results.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = results.cpp; path = Realm/ObjectStore/src/results.cpp; sourceTree = "<group>"; };
2D6DB555DF052E561309BE6FF785B7D3 /* RLMArray.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMArray.mm; path = Realm/RLMArray.mm; sourceTree = "<group>"; };
2F6BE2672CF829FA8CE19678E9CEAF02 /* RLMClassInfo.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMClassInfo.mm; path = Realm/RLMClassInfo.mm; sourceTree = "<group>"; };
2FB23727980C986278B33391A4EDA98D /* RLMSyncSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncSession.h; path = include/RLMSyncSession.h; sourceTree = "<group>"; };
2FBA2EC0211955D59DF2AD89333A60D1 /* SVProgressHUD.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SVProgressHUD.xcconfig; sourceTree = "<group>"; };
2FE771299449CB0E7533B4DC5F58E724 /* Results.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Results.swift; path = RealmSwift/Results.swift; sourceTree = "<group>"; };
@@ -560,31 +560,31 @@
302761828D29BA3715E56776C64D6459 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Image.swift; sourceTree = "<group>"; };
30BF8581417F8D6FA8F7432B33694097 /* Optional.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Optional.swift; path = RealmSwift/Optional.swift; sourceTree = "<group>"; };
3213EEED9AF86A39E2C3DE4CC578BB10 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = "<group>"; };
332D7415C3936F8158E7020EF9F244A9 /* RLMSyncManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncManager.mm; path = Realm/RLMSyncManager.mm; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
35F8599E05E36E8DA489400EE58FEF9A /* RLMSyncConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncConfiguration.h; path = include/RLMSyncConfiguration.h; sourceTree = "<group>"; };
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 = "<group>"; };
36DF68D5C5DC5D2F0592370CF3E091D3 /* Kingfisher.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Kingfisher.xcconfig; sourceTree = "<group>"; };
380F6390028F12A9814D9C30B925CAC2 /* RLMObjectStore.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObjectStore.mm; path = Realm/RLMObjectStore.mm; sourceTree = "<group>"; };
380F6390028F12A9814D9C30B925CAC2 /* RLMObjectStore.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMObjectStore.mm; path = Realm/RLMObjectStore.mm; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
390A84B69E0EA0B4B0235044426ADB80 /* RLMRealm_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealm_Private.h; path = include/RLMRealm_Private.h; sourceTree = "<group>"; };
390C619DF008E7A770BFAB5B993D881B /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = "<group>"; };
395EE7831170F49D37AF9DD819F59595 /* RLMAnalytics.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMAnalytics.mm; path = Realm/RLMAnalytics.mm; sourceTree = "<group>"; };
395EE7831170F49D37AF9DD819F59595 /* RLMAnalytics.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMAnalytics.mm; path = Realm/RLMAnalytics.mm; sourceTree = "<group>"; };
39805068056EB58D370D71A27CD2F678 /* Pods-pocloud-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-pocloud-umbrella.h"; sourceTree = "<group>"; };
39F891C0D105C3D7B82AC48E01930036 /* ImageProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageProcessor.swift; path = Sources/ImageProcessor.swift; sourceTree = "<group>"; };
3A9097BC27D5E2DB6D3ECFAA0B466B9D /* Indicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Indicator.swift; path = Sources/Indicator.swift; sourceTree = "<group>"; };
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 = "<group>"; };
3B239DB3F6FEBC2871B6BDC37B3800A9 /* RLMRealmConfiguration_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealmConfiguration_Private.h; path = include/RLMRealmConfiguration_Private.h; sourceTree = "<group>"; };
3B59FBFBFC8197BF796B725D996AE767 /* RLMRealmUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMRealmUtil.mm; path = Realm/RLMRealmUtil.mm; sourceTree = "<group>"; };
3B59FBFBFC8197BF796B725D996AE767 /* RLMRealmUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMRealmUtil.mm; path = Realm/RLMRealmUtil.mm; sourceTree = "<group>"; };
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 = "<group>"; };
3D4975867781530628E20A11F465EA59 /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = "<group>"; };
3DD5FB6C72EDD9F0B7AC128432922FFE /* index_set.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = index_set.cpp; path = Realm/ObjectStore/src/index_set.cpp; sourceTree = "<group>"; };
3DD5FB6C72EDD9F0B7AC128432922FFE /* index_set.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = index_set.cpp; path = Realm/ObjectStore/src/index_set.cpp; sourceTree = "<group>"; };
3EA602B674420FB05E049B058851313F /* SVRadialGradientLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVRadialGradientLayer.h; path = SVProgressHUD/SVRadialGradientLayer.h; sourceTree = "<group>"; };
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 = "<group>"; };
3F45EA5868823D57F7FFED4605299E54 /* RLMSwiftSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMSwiftSupport.m; path = Realm/RLMSwiftSupport.m; sourceTree = "<group>"; };
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 = "<group>"; };
@@ -592,11 +592,11 @@
409A0399538CBF6F3721F84A24A03952 /* RLMSchema.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSchema.h; path = include/RLMSchema.h; sourceTree = "<group>"; };
40A162E18F4431A9E2870119C629D7C2 /* RealmSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RealmSwift.xcconfig; sourceTree = "<group>"; };
40E5049E646905E9AE4E0F2101F206D8 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = "<group>"; };
41158C77FE22B096020E449E4DA92CBB /* RLMSyncSession.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncSession.mm; path = Realm/RLMSyncSession.mm; sourceTree = "<group>"; };
42272772E19D27916CD170701A1B18BD /* RLMSyncConfiguration.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncConfiguration.mm; path = Realm/RLMSyncConfiguration.mm; sourceTree = "<group>"; };
41158C77FE22B096020E449E4DA92CBB /* RLMSyncSession.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncSession.mm; path = Realm/RLMSyncSession.mm; sourceTree = "<group>"; };
42272772E19D27916CD170701A1B18BD /* RLMSyncConfiguration.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncConfiguration.mm; path = Realm/RLMSyncConfiguration.mm; sourceTree = "<group>"; };
430E903FD52B93897ABB8515CD13B8B6 /* RLMListBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMListBase.h; path = include/RLMListBase.h; sourceTree = "<group>"; };
4348319519D243801CC6340DAB87B5DB /* SVProgressAnimatedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVProgressAnimatedView.m; path = SVProgressHUD/SVProgressAnimatedView.m; sourceTree = "<group>"; };
43D16CE795ACD3F14AEB1903C18AD413 /* RLMSyncUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncUtil.mm; path = Realm/RLMSyncUtil.mm; sourceTree = "<group>"; };
43D16CE795ACD3F14AEB1903C18AD413 /* RLMSyncUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncUtil.mm; path = Realm/RLMSyncUtil.mm; sourceTree = "<group>"; };
44D6405B149A6D18AE16727425E41474 /* Alamofire+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Alamofire+Promise.swift"; path = "Extensions/Alamofire/Sources/Alamofire+Promise.swift"; sourceTree = "<group>"; };
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 = "<group>"; };
@@ -611,13 +611,13 @@
4EFC3410355C9EEA94248BDE754DC978 /* KingfisherManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherManager.swift; path = Sources/KingfisherManager.swift; sourceTree = "<group>"; };
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 = "<group>"; };
4FDCC000ECBCDDBF14532533EB299B4A /* Pods-pocloud-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-pocloud-acknowledgements.markdown"; sourceTree = "<group>"; };
503A96E996C98B2FECDAD7AD4FF0CC25 /* RLMRealm.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMRealm.mm; path = Realm/RLMRealm.mm; sourceTree = "<group>"; };
503A96E996C98B2FECDAD7AD4FF0CC25 /* RLMRealm.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMRealm.mm; path = Realm/RLMRealm.mm; sourceTree = "<group>"; };
50B057067CD3D377D62F03A87237D7D2 /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = "<group>"; };
5286C75A0CB7B7AAB14AA8069F68005A /* Sync.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sync.swift; path = RealmSwift/Sync.swift; sourceTree = "<group>"; };
53A222CFEE05DA8169D1438B3C83EC9C /* SVProgressHUD.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = SVProgressHUD.bundle; path = SVProgressHUD/SVProgressHUD.bundle; sourceTree = "<group>"; };
5402AF9328A911176F8326FA84222F4D /* RLMSyncCredentials.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMSyncCredentials.m; path = Realm/RLMSyncCredentials.m; sourceTree = "<group>"; };
55BA3B5637937797089F9EAC9C8C870F /* RealmConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RealmConfiguration.swift; path = RealmSwift/RealmConfiguration.swift; sourceTree = "<group>"; };
55DD0F1A355F1B69276E60F293928D31 /* placeholder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = placeholder.cpp; path = Realm/ObjectStore/src/placeholder.cpp; sourceTree = "<group>"; };
55DD0F1A355F1B69276E60F293928D31 /* placeholder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = placeholder.cpp; path = Realm/ObjectStore/src/placeholder.cpp; sourceTree = "<group>"; };
561AFA0DCE0629E26D5FFB38B83388E4 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = "<group>"; };
57B6DF119EF2A8AC5070E5E6C8352A03 /* Chameleon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Chameleon.h; path = "Pod/Classes/Objective-C/Chameleon.h"; sourceTree = "<group>"; };
57C6D5D25D90EADCEDE4BBE2732A35A0 /* SwiftyJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftyJSON.modulemap; sourceTree = "<group>"; };
@@ -625,37 +625,37 @@
58E2B8F8993302603FD006E07C2CFC72 /* Kingfisher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-umbrella.h"; sourceTree = "<group>"; };
5911D0717F4D9EBB132AC3842B3CFB34 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
5968E3F1ADB1F6151D68974774557F16 /* NSError+RLMSync.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError+RLMSync.m"; path = "Realm/NSError+RLMSync.m"; sourceTree = "<group>"; };
5A07A8A8028AE1B33EAAA7979DB6B847 /* list_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = list_notifier.cpp; path = Realm/ObjectStore/src/impl/list_notifier.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
5AB2A81FB0FDFC0048FBB8A05BAB2447 /* Kingfisher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Kingfisher.modulemap; sourceTree = "<group>"; };
5AC75EF75E9BA81C6A4C393D8867A083 /* RLMOptionalBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMOptionalBase.h; path = include/RLMOptionalBase.h; sourceTree = "<group>"; };
5AE42C969A99D38B4F7FBE25B00A962F /* RLMRealm_Dynamic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealm_Dynamic.h; path = include/RLMRealm_Dynamic.h; sourceTree = "<group>"; };
5B951F4057A699F027DAED0A10480665 /* RLMOptionalBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMOptionalBase.mm; path = Realm/RLMOptionalBase.mm; sourceTree = "<group>"; };
5B951F4057A699F027DAED0A10480665 /* RLMOptionalBase.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMOptionalBase.mm; path = Realm/RLMOptionalBase.mm; sourceTree = "<group>"; };
5C7DB055A9FF859C8D9B207B0EBEA67E /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = "<group>"; };
5DECE4A96DC82F1788D2496E380388BD /* thread_safe_reference.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = thread_safe_reference.cpp; path = Realm/ObjectStore/src/thread_safe_reference.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
5E0854B11E127B790CB4C391D34D531A /* SVProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SVProgressHUD.modulemap; sourceTree = "<group>"; };
5E1324D4858E13AEB922B35546D2EF41 /* ChameleonConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ChameleonConstants.m; path = "Pod/Classes/Objective-C/ChameleonConstants.m"; sourceTree = "<group>"; };
5E59D14AB66092E668FA3724120439E3 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = "<group>"; };
5E8802C37AC6734C5B00455CC46F0A68 /* RLMObjectSchema.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObjectSchema.mm; path = Realm/RLMObjectSchema.mm; sourceTree = "<group>"; };
5E8802C37AC6734C5B00455CC46F0A68 /* RLMObjectSchema.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMObjectSchema.mm; path = Realm/RLMObjectSchema.mm; sourceTree = "<group>"; };
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 = "<group>"; };
5F27F3A93D04D26D8BE8E6A4CDCE3CAC /* RLMProperty.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMProperty.mm; path = Realm/RLMProperty.mm; sourceTree = "<group>"; };
5F27F3A93D04D26D8BE8E6A4CDCE3CAC /* RLMProperty.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMProperty.mm; path = Realm/RLMProperty.mm; sourceTree = "<group>"; };
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 = "<group>"; };
5FCCA2362239AA24556A9225003BC1C2 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = "<group>"; };
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 = "<group>"; };
6603939CC5A8D3E59297D5C771964301 /* RLMThreadSafeReference.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMThreadSafeReference.h; path = include/RLMThreadSafeReference.h; sourceTree = "<group>"; };
6677B1E6745CD047E622914F3945E673 /* SwiftChart-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftChart-dummy.m"; sourceTree = "<group>"; };
66E9A978132CA9F57F2D4CA537E462AE /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = "<group>"; };
66F41B50D8310E025A7BBEE9B370D185 /* ObjectSchema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObjectSchema.swift; path = RealmSwift/ObjectSchema.swift; sourceTree = "<group>"; };
679C7C7587D40218B193B04091EF22BB /* object.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object.cpp; path = Realm/ObjectStore/src/object.cpp; sourceTree = "<group>"; };
679C7C7587D40218B193B04091EF22BB /* object.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = object.cpp; path = Realm/ObjectStore/src/object.cpp; sourceTree = "<group>"; };
67F991C8B8367174AFF53BF7D8D6F1EE /* SwiftChart.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftChart.modulemap; sourceTree = "<group>"; };
69E32A2E33DC69D7CAF4DCC47F49ADB0 /* Aliases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Aliases.swift; path = RealmSwift/Aliases.swift; sourceTree = "<group>"; };
6A098E23B03FD37283AE835A4243531B /* work_queue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = work_queue.cpp; path = Realm/ObjectStore/src/sync/impl/work_queue.cpp; sourceTree = "<group>"; };
6BBE938FF7CE8F598642E2163782F1E8 /* RLMSyncSubscription.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncSubscription.mm; path = Realm/RLMSyncSubscription.mm; sourceTree = "<group>"; };
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 = "<group>"; };
6BBE938FF7CE8F598642E2163782F1E8 /* RLMSyncSubscription.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncSubscription.mm; path = Realm/RLMSyncSubscription.mm; sourceTree = "<group>"; };
6BCC3AC3975CFE44021DC84EC0D0F57E /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = "<group>"; };
6C329AB32D0C2C0E8F3300D62652EA29 /* RLMCollection.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMCollection.mm; path = Realm/RLMCollection.mm; sourceTree = "<group>"; };
6C329AB32D0C2C0E8F3300D62652EA29 /* RLMCollection.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMCollection.mm; path = Realm/RLMCollection.mm; sourceTree = "<group>"; };
6C88151378845D023AF67DFB3479F7B9 /* Object.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Object.swift; path = RealmSwift/Object.swift; sourceTree = "<group>"; };
6D398BF7F0C68524EEBB8EC767B71417 /* SwiftVersion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftVersion.swift; path = RealmSwift/SwiftVersion.swift; sourceTree = "<group>"; };
6DCAE60115007E4EDEABA45D6B13CBF1 /* RLMRealmConfiguration+Sync.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = "RLMRealmConfiguration+Sync.mm"; path = "Realm/RLMRealmConfiguration+Sync.mm"; sourceTree = "<group>"; };
6DCAE60115007E4EDEABA45D6B13CBF1 /* RLMRealmConfiguration+Sync.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = "RLMRealmConfiguration+Sync.mm"; path = "Realm/RLMRealmConfiguration+Sync.mm"; sourceTree = "<group>"; };
6E3C7CBB281D7EFA8906D97D0D74E98F /* NSError+RLMSync.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError+RLMSync.h"; path = "include/NSError+RLMSync.h"; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
70D255BBF18A3D18FC6BDFF3AAB13DD6 /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = "<group>"; };
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 = "<group>"; };
74474A925762D7E3652C299BF5E17758 /* sync_permission.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_permission.cpp; path = Realm/ObjectStore/src/sync/sync_permission.cpp; sourceTree = "<group>"; };
75CFB0970AEB893D68874B9EB5B7DDF8 /* transact_log_handler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = transact_log_handler.cpp; path = Realm/ObjectStore/src/impl/transact_log_handler.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
75ED9E29508835F901F7BADBF7FA83B0 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = "<group>"; };
76A24C263F2C65318ED5356308F9EB92 /* partial_sync.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = partial_sync.cpp; path = Realm/ObjectStore/src/sync/partial_sync.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
77B5BC603C2749DE8E87B54B8DC083A4 /* Util.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Util.swift; path = RealmSwift/Util.swift; sourceTree = "<group>"; };
77EEC43ED2E8ED0420AE5DC19CF79C92 /* RLMRealm+Sync.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = "RLMRealm+Sync.mm"; path = "Realm/RLMRealm+Sync.mm"; sourceTree = "<group>"; };
789902666C34CFD7875524CC17F0F84C /* RLMUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMUtil.mm; path = Realm/RLMUtil.mm; sourceTree = "<group>"; };
77EEC43ED2E8ED0420AE5DC19CF79C92 /* RLMRealm+Sync.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = "RLMRealm+Sync.mm"; path = "Realm/RLMRealm+Sync.mm"; sourceTree = "<group>"; };
789902666C34CFD7875524CC17F0F84C /* RLMUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMUtil.mm; path = Realm/RLMUtil.mm; sourceTree = "<group>"; };
7904EA655451E47F1B178CD6080E46B3 /* Pods-pocloud.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-pocloud.debug.xcconfig"; sourceTree = "<group>"; };
7B694E64D2F0157A60AE632464FD13F2 /* ImagePrefetcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePrefetcher.swift; path = Sources/ImagePrefetcher.swift; sourceTree = "<group>"; };
7B782A520D3CCEFE5491F8C4DF84B547 /* ChameleonConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ChameleonConstants.h; path = "Pod/Classes/Objective-C/ChameleonConstants.h"; sourceTree = "<group>"; };
7BCD9D98544104A361E93BA03EDE97FB /* RLMAccessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMAccessor.h; path = include/RLMAccessor.h; sourceTree = "<group>"; };
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 = "<group>"; };
7DDC855EDB6F0CDABC40595E645987EF /* RLMThreadSafeReference.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMThreadSafeReference.mm; path = Realm/RLMThreadSafeReference.mm; sourceTree = "<group>"; };
7DDC855EDB6F0CDABC40595E645987EF /* RLMThreadSafeReference.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMThreadSafeReference.mm; path = Realm/RLMThreadSafeReference.mm; sourceTree = "<group>"; };
7EB8C25BC9A862D2A4433D94192A3441 /* RLMObjectBase_Dynamic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectBase_Dynamic.h; path = include/RLMObjectBase_Dynamic.h; sourceTree = "<group>"; };
7EDAEB2432ADCB64A6F0DA876845C11E /* RLMConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMConstants.h; path = include/RLMConstants.h; sourceTree = "<group>"; };
7F80AF0E7104F15B7086BE4CDC817DBC /* realm_coordinator.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = realm_coordinator.cpp; path = Realm/ObjectStore/src/impl/realm_coordinator.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
7FB017EC13054E1B53F9CA04B114CC8B /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Filter.swift; sourceTree = "<group>"; };
816D222060828A34C1E58D402F34FAE8 /* SwiftyJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyJSON-dummy.m"; sourceTree = "<group>"; };
83F2F7DBFD5DE0AAFDF63A26784B13FE /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -695,62 +695,62 @@
8B543979552007AA1891F26D83762863 /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = "<group>"; };
8BC73ED419B1086C4CE85240BBB98184 /* SwiftChart-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftChart-prefix.pch"; sourceTree = "<group>"; };
8D24C0044A30640775D9F8AC3E7AA60C /* ThreadHelper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThreadHelper.swift; path = Sources/ThreadHelper.swift; sourceTree = "<group>"; };
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 = "<group>"; };
911ED0B37F892FF5B2F9A5ABE00F4AB6 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = "<group>"; };
9219FD5E8223E62D5964FCE2990ADC6B /* FormatIndicatedCacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FormatIndicatedCacheSerializer.swift; path = Sources/FormatIndicatedCacheSerializer.swift; sourceTree = "<group>"; };
9230A72F1AEC1BADDCC7186EB25BE0C7 /* RLMObject.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObject.mm; path = Realm/RLMObject.mm; sourceTree = "<group>"; };
92B8EF7ABDC366751FCC007B516BBBA0 /* sync_session.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_session.cpp; path = Realm/ObjectStore/src/sync/sync_session.cpp; sourceTree = "<group>"; };
9230A72F1AEC1BADDCC7186EB25BE0C7 /* RLMObject.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMObject.mm; path = Realm/RLMObject.mm; sourceTree = "<group>"; };
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 = "<group>"; };
936CD07388EDC2494410B80CC4717FF1 /* SVProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVProgressHUD.h; path = SVProgressHUD/SVProgressHUD.h; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
9468ECB6C02355492984982A77714C41 /* RLMObjectBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObjectBase.h; path = include/RLMObjectBase.h; sourceTree = "<group>"; };
94BC712E6269E4A7B550E839B34FED84 /* list.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = list.cpp; path = Realm/ObjectStore/src/list.cpp; sourceTree = "<group>"; };
94E08983C35624D67250E6A2A7176A54 /* sync_user.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_user.cpp; path = Realm/ObjectStore/src/sync/sync_user.cpp; sourceTree = "<group>"; };
94BC712E6269E4A7B550E839B34FED84 /* list.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = list.cpp; path = Realm/ObjectStore/src/list.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
959493D71FD0A4BA2E655D786ACFCD6B /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = "<group>"; };
960A4DBBFF871779B81F9E045539A9B8 /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = "<group>"; };
96C3869CF6A43B7BD1F899A5081430AD /* CacheSerializer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheSerializer.swift; path = Sources/CacheSerializer.swift; sourceTree = "<group>"; };
96CF6794C81EE2A4C752C5DC83A892FD /* shared_realm.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = shared_realm.cpp; path = Realm/ObjectStore/src/shared_realm.cpp; sourceTree = "<group>"; };
96CF6794C81EE2A4C752C5DC83A892FD /* shared_realm.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = shared_realm.cpp; path = Realm/ObjectStore/src/shared_realm.cpp; sourceTree = "<group>"; };
97A85459BEEB22063FD286FF84A995C4 /* RLMConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMConstants.m; path = Realm/RLMConstants.m; sourceTree = "<group>"; };
98BE3F0DB94502FAD3F69D53423B52D2 /* RLMSyncManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncManager.h; path = include/RLMSyncManager.h; sourceTree = "<group>"; };
993980085140CB356A42A3D861DC0CD1 /* Chart.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Chart.swift; path = Source/Chart.swift; sourceTree = "<group>"; };
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 = "<group>"; };
9AE123E69DA163431F9826FCDDFE0622 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
9B50A11F03F5E6C84500E56E4B6849DE /* Pods-pocloud-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-pocloud-frameworks.sh"; sourceTree = "<group>"; };
9BEB907E124F77BA9A38B31E88C029A4 /* RLMQueryUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMQueryUtil.mm; path = Realm/RLMQueryUtil.mm; sourceTree = "<group>"; };
9BEB907E124F77BA9A38B31E88C029A4 /* RLMQueryUtil.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMQueryUtil.mm; path = Realm/RLMQueryUtil.mm; sourceTree = "<group>"; };
9C6F33FE3CF07041C28098876552C5FA /* RLMSyncConfiguration_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncConfiguration_Private.h; path = include/RLMSyncConfiguration_Private.h; sourceTree = "<group>"; };
9CF1DD8BC8ED7A3E4721B3ACAE9A76D3 /* RLMAccessor.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMAccessor.mm; path = Realm/RLMAccessor.mm; sourceTree = "<group>"; };
9CF1DD8BC8ED7A3E4721B3ACAE9A76D3 /* RLMAccessor.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMAccessor.mm; path = Realm/RLMAccessor.mm; sourceTree = "<group>"; };
9D029DC1A613CFDFD9713293C0629203 /* AnimatedImageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnimatedImageView.swift; path = Sources/AnimatedImageView.swift; sourceTree = "<group>"; };
9D3CD9729DF02D7F14CBCD33D2D56A87 /* SVProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVProgressHUD.m; path = SVProgressHUD/SVProgressHUD.m; sourceTree = "<group>"; };
9E20F792726DCF3C9B39760070796596 /* RLMMigration_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMMigration_Private.h; path = include/RLMMigration_Private.h; sourceTree = "<group>"; };
A0388843F876AD8146F5BC509D916001 /* ChameleonMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ChameleonMacros.h; path = "Pod/Classes/Objective-C/ChameleonMacros.h"; sourceTree = "<group>"; };
A1DF647328528C03448741375AE3993B /* weak_realm_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = weak_realm_notifier.cpp; path = Realm/ObjectStore/src/impl/weak_realm_notifier.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
A46966049B213458C4F1837F7EAF5428 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = "<group>"; };
A479B3FFCD869510C99518C581F3CC3E /* SwiftChart.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftChart.xcconfig; sourceTree = "<group>"; };
A4D9C83C2F04C2EA10710B761189AB75 /* object_store.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object_store.cpp; path = Realm/ObjectStore/src/object_store.cpp; sourceTree = "<group>"; };
A4D9C83C2F04C2EA10710B761189AB75 /* object_store.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = object_store.cpp; path = Realm/ObjectStore/src/object_store.cpp; sourceTree = "<group>"; };
A5801F6E0E6189B6372DFC83650072DC /* Migration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Migration.swift; path = RealmSwift/Migration.swift; sourceTree = "<group>"; };
A84FE5497FF8CF4F39C206333259809A /* Pods-pocloud.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-pocloud.modulemap"; sourceTree = "<group>"; };
A8793A3FE332B791A8B3994B323FCBEE /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = "<group>"; };
A8840851AFFC0E461B5B935C155CE611 /* Pods-pocloud-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-pocloud-acknowledgements.plist"; sourceTree = "<group>"; };
A8A5C31425BBA75A7B674379EC000AA8 /* Pods-pocloud-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-pocloud-dummy.m"; sourceTree = "<group>"; };
A9B8919AB39D17A578CED457944217FF /* collection_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_notifier.cpp; path = Realm/ObjectStore/src/impl/collection_notifier.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
A9FFFD475E5F246FE9C10E3AD59F2DF9 /* ChameleonFramework-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ChameleonFramework-umbrella.h"; sourceTree = "<group>"; };
AA5A0770AD556EFD045A61522EF433DB /* object_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = object_notifier.cpp; path = Realm/ObjectStore/src/impl/object_notifier.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
AAE76F935413B0FAF7D92A096C9E7D52 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
ABBEE751FEE99D1B3841B73CAAA4EF2C /* RLMObservation.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMObservation.mm; path = Realm/RLMObservation.mm; sourceTree = "<group>"; };
ABBEE751FEE99D1B3841B73CAAA4EF2C /* RLMObservation.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMObservation.mm; path = Realm/RLMObservation.mm; sourceTree = "<group>"; };
AC1C57636899483A36A0683AF4DFA245 /* SwiftyJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-umbrella.h"; sourceTree = "<group>"; };
AC779ECCB944E8ADD37CE1D3304804B9 /* Kingfisher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Kingfisher-dummy.m"; sourceTree = "<group>"; };
AD1E07936EAB4A15168DA68310A4DF7B /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = "<group>"; };
ADDD57D0E4D5BBCBD1CEDFAF9506F54E /* RLMSyncUser.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncUser.mm; path = Realm/RLMSyncUser.mm; sourceTree = "<group>"; };
ADDD57D0E4D5BBCBD1CEDFAF9506F54E /* RLMSyncUser.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncUser.mm; path = Realm/RLMSyncUser.mm; sourceTree = "<group>"; };
AE88DC5DB31B209D9FEDA68534239E38 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = "<group>"; };
AF3202BCDE9338D96382AAFC69557E0C /* RealmSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RealmSwift-prefix.pch"; sourceTree = "<group>"; };
B04A3B8874B83F4558B31ADCD4D48784 /* RLMSyncCredentials.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncCredentials.h; path = include/RLMSyncCredentials.h; sourceTree = "<group>"; };
B1F47AFF559BBA2345ACDF2A2ECC38C1 /* Realm.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Realm.swift; path = RealmSwift/Realm.swift; sourceTree = "<group>"; };
B269550DDC991F08F069BBD57CFF1CF7 /* SVProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SVProgressHUD-dummy.m"; sourceTree = "<group>"; };
B27560F181AA3E49CA33193B3FBAA57B /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
B2C2B4488829465EC2AA197D6E1581B4 /* collection_notifications.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = collection_notifications.cpp; path = Realm/ObjectStore/src/collection_notifications.cpp; sourceTree = "<group>"; };
B2C2B4488829465EC2AA197D6E1581B4 /* collection_notifications.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = collection_notifications.cpp; path = Realm/ObjectStore/src/collection_notifications.cpp; sourceTree = "<group>"; };
B2C5BC8F9D3F74D15191F47FB7B5BADD /* ImageView+Kingfisher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ImageView+Kingfisher.swift"; path = "Sources/ImageView+Kingfisher.swift"; sourceTree = "<group>"; };
B33C26C5E25552E6B15683259CA5E7DA /* SwiftChart-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftChart-umbrella.h"; sourceTree = "<group>"; };
B578193AE36AEC6E5A4DD7ABA452296C /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = "<group>"; };
@@ -758,7 +758,7 @@
B6694706AE2206C12B59D754417F369C /* SVIndefiniteAnimatedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVIndefiniteAnimatedView.h; path = SVProgressHUD/SVIndefiniteAnimatedView.h; sourceTree = "<group>"; };
B792B5F4E88AF38723BE305EE68159CB /* Guarantee.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Guarantee.swift; path = Sources/Guarantee.swift; sourceTree = "<group>"; };
B8643B17061D5E3E247AD19C7FEB0A9A /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
BE8729FE5BD1DB20C41AB92A9AD2E0C2 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
BF9BEE78AB64896F7786F842E14C3D75 /* Schema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Schema.swift; path = RealmSwift/Schema.swift; sourceTree = "<group>"; };
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 = "<group>"; };
C3A19D76E413374358C330C6364B473F /* RLMSyncSubscription.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncSubscription.h; path = include/RLMSyncSubscription.h; sourceTree = "<group>"; };
C3C51B95FB2EFCB9C1A1B29C49D780A0 /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = "<group>"; };
C518CC0FB273D5CDAD64A638F6AF8789 /* system_configuration.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = system_configuration.cpp; path = Realm/ObjectStore/src/sync/impl/apple/system_configuration.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
C94AA744EFB890DE04E7980909D8DF33 /* RLMSyncManager_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncManager_Private.h; path = include/RLMSyncManager_Private.h; sourceTree = "<group>"; };
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 = "<group>"; };
@@ -784,26 +784,26 @@
D86DE146514060FB03A8EB7875751CB4 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = "<group>"; };
D8927FDE96718D53059A955F2EEDDE40 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = "<group>"; };
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 = "<group>"; };
D931BEE4427488C33D747F3923E0ABE2 /* RLMSchema.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSchema.mm; path = Realm/RLMSchema.mm; sourceTree = "<group>"; };
D9F9DA0637D9CF2A4AF268F202EA6398 /* keychain_helper.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = keychain_helper.cpp; path = Realm/ObjectStore/src/impl/apple/keychain_helper.cpp; sourceTree = "<group>"; };
D931BEE4427488C33D747F3923E0ABE2 /* RLMSchema.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSchema.mm; path = Realm/RLMSchema.mm; sourceTree = "<group>"; };
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 = "<group>"; };
DD0EDB245A288DFDD27D5D49211DB642 /* RLMSyncPermission.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMSyncPermission.h; path = include/RLMSyncPermission.h; sourceTree = "<group>"; };
DD44D6E44FF60A041CB2B80D2F3D74EF /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = "<group>"; };
DE49909CAAF22EFDE000F82BCBAB5899 /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = "<group>"; };
DEA70D31C0AF1A4B71D45FDC83A3CCC6 /* ChartSeries.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChartSeries.swift; path = Source/ChartSeries.swift; sourceTree = "<group>"; };
DEFBCB31C513282CB43F15B7BAB3D159 /* Placeholder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Placeholder.swift; path = Sources/Placeholder.swift; sourceTree = "<group>"; };
E00EE42819656097BC0FB4054C002156 /* SwiftyJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-prefix.pch"; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
E4FF2B9FEDC88A76BFCF771EC7CB4D2B /* ImageTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageTransition.swift; path = Sources/ImageTransition.swift; sourceTree = "<group>"; };
E53A56088ACEAE7BF35D1B69201BEB95 /* Realm-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Realm-dummy.m"; sourceTree = "<group>"; };
E572E840A2B6EB3A72C5E3A1A2F8E2B7 /* sync_metadata.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_metadata.cpp; path = Realm/ObjectStore/src/sync/impl/sync_metadata.cpp; sourceTree = "<group>"; };
E5ABB25E379859D47265F2097C96DB0C /* uuid.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = uuid.cpp; path = Realm/ObjectStore/src/util/uuid.cpp; sourceTree = "<group>"; };
E613A12D65DCDDFB89BF512E54016D0E /* sync_file.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_file.cpp; path = Realm/ObjectStore/src/sync/impl/sync_file.cpp; sourceTree = "<group>"; };
E65BFFCF67FA024A57F6810BDB3EF0AF /* RLMSyncSessionRefreshHandle.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RLMSyncSessionRefreshHandle.mm; path = Realm/RLMSyncSessionRefreshHandle.mm; sourceTree = "<group>"; };
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 = "<group>"; };
E5ABB25E379859D47265F2097C96DB0C /* uuid.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = uuid.cpp; path = Realm/ObjectStore/src/util/uuid.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
E65BFFCF67FA024A57F6810BDB3EF0AF /* RLMSyncSessionRefreshHandle.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = RLMSyncSessionRefreshHandle.mm; path = Realm/RLMSyncSessionRefreshHandle.mm; sourceTree = "<group>"; };
E705FFD877223D0B0101AF6254E69858 /* SVRadialGradientLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVRadialGradientLayer.m; path = SVProgressHUD/SVRadialGradientLayer.m; sourceTree = "<group>"; };
E79F6D4273AE165CB0C762D941FD49F8 /* sync_manager.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = sync_manager.cpp; path = Realm/ObjectStore/src/sync/sync_manager.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
E952E44C64CC59E5A7D6F8EEB2DFCAAA /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = "<group>"; };
E9C01B96F4ABBD938FDDD288B04E75D1 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = "<group>"; };
E9DB9B15672EAA97BA0381CF11F2FB14 /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = "<group>"; };
@@ -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 = "<group>"; };
EC210E282A20580AC777D20AD7521060 /* RLMResults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMResults.h; path = include/RLMResults.h; sourceTree = "<group>"; };
EC546713A40C285F1F96D60407A65EE5 /* RLMCollection_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMCollection_Private.h; path = include/RLMCollection_Private.h; sourceTree = "<group>"; };
EDFEA1AAAEE746F5CA07C8FF7245D734 /* schema.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = schema.cpp; path = Realm/ObjectStore/src/schema.cpp; sourceTree = "<group>"; };
EDFEA1AAAEE746F5CA07C8FF7245D734 /* schema.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; name = schema.cpp; path = Realm/ObjectStore/src/schema.cpp; sourceTree = "<group>"; };
EF24AD35F2C7ED5931566922740848CF /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = "<group>"; };
F046922896204348860BB33590371530 /* RLMObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMObject.h; path = include/RLMObject.h; sourceTree = "<group>"; };
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 = "<group>"; };
F0967F9F28642BF501CA462A45581601 /* RLMRealmConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMRealmConfiguration.h; path = include/RLMRealmConfiguration.h; sourceTree = "<group>"; };
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 = "<group>"; };
F267BDEF56530ADE06BEB781B7A96C8C /* RLMMigration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMMigration.h; path = include/RLMMigration.h; sourceTree = "<group>"; };
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 = "<group>"; };
F50C035EF952D40A95D7E03ED0D26D1F /* results_notifier.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = results_notifier.cpp; path = Realm/ObjectStore/src/impl/results_notifier.cpp; sourceTree = "<group>"; };
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 = "<group>"; };
F64E781507231AFC862D7E32C32FFB6E /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = "<group>"; };
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 = "<group>"; };
F79570CF737176CFFBF9D891400C15A9 /* RLMArray.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RLMArray.h; path = include/RLMArray.h; sourceTree = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
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 = "<group>"; };
FB3F016B9AA6259951ECA7A3D347BC59 /* RLMJSONModels.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RLMJSONModels.m; path = Realm/RLMJSONModels.m; sourceTree = "<group>"; };
FE7C6F13939F14802A9A1BD79EAC1D4A /* KingfisherOptionsInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KingfisherOptionsInfo.swift; path = Sources/KingfisherOptionsInfo.swift; sourceTree = "<group>"; };
FFBFB5DDEF0EEBD4B1B76BD110F5721C /* Catchable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catchable.swift; path = Sources/Catchable.swift; sourceTree = "<group>"; };
@@ -948,7 +948,6 @@
055B4DDDC44467870C5868DA615A214B /* CorePromise */,
D3A9FFC7A7DF180F143935D09676D58F /* Support Files */,
);
name = PromiseKit;
path = PromiseKit;
sourceTree = "<group>";
};
@@ -993,7 +992,6 @@
DEA70D31C0AF1A4B71D45FDC83A3CCC6 /* ChartSeries.swift */,
2F40A251D3F0ABCE777A456418D650A8 /* Support Files */,
);
name = SwiftChart;
path = SwiftChart;
sourceTree = "<group>";
};
@@ -1033,7 +1031,6 @@
D8927FDE96718D53059A955F2EEDDE40 /* Validation.swift */,
21F6ED38C06F4F37CE47A47DA8696CAD /* Support Files */,
);
name = Alamofire;
path = Alamofire;
sourceTree = "<group>";
};
@@ -1043,7 +1040,6 @@
57C9BAE72893AC9C460C5F5499F415EB /* SwiftyJSON.swift */,
0DBE9ED05B7659D45DB39164597A36A2 /* Support Files */,
);
name = SwiftyJSON;
path = SwiftyJSON;
sourceTree = "<group>";
};
@@ -1128,7 +1124,6 @@
991BFA1A73F46395A5F2573D18EFA63D /* Default */,
DBE754F7C57B7900C8127830A779DF83 /* Support Files */,
);
name = ChameleonFramework;
path = ChameleonFramework;
sourceTree = "<group>";
};
@@ -1234,7 +1229,6 @@
E6D3EF2EC9DF5E5554330269DA2E965D /* Headers */,
824E509BB1536F03E52BD7E044D8ABEB /* Support Files */,
);
name = Realm;
path = Realm;
sourceTree = "<group>";
};
@@ -1368,7 +1362,6 @@
CFEB396365D1E33963DF0A95EB36CE56 /* UIButton+Kingfisher.swift */,
485F22482344BB9623BB8CFA577B72FB /* Support Files */,
);
name = Kingfisher;
path = Kingfisher;
sourceTree = "<group>";
};
@@ -1386,7 +1379,6 @@
9A61732050FD42242FEB65ED3A8DBFFE /* Resources */,
00457AF00F1AAC862301AE0BBC5EF6BD /* Support Files */,
);
name = SVProgressHUD;
path = SVProgressHUD;
sourceTree = "<group>";
};
@@ -1522,7 +1514,6 @@
77B5BC603C2749DE8E87B54B8DC083A4 /* Util.swift */,
7588718F6AA22F9FB8F90BA43749F76A /* Support Files */,
);
name = RealmSwift;
path = RealmSwift;
sourceTree = "<group>";
};
@@ -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;

View File

@@ -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 = "<group>"; };
C58C142B20B87197001BE9DA /* ChannelHistoryValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelHistoryValue.swift; sourceTree = "<group>"; };
C58C142D20BDD6BA001BE9DA /* HistoryGraphViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryGraphViewController.swift; sourceTree = "<group>"; };
C5B75C1E20BE339F00EB850D /* NavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationController.swift; sourceTree = "<group>"; };
C5B75C2020BE350600EB850D /* MeshifyFunctions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeshifyFunctions.swift; sourceTree = "<group>"; };
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;

View File

@@ -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<Any> {
// 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<Gateway>, deviceTypes : Results<DeviceType>) ->Promise<Any> {
// 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<Address>) -> Promise<Any> {
//
// 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<Any> {
// 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)
// }
// }
// }
// }
}

View File

@@ -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<Any> {
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<Any> {
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<Any> {
// 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
// }
//
//}

View File

@@ -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<DeviceType>?
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<Any> {
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<Any> {
// 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<Any> {
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<Any> {
// 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<Void> {
return Promise { promise in

View File

@@ -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<Address>?
var gateways : Results<Gateway>?
var devices : Results<Device>?
@@ -49,13 +49,13 @@ class DeviceListViewController: UITableViewController {
func loadJSONData() -> Promise<Void>{
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<Any> {
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<Any> {
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<Any> {
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<Any> {
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<Void> {

View File

@@ -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()

View File

@@ -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)

View File

@@ -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<Device>?
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!
}
}

View File

@@ -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<Address>?
var gateways : Results<Gateway>?
var devices : Results<Device>?
@@ -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<Any> {
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<Any> {
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<Any> {
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<Any> {
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() {

View File

@@ -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<Any> {
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<Any> {
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<Any> {
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<Any> {
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<Any> {
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<Any> {
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<Any> {
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
}
}

View File

@@ -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()
}
}

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="iJg-Zc-arO">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="iJg-Zc-arO">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
@@ -655,10 +655,11 @@
<!--Navigation Controller-->
<scene sceneID="zCd-ds-i4W">
<objects>
<navigationController id="iJg-Zc-arO" sceneMemberID="viewController">
<navigationController id="iJg-Zc-arO" customClass="NavigationController" customModule="pocloud" customModuleProvider="target" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="eWM-wh-jgG">
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<color key="barTintColor" red="0.90823972225189209" green="0.92638683319091797" blue="0.9317171573638916" alpha="1" colorSpace="calibratedRGB"/>
</navigationBar>
<connections>
<segue destination="BYZ-38-t0r" kind="relationship" relationship="rootViewController" id="d2l-6j-5nr"/>