You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2016/02/16 14:16:07 UTC
[75/75] usergrid git commit: pr/481 Swift SDK ActivityFeed sample.
This closes #481
pr/481 Swift SDK ActivityFeed sample. This closes #481
https://issues.apache.org/jira/browse/USERGRID-1257
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/60d60fed
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/60d60fed
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/60d60fed
Branch: refs/heads/master
Commit: 60d60fed1bae24516f3b0e7c6f2ed74680c7a88e
Parents: 7c9564b
Author: Dave Johnson <sn...@apache.org>
Authored: Tue Feb 16 08:14:18 2016 -0500
Committer: Dave Johnson <sn...@apache.org>
Committed: Tue Feb 16 08:14:18 2016 -0500
----------------------------------------------------------------------
.../ActivityFeed.xcodeproj/project.pbxproj | 827 +++++++++++++++++++
.../contents.xcworkspacedata | 7 +
.../contents.xcworkspacedata | 7 +
.../xcshareddata/ActivityFeed.xcscmblueprint | 30 +
sdks/swift/Samples/ActivityFeed/Podfile | 8 +
sdks/swift/Samples/ActivityFeed/Readme.md | 29 +
.../ActivityFeed/Source/ActivityEntity.swift | 60 ++
.../ActivityFeed/Source/AppDelegate.swift | 65 ++
.../AppIcon.appiconset/Contents.json | 38 +
.../Source/Assets.xcassets/Contents.json | 6 +
.../UsergridGuy.imageset/Contents.json | 21 +
.../UsergridGuy.imageset/UsergridGuy.png | Bin 0 -> 6230 bytes
.../Source/Base.lproj/LaunchScreen.storyboard | 27 +
.../Source/Base.lproj/Main.storyboard | 371 +++++++++
.../Source/FollowViewController.swift | 50 ++
.../ActivityFeed/Source/FormTextField.swift | 71 ++
.../Samples/ActivityFeed/Source/Info.plist | 43 +
.../Source/LoginViewController.swift | 77 ++
.../Source/MessageTableViewCell.swift | 101 +++
.../ActivityFeed/Source/MessageTextView.swift | 39 +
.../Source/MessageViewController.swift | 224 +++++
.../Source/RegisterViewController.swift | 62 ++
.../ActivityFeed/Source/UsergridManager.swift | 78 ++
.../Source/ViewControllerExtensions.swift | 36 +
.../Assets.xcassets/README__ignoredByTemplate__ | 1 +
.../ExtensionDelegate.swift | 45 +
.../WatchSample Extension/Info.plist | 45 +
.../InterfaceController.swift | 81 ++
.../AppIcon.appiconset/Contents.json | 55 ++
.../WatchSample/Base.lproj/Interface.storyboard | 46 ++
.../Samples/ActivityFeed/WatchSample/Info.plist | 35 +
sdks/swift/Samples/Readme.md | 27 +
32 files changed, 2612 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.pbxproj b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..215ca87
--- /dev/null
+++ b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.pbxproj
@@ -0,0 +1,827 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 634855401C726AE9005FE016 /* UsergridSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 634855331C726AD3005FE016 /* UsergridSDK.framework */; };
+ 634855411C726AE9005FE016 /* UsergridSDK.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 634855331C726AD3005FE016 /* UsergridSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 634855451C726AF7005FE016 /* UsergridSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 634855351C726AD3005FE016 /* UsergridSDK.framework */; };
+ 634855461C726AF7005FE016 /* UsergridSDK.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 634855351C726AD3005FE016 /* UsergridSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 6348D95F1C4EAC0B005C978C /* Interface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6348D95D1C4EAC0B005C978C /* Interface.storyboard */; };
+ 6348D9611C4EAC0B005C978C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6348D9601C4EAC0B005C978C /* Assets.xcassets */; };
+ 6348D9681C4EAC0B005C978C /* WatchSample Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 6348D9671C4EAC0B005C978C /* WatchSample Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+ 6348D96D1C4EAC0B005C978C /* InterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6348D96C1C4EAC0B005C978C /* InterfaceController.swift */; };
+ 6348D96F1C4EAC0B005C978C /* ExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6348D96E1C4EAC0B005C978C /* ExtensionDelegate.swift */; };
+ 6348D9711C4EAC0C005C978C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6348D9701C4EAC0C005C978C /* Assets.xcassets */; };
+ 6348D9751C4EAC0C005C978C /* WatchSample.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 6348D95B1C4EAC0B005C978C /* WatchSample.app */; };
+ 6348D9861C4EC1FD005C978C /* UsergridManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6348D9851C4EC1FD005C978C /* UsergridManager.swift */; };
+ 6348D9871C4EC1FD005C978C /* UsergridManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6348D9851C4EC1FD005C978C /* UsergridManager.swift */; };
+ 6355FEC51BFE4FC600E07170 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6355FEC41BFE4FC600E07170 /* AppDelegate.swift */; };
+ 6355FEC71BFE4FC600E07170 /* ViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6355FEC61BFE4FC600E07170 /* ViewControllerExtensions.swift */; };
+ 6355FECA1BFE4FC600E07170 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6355FEC81BFE4FC600E07170 /* Main.storyboard */; };
+ 6355FECC1BFE4FC600E07170 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6355FECB1BFE4FC600E07170 /* Assets.xcassets */; };
+ 6355FECF1BFE4FC600E07170 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6355FECD1BFE4FC600E07170 /* LaunchScreen.storyboard */; };
+ 63C9E52A1C04F3B900C65F81 /* MessageTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C9E5291C04F3B900C65F81 /* MessageTableViewCell.swift */; };
+ 63C9E5311C05184900C65F81 /* MessageTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C9E5301C05184900C65F81 /* MessageTextView.swift */; };
+ 63CD143D1C505EC500C00076 /* ActivityEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63CD143C1C505EC500C00076 /* ActivityEntity.swift */; };
+ 63CD143E1C505EC500C00076 /* ActivityEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63CD143C1C505EC500C00076 /* ActivityEntity.swift */; };
+ 63E7DD741C518BAD00D84B12 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E7DD731C518BAD00D84B12 /* LoginViewController.swift */; };
+ 63E7DD761C518C9000D84B12 /* RegisterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E7DD751C518C9000D84B12 /* RegisterViewController.swift */; };
+ 63E7DD781C518E0400D84B12 /* MessageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E7DD771C518E0400D84B12 /* MessageViewController.swift */; };
+ 63E7DD7A1C518F1700D84B12 /* FollowViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E7DD791C518F1700D84B12 /* FollowViewController.swift */; };
+ 63E7DD7E1C518FDD00D84B12 /* FormTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E7DD7D1C518FDD00D84B12 /* FormTextField.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 634855321C726AD3005FE016 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 63AF0E881BBC38FB009D4196;
+ remoteInfo = "UsergridSDK iOS";
+ };
+ 634855341C726AD3005FE016 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 639B4BEB1C3DD6CF005E26E7;
+ remoteInfo = "UsergridSDK watchOS";
+ };
+ 634855361C726AD3005FE016 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 63EE610B1C406E1600AFC2CF;
+ remoteInfo = "UsergridSDK tvOS";
+ };
+ 634855381C726AD3005FE016 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 631920451C48436500F99E86;
+ remoteInfo = "UsergridSDK OSX";
+ };
+ 6348553A1C726AD3005FE016 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 6319204B1C49BC0700F99E86;
+ remoteInfo = UsergridSDK_TVOS_Tests;
+ };
+ 6348553C1C726AD3005FE016 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 630A219F1C49BFFC008BE87F;
+ remoteInfo = UsergridSDK_OSX_Tests;
+ };
+ 6348553E1C726AD3005FE016 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 630A21B81C49C473008BE87F;
+ remoteInfo = UsergridSDK_iOS_Tests;
+ };
+ 634855421C726AE9005FE016 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 63AF0E871BBC38FB009D4196;
+ remoteInfo = "UsergridSDK iOS";
+ };
+ 634855471C726AF7005FE016 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 639B4BEA1C3DD6CF005E26E7;
+ remoteInfo = "UsergridSDK watchOS";
+ };
+ 6348D9691C4EAC0B005C978C /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6355FEB91BFE4FC600E07170 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 6348D9661C4EAC0B005C978C;
+ remoteInfo = "WatchSample Extension";
+ };
+ 6348D9731C4EAC0C005C978C /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6355FEB91BFE4FC600E07170 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 6348D95A1C4EAC0B005C978C;
+ remoteInfo = WatchSample;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 634855441C726AE9005FE016 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ 634855411C726AE9005FE016 /* UsergridSDK.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 634855491C726AF8005FE016 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ 634855461C726AF7005FE016 /* UsergridSDK.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6348D97B1C4EAC0C005C978C /* Embed App Extensions */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 13;
+ files = (
+ 6348D9681C4EAC0B005C978C /* WatchSample Extension.appex in Embed App Extensions */,
+ );
+ name = "Embed App Extensions";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6348D97D1C4EAC0C005C978C /* Embed Watch Content */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "$(CONTENTS_FOLDER_PATH)/Watch";
+ dstSubfolderSpec = 16;
+ files = (
+ 6348D9751C4EAC0C005C978C /* WatchSample.app in Embed Watch Content */,
+ );
+ name = "Embed Watch Content";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = UsergridSDK.xcodeproj; path = ../../UsergridSDK.xcodeproj; sourceTree = "<group>"; };
+ 6348D95B1C4EAC0B005C978C /* WatchSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WatchSample.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6348D95E1C4EAC0B005C978C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Interface.storyboard; sourceTree = "<group>"; };
+ 6348D9601C4EAC0B005C978C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+ 6348D9621C4EAC0B005C978C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ 6348D9671C4EAC0B005C978C /* WatchSample Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "WatchSample Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6348D96C1C4EAC0B005C978C /* InterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InterfaceController.swift; sourceTree = "<group>"; };
+ 6348D96E1C4EAC0B005C978C /* ExtensionDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionDelegate.swift; sourceTree = "<group>"; };
+ 6348D9701C4EAC0C005C978C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+ 6348D9721C4EAC0C005C978C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ 6348D9851C4EC1FD005C978C /* UsergridManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UsergridManager.swift; sourceTree = "<group>"; };
+ 6355FEC11BFE4FC600E07170 /* ActivityFeed.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ActivityFeed.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6355FEC41BFE4FC600E07170 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
+ 6355FEC61BFE4FC600E07170 /* ViewControllerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewControllerExtensions.swift; sourceTree = "<group>"; };
+ 6355FEC91BFE4FC600E07170 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
+ 6355FECB1BFE4FC600E07170 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+ 6355FECE1BFE4FC600E07170 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
+ 6355FED01BFE4FC600E07170 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+ 63C9E5291C04F3B900C65F81 /* MessageTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageTableViewCell.swift; sourceTree = "<group>"; };
+ 63C9E5301C05184900C65F81 /* MessageTextView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageTextView.swift; sourceTree = "<group>"; };
+ 63CD143C1C505EC500C00076 /* ActivityEntity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActivityEntity.swift; sourceTree = "<group>"; };
+ 63E7DD731C518BAD00D84B12 /* LoginViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = "<group>"; };
+ 63E7DD751C518C9000D84B12 /* RegisterViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegisterViewController.swift; sourceTree = "<group>"; };
+ 63E7DD771C518E0400D84B12 /* MessageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageViewController.swift; sourceTree = "<group>"; };
+ 63E7DD791C518F1700D84B12 /* FollowViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FollowViewController.swift; sourceTree = "<group>"; };
+ 63E7DD7D1C518FDD00D84B12 /* FormTextField.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormTextField.swift; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 6348D9641C4EAC0B005C978C /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 634855451C726AF7005FE016 /* UsergridSDK.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6355FEBE1BFE4FC600E07170 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 634855401C726AE9005FE016 /* UsergridSDK.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 634855291C726AD3005FE016 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 634855331C726AD3005FE016 /* UsergridSDK.framework */,
+ 634855351C726AD3005FE016 /* UsergridSDK.framework */,
+ 634855371C726AD3005FE016 /* UsergridSDK.framework */,
+ 634855391C726AD3005FE016 /* UsergridSDK.framework */,
+ 6348553B1C726AD3005FE016 /* UsergridSDK_TVOS_Tests.xctest */,
+ 6348553D1C726AD3005FE016 /* UsergridSDK_OSX_Tests.xctest */,
+ 6348553F1C726AD3005FE016 /* UsergridSDK_iOS_Tests.xctest */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 6348D95C1C4EAC0B005C978C /* WatchSample */ = {
+ isa = PBXGroup;
+ children = (
+ 6348D95D1C4EAC0B005C978C /* Interface.storyboard */,
+ 6348D9601C4EAC0B005C978C /* Assets.xcassets */,
+ 6348D9621C4EAC0B005C978C /* Info.plist */,
+ );
+ path = WatchSample;
+ sourceTree = "<group>";
+ };
+ 6348D96B1C4EAC0B005C978C /* WatchSample Extension */ = {
+ isa = PBXGroup;
+ children = (
+ 6348D96C1C4EAC0B005C978C /* InterfaceController.swift */,
+ 6348D96E1C4EAC0B005C978C /* ExtensionDelegate.swift */,
+ 6348D9701C4EAC0C005C978C /* Assets.xcassets */,
+ 6348D9721C4EAC0C005C978C /* Info.plist */,
+ );
+ path = "WatchSample Extension";
+ sourceTree = "<group>";
+ };
+ 6355FEB81BFE4FC600E07170 = {
+ isa = PBXGroup;
+ children = (
+ 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */,
+ 6355FEC31BFE4FC600E07170 /* Source */,
+ 6348D95C1C4EAC0B005C978C /* WatchSample */,
+ 6348D96B1C4EAC0B005C978C /* WatchSample Extension */,
+ 6355FEC21BFE4FC600E07170 /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ 6355FEC21BFE4FC600E07170 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 6355FEC11BFE4FC600E07170 /* ActivityFeed.app */,
+ 6348D95B1C4EAC0B005C978C /* WatchSample.app */,
+ 6348D9671C4EAC0B005C978C /* WatchSample Extension.appex */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 6355FEC31BFE4FC600E07170 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ 6355FEC41BFE4FC600E07170 /* AppDelegate.swift */,
+ 6348D9851C4EC1FD005C978C /* UsergridManager.swift */,
+ 63CD143C1C505EC500C00076 /* ActivityEntity.swift */,
+ 63E7DD7B1C518F9600D84B12 /* View Controllers */,
+ 63E7DD7C1C518FC300D84B12 /* Custom Views */,
+ 63E7DD801C51903A00D84B12 /* Storyboards */,
+ 63E7DD7F1C51902F00D84B12 /* Supporting Files */,
+ );
+ path = Source;
+ sourceTree = "<group>";
+ };
+ 63E7DD7B1C518F9600D84B12 /* View Controllers */ = {
+ isa = PBXGroup;
+ children = (
+ 63E7DD791C518F1700D84B12 /* FollowViewController.swift */,
+ 63E7DD731C518BAD00D84B12 /* LoginViewController.swift */,
+ 63E7DD771C518E0400D84B12 /* MessageViewController.swift */,
+ 63E7DD751C518C9000D84B12 /* RegisterViewController.swift */,
+ 6355FEC61BFE4FC600E07170 /* ViewControllerExtensions.swift */,
+ );
+ name = "View Controllers";
+ sourceTree = "<group>";
+ };
+ 63E7DD7C1C518FC300D84B12 /* Custom Views */ = {
+ isa = PBXGroup;
+ children = (
+ 63E7DD7D1C518FDD00D84B12 /* FormTextField.swift */,
+ 63C9E5291C04F3B900C65F81 /* MessageTableViewCell.swift */,
+ 63C9E5301C05184900C65F81 /* MessageTextView.swift */,
+ );
+ name = "Custom Views";
+ sourceTree = "<group>";
+ };
+ 63E7DD7F1C51902F00D84B12 /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ 6355FECB1BFE4FC600E07170 /* Assets.xcassets */,
+ 6355FED01BFE4FC600E07170 /* Info.plist */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ 63E7DD801C51903A00D84B12 /* Storyboards */ = {
+ isa = PBXGroup;
+ children = (
+ 6355FEC81BFE4FC600E07170 /* Main.storyboard */,
+ 6355FECD1BFE4FC600E07170 /* LaunchScreen.storyboard */,
+ );
+ name = Storyboards;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 6348D95A1C4EAC0B005C978C /* WatchSample */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6348D97C1C4EAC0C005C978C /* Build configuration list for PBXNativeTarget "WatchSample" */;
+ buildPhases = (
+ 6348D9591C4EAC0B005C978C /* Resources */,
+ 6348D97B1C4EAC0C005C978C /* Embed App Extensions */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 6348D96A1C4EAC0B005C978C /* PBXTargetDependency */,
+ );
+ name = WatchSample;
+ productName = WatchSample;
+ productReference = 6348D95B1C4EAC0B005C978C /* WatchSample.app */;
+ productType = "com.apple.product-type.application.watchapp2";
+ };
+ 6348D9661C4EAC0B005C978C /* WatchSample Extension */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6348D97A1C4EAC0C005C978C /* Build configuration list for PBXNativeTarget "WatchSample Extension" */;
+ buildPhases = (
+ 6348D9631C4EAC0B005C978C /* Sources */,
+ 6348D9641C4EAC0B005C978C /* Frameworks */,
+ 6348D9651C4EAC0B005C978C /* Resources */,
+ 634855491C726AF8005FE016 /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 634855481C726AF7005FE016 /* PBXTargetDependency */,
+ );
+ name = "WatchSample Extension";
+ productName = "WatchSample Extension";
+ productReference = 6348D9671C4EAC0B005C978C /* WatchSample Extension.appex */;
+ productType = "com.apple.product-type.watchkit2-extension";
+ };
+ 6355FEC01BFE4FC600E07170 /* ActivityFeed */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6355FED31BFE4FC600E07170 /* Build configuration list for PBXNativeTarget "ActivityFeed" */;
+ buildPhases = (
+ 6355FEBD1BFE4FC600E07170 /* Sources */,
+ 6355FEBE1BFE4FC600E07170 /* Frameworks */,
+ 6355FEBF1BFE4FC600E07170 /* Resources */,
+ 6348D97D1C4EAC0C005C978C /* Embed Watch Content */,
+ 634855441C726AE9005FE016 /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 6348D9741C4EAC0C005C978C /* PBXTargetDependency */,
+ 634855431C726AE9005FE016 /* PBXTargetDependency */,
+ );
+ name = ActivityFeed;
+ productName = SDKSample;
+ productReference = 6355FEC11BFE4FC600E07170 /* ActivityFeed.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 6355FEB91BFE4FC600E07170 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 0720;
+ LastUpgradeCheck = 0710;
+ ORGANIZATIONNAME = "Apigee Inc.";
+ TargetAttributes = {
+ 6348D95A1C4EAC0B005C978C = {
+ CreatedOnToolsVersion = 7.2;
+ };
+ 6348D9661C4EAC0B005C978C = {
+ CreatedOnToolsVersion = 7.2;
+ };
+ 6355FEC01BFE4FC600E07170 = {
+ CreatedOnToolsVersion = 7.1.1;
+ };
+ };
+ };
+ buildConfigurationList = 6355FEBC1BFE4FC600E07170 /* Build configuration list for PBXProject "ActivityFeed" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 6355FEB81BFE4FC600E07170;
+ productRefGroup = 6355FEC21BFE4FC600E07170 /* Products */;
+ projectDirPath = "";
+ projectReferences = (
+ {
+ ProductGroup = 634855291C726AD3005FE016 /* Products */;
+ ProjectRef = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */;
+ },
+ );
+ projectRoot = "";
+ targets = (
+ 6355FEC01BFE4FC600E07170 /* ActivityFeed */,
+ 6348D95A1C4EAC0B005C978C /* WatchSample */,
+ 6348D9661C4EAC0B005C978C /* WatchSample Extension */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+ 634855331C726AD3005FE016 /* UsergridSDK.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = UsergridSDK.framework;
+ remoteRef = 634855321C726AD3005FE016 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 634855351C726AD3005FE016 /* UsergridSDK.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = UsergridSDK.framework;
+ remoteRef = 634855341C726AD3005FE016 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 634855371C726AD3005FE016 /* UsergridSDK.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = UsergridSDK.framework;
+ remoteRef = 634855361C726AD3005FE016 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 634855391C726AD3005FE016 /* UsergridSDK.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = UsergridSDK.framework;
+ remoteRef = 634855381C726AD3005FE016 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 6348553B1C726AD3005FE016 /* UsergridSDK_TVOS_Tests.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = UsergridSDK_TVOS_Tests.xctest;
+ remoteRef = 6348553A1C726AD3005FE016 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 6348553D1C726AD3005FE016 /* UsergridSDK_OSX_Tests.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = UsergridSDK_OSX_Tests.xctest;
+ remoteRef = 6348553C1C726AD3005FE016 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 6348553F1C726AD3005FE016 /* UsergridSDK_iOS_Tests.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = UsergridSDK_iOS_Tests.xctest;
+ remoteRef = 6348553E1C726AD3005FE016 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+/* End PBXReferenceProxy section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 6348D9591C4EAC0B005C978C /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6348D9611C4EAC0B005C978C /* Assets.xcassets in Resources */,
+ 6348D95F1C4EAC0B005C978C /* Interface.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6348D9651C4EAC0B005C978C /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6348D9711C4EAC0C005C978C /* Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6355FEBF1BFE4FC600E07170 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6355FECF1BFE4FC600E07170 /* LaunchScreen.storyboard in Resources */,
+ 6355FECC1BFE4FC600E07170 /* Assets.xcassets in Resources */,
+ 6355FECA1BFE4FC600E07170 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 6348D9631C4EAC0B005C978C /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6348D9871C4EC1FD005C978C /* UsergridManager.swift in Sources */,
+ 63CD143E1C505EC500C00076 /* ActivityEntity.swift in Sources */,
+ 6348D96F1C4EAC0B005C978C /* ExtensionDelegate.swift in Sources */,
+ 6348D96D1C4EAC0B005C978C /* InterfaceController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6355FEBD1BFE4FC600E07170 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 63E7DD741C518BAD00D84B12 /* LoginViewController.swift in Sources */,
+ 63E7DD781C518E0400D84B12 /* MessageViewController.swift in Sources */,
+ 6348D9861C4EC1FD005C978C /* UsergridManager.swift in Sources */,
+ 6355FEC71BFE4FC600E07170 /* ViewControllerExtensions.swift in Sources */,
+ 63E7DD761C518C9000D84B12 /* RegisterViewController.swift in Sources */,
+ 6355FEC51BFE4FC600E07170 /* AppDelegate.swift in Sources */,
+ 63E7DD7A1C518F1700D84B12 /* FollowViewController.swift in Sources */,
+ 63CD143D1C505EC500C00076 /* ActivityEntity.swift in Sources */,
+ 63C9E5311C05184900C65F81 /* MessageTextView.swift in Sources */,
+ 63C9E52A1C04F3B900C65F81 /* MessageTableViewCell.swift in Sources */,
+ 63E7DD7E1C518FDD00D84B12 /* FormTextField.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 634855431C726AE9005FE016 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "UsergridSDK iOS";
+ targetProxy = 634855421C726AE9005FE016 /* PBXContainerItemProxy */;
+ };
+ 634855481C726AF7005FE016 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "UsergridSDK watchOS";
+ targetProxy = 634855471C726AF7005FE016 /* PBXContainerItemProxy */;
+ };
+ 6348D96A1C4EAC0B005C978C /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 6348D9661C4EAC0B005C978C /* WatchSample Extension */;
+ targetProxy = 6348D9691C4EAC0B005C978C /* PBXContainerItemProxy */;
+ };
+ 6348D9741C4EAC0C005C978C /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 6348D95A1C4EAC0B005C978C /* WatchSample */;
+ targetProxy = 6348D9731C4EAC0C005C978C /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 6348D95D1C4EAC0B005C978C /* Interface.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6348D95E1C4EAC0B005C978C /* Base */,
+ );
+ name = Interface.storyboard;
+ sourceTree = "<group>";
+ };
+ 6355FEC81BFE4FC600E07170 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6355FEC91BFE4FC600E07170 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "<group>";
+ };
+ 6355FECD1BFE4FC600E07170 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6355FECE1BFE4FC600E07170 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 6348D9761C4EAC0C005C978C /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
+ IBSC_MODULE = WatchSample_Extension;
+ INFOPLIST_FILE = WatchSample/Info.plist;
+ PRODUCT_BUNDLE_IDENTIFIER = com.usergrid.activityfeed.watchkitapp;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.1;
+ };
+ name = Debug;
+ };
+ 6348D9771C4EAC0C005C978C /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
+ IBSC_MODULE = WatchSample_Extension;
+ INFOPLIST_FILE = WatchSample/Info.plist;
+ PRODUCT_BUNDLE_IDENTIFIER = com.usergrid.activityfeed.watchkitapp;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.1;
+ };
+ name = Release;
+ };
+ 6348D9781C4EAC0C005C978C /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
+ INFOPLIST_FILE = "WatchSample Extension/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.usergrid.activityfeed.watchkitapp.watchkitextension;
+ PRODUCT_NAME = "${TARGET_NAME}";
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.1;
+ };
+ name = Debug;
+ };
+ 6348D9791C4EAC0C005C978C /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
+ INFOPLIST_FILE = "WatchSample Extension/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.usergrid.activityfeed.watchkitapp.watchkitextension;
+ PRODUCT_NAME = "${TARGET_NAME}";
+ SDKROOT = watchos;
+ SKIP_INSTALL = YES;
+ TARGETED_DEVICE_FAMILY = 4;
+ WATCHOS_DEPLOYMENT_TARGET = 2.1;
+ };
+ name = Release;
+ };
+ 6355FED11BFE4FC600E07170 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.1;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = Debug;
+ };
+ 6355FED21BFE4FC600E07170 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.1;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 6355FED41BFE4FC600E07170 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
+ INFOPLIST_FILE = Source/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.usergrid.activityfeed;
+ PRODUCT_NAME = ActivityFeed;
+ PROVISIONING_PROFILE = "";
+ SWIFT_INSTALL_OBJC_HEADER = NO;
+ SWIFT_OBJC_BRIDGING_HEADER = "";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = Debug;
+ };
+ 6355FED51BFE4FC600E07170 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
+ INFOPLIST_FILE = Source/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.usergrid.activityfeed;
+ PRODUCT_NAME = ActivityFeed;
+ PROVISIONING_PROFILE = "";
+ SWIFT_INSTALL_OBJC_HEADER = NO;
+ SWIFT_OBJC_BRIDGING_HEADER = "";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 6348D97A1C4EAC0C005C978C /* Build configuration list for PBXNativeTarget "WatchSample Extension" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6348D9781C4EAC0C005C978C /* Debug */,
+ 6348D9791C4EAC0C005C978C /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6348D97C1C4EAC0C005C978C /* Build configuration list for PBXNativeTarget "WatchSample" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6348D9761C4EAC0C005C978C /* Debug */,
+ 6348D9771C4EAC0C005C978C /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6355FEBC1BFE4FC600E07170 /* Build configuration list for PBXProject "ActivityFeed" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6355FED11BFE4FC600E07170 /* Debug */,
+ 6355FED21BFE4FC600E07170 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6355FED31BFE4FC600E07170 /* Build configuration list for PBXNativeTarget "ActivityFeed" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6355FED41BFE4FC600E07170 /* Debug */,
+ 6355FED51BFE4FC600E07170 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 6355FEB91BFE4FC600E07170 /* Project object */;
+}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.xcworkspace/contents.xcworkspacedata
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..3603482
--- /dev/null
+++ b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "self:SDKSample.xcodeproj">
+ </FileRef>
+</Workspace>
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/contents.xcworkspacedata
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/contents.xcworkspacedata b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..1344aa3
--- /dev/null
+++ b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "group:ActivityFeed.xcodeproj">
+ </FileRef>
+</Workspace>
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/xcshareddata/ActivityFeed.xcscmblueprint
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/xcshareddata/ActivityFeed.xcscmblueprint b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/xcshareddata/ActivityFeed.xcscmblueprint
new file mode 100644
index 0000000..cd872fc
--- /dev/null
+++ b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/xcshareddata/ActivityFeed.xcscmblueprint
@@ -0,0 +1,30 @@
+{
+ "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "E28DB29D4B8B9FB468FB340D2257B16682332D89",
+ "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : {
+
+ },
+ "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : {
+ "E28DB29D4B8B9FB468FB340D2257B16682332D89" : 0,
+ "AD57BFF635DD66DF5DF78257082332592EB51D31" : 0
+ },
+ "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "F8EC72FE-9B21-4617-8470-0D30DC16A66E",
+ "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
+ "E28DB29D4B8B9FB468FB340D2257B16682332D89" : "swift\/",
+ "AD57BFF635DD66DF5DF78257082332592EB51D31" : ".."
+ },
+ "DVTSourceControlWorkspaceBlueprintNameKey" : "ActivityFeed",
+ "DVTSourceControlWorkspaceBlueprintVersion" : 204,
+ "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "Samples\/ActivityFeed\/ActivityFeed.xcworkspace",
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [
+ {
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:RobertWalsh\/usergrid.git",
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "AD57BFF635DD66DF5DF78257082332592EB51D31"
+ },
+ {
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:RobertWalsh\/UsergridSDK.git",
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
+ "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "E28DB29D4B8B9FB468FB340D2257B16682332D89"
+ }
+ ]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Podfile
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/Podfile b/sdks/swift/Samples/ActivityFeed/Podfile
new file mode 100644
index 0000000..23d5db6
--- /dev/null
+++ b/sdks/swift/Samples/ActivityFeed/Podfile
@@ -0,0 +1,8 @@
+use_frameworks!
+inhibit_all_warnings!
+
+target 'ActivityFeed' do
+ platform :ios, '9.0'
+ pod 'SlackTextViewController'
+end
+
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Readme.md
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/Readme.md b/sdks/swift/Samples/ActivityFeed/Readme.md
new file mode 100644
index 0000000..9fb6555
--- /dev/null
+++ b/sdks/swift/Samples/ActivityFeed/Readme.md
@@ -0,0 +1,29 @@
+#ActivityFeed
+
+## Installing dependencies
+
+The `ActivityFeed` sample app utilizes `Cocoapods` and you will need to run the `$ pod install` command from within the root folder of the sample project in order for the sample to run properly.
+
+## Running the Sample
+
+To run the sample app, simply open the `ActivityFeed.xcworkspace` file in Xcode.
+
+Two targets in Xcode specific to this application will be available:
+
+- **ActivityFeed Target**
+
+ This will run the iOS sample application.
+
+- **Watch Sample Target**
+
+ This will run the watchOS companion app.
+
+##Configuring the Sample Apps
+
+Before running the sample applications you will need to configure each sample application.
+
+Each sample application should include a source file named `UsergridManager.swift`. This source file is used to contain interaction with the UsergridSDK within a single source file. In doing so, the interactions within the sample apps can be easily seen and examined.
+
+Within the `UsergridManager.swift` source there will be at least two different static vars named `ORG_ID` and `APP_ID`. You will need to configure those values in order to run the applications in your environment.
+
+Applications which utilize push notifications will require a valid provisioning profile and device for the push services to work correctly.
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/ActivityEntity.swift
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/Source/ActivityEntity.swift b/sdks/swift/Samples/ActivityFeed/Source/ActivityEntity.swift
new file mode 100644
index 0000000..5ddcf12
--- /dev/null
+++ b/sdks/swift/Samples/ActivityFeed/Source/ActivityEntity.swift
@@ -0,0 +1,60 @@
+//
+// ActivityEntity.swift
+// ActivityFeed
+//
+// Created by Robert Walsh on 1/20/16.
+//
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License. For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ *
+ */
+
+import Foundation
+import UsergridSDK
+
+public class ActivityEntity: UsergridEntity {
+
+ public var actor: [String:AnyObject]? { return self["actor"] as? [String:AnyObject] }
+
+ public var content: String? { return self["content"] as? String }
+
+ public var displayName: String? { return self.actor?["displayName"] as? String }
+
+ public var email: String? { return self.actor?["email"] as? String }
+
+ public var imageInfo: [String:AnyObject]? { return self.actor?["image"] as? [String:AnyObject] }
+
+ public var imageURL: String? { return self.imageInfo?["url"] as? String }
+
+ static func registerSubclass() {
+ UsergridEntity.mapCustomType("activity", toSubclass: ActivityEntity.self)
+ }
+
+ required public init(type: String, name: String?, propertyDict: [String : AnyObject]?) {
+ super.init(type: type, name: name, propertyDict: propertyDict)
+ }
+
+ required public init?(coder aDecoder: NSCoder) {
+ super.init(coder: aDecoder)
+ }
+
+ public override func encodeWithCoder(aCoder: NSCoder) {
+ super.encodeWithCoder(aCoder)
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/AppDelegate.swift
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/Source/AppDelegate.swift b/sdks/swift/Samples/ActivityFeed/Source/AppDelegate.swift
new file mode 100644
index 0000000..cca5c41
--- /dev/null
+++ b/sdks/swift/Samples/ActivityFeed/Source/AppDelegate.swift
@@ -0,0 +1,65 @@
+//
+// AppDelegate.swift
+// ActivityFeed
+//
+// Created by Robert Walsh on 11/19/15.
+//
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License. For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ *
+ */
+
+
+import UIKit
+import UsergridSDK
+
+// TODO: Change the values to correspond to your organization, application, and notifier identifiers.
+
+@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {
+
+ var window: UIWindow?
+
+ func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
+
+ UINavigationBar.appearance().tintColor = UIColor.whiteColor()
+ application.registerUserNotificationSettings(UIUserNotificationSettings( forTypes: [.Alert, .Badge, .Sound], categories: nil))
+ application.registerForRemoteNotifications()
+
+ // Initialize the Usergrid shared instance.
+ UsergridManager.initializeSharedInstance()
+
+ // If there is a current user already logged in from the keychain we will skip the login page and go right to the chat screen
+
+ if Usergrid.currentUser != nil {
+ let rootViewController = self.window!.rootViewController as! UINavigationController
+ let loginViewController = rootViewController.viewControllers.first!
+ loginViewController.performSegueWithIdentifier("loginSuccessNonAnimatedSegue", sender: loginViewController)
+ }
+
+ return true
+ }
+
+ func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
+ Usergrid.applyPushToken(deviceToken, notifierID: UsergridManager.NOTIFIER_ID, completion: nil)
+ }
+
+ func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
+ print("Application failed to register for remote notifications")
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/AppIcon.appiconset/Contents.json
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/AppIcon.appiconset/Contents.json b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..118c98f
--- /dev/null
+++ b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,38 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/Contents.json
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/Contents.json b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..da4a164
--- /dev/null
+++ b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/Contents.json
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/Contents.json b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/Contents.json
new file mode 100644
index 0000000..c19ad83
--- /dev/null
+++ b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "UsergridGuy.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/UsergridGuy.png
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/UsergridGuy.png b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/UsergridGuy.png
new file mode 100644
index 0000000..b8a6844
Binary files /dev/null and b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/UsergridGuy.png differ
http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/Base.lproj/LaunchScreen.storyboard
----------------------------------------------------------------------
diff --git a/sdks/swift/Samples/ActivityFeed/Source/Base.lproj/LaunchScreen.storyboard b/sdks/swift/Samples/ActivityFeed/Source/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..78686cd
--- /dev/null
+++ b/sdks/swift/Samples/ActivityFeed/Source/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9529"/>
+ </dependencies>
+ <scenes>
+ <!--View Controller-->
+ <scene sceneID="EHf-IW-A2E">
+ <objects>
+ <viewController id="01J-lp-oVM" sceneMemberID="viewController">
+ <layoutGuides>
+ <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
+ <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
+ </layoutGuides>
+ <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
+ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ </view>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="53" y="375"/>
+ </scene>
+ </scenes>
+</document>