diff --git a/Parse.xcworkspace/contents.xcworkspacedata b/Parse.xcworkspace/contents.xcworkspacedata
index 1a7d33cd2..a6a3801ac 100644
--- a/Parse.xcworkspace/contents.xcworkspacedata
+++ b/Parse.xcworkspace/contents.xcworkspacedata
@@ -41,5 +41,12 @@
location = "group:ParseStarterProject/watchOS/ParseStarterProject-Swift/ParseStarter-Swift.xcodeproj">
+
+
+
+
diff --git a/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter-Swift.xcodeproj/project.pbxproj b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter-Swift.xcodeproj/project.pbxproj
new file mode 100644
index 000000000..c780a2104
--- /dev/null
+++ b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter-Swift.xcodeproj/project.pbxproj
@@ -0,0 +1,400 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXAggregateTarget section */
+ 81993FC71B69AA940077D6B9 /* Bootstrap */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = 81993FCA1B69AA950077D6B9 /* Build configuration list for PBXAggregateTarget "Bootstrap" */;
+ buildPhases = (
+ 81993FCB1B69AA9F0077D6B9 /* ShellScript */,
+ );
+ dependencies = (
+ );
+ name = Bootstrap;
+ productName = Bootstrap;
+ };
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+ 81C066EF1BFAC1D4001E0658 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C066EE1BFAC1D4001E0658 /* AppDelegate.swift */; };
+ 81C066F11BFAC1D4001E0658 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C066F01BFAC1D4001E0658 /* ViewController.swift */; };
+ 81C066FE1BFAC330001E0658 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81C066F21BFAC1D4001E0658 /* Main.storyboard */; };
+ 81C067051BFAC8CD001E0658 /* Bolts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81C067031BFAC8CD001E0658 /* Bolts.framework */; };
+ 81C067061BFAC8CD001E0658 /* Parse.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81C067041BFAC8CD001E0658 /* Parse.framework */; };
+ 81C067081BFAC98B001E0658 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81C067071BFAC98B001E0658 /* SystemConfiguration.framework */; };
+ 81C0670A1BFAC9C8001E0658 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 81C067091BFAC9C8001E0658 /* libsqlite3.tbd */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 81C066FB1BFAC308001E0658 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 81BA813D1A49DA1800E65899 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 81993FC71B69AA940077D6B9;
+ remoteInfo = Bootstrap;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 81C066EC1BFAC1D4001E0658 /* ParseStarter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ParseStarter.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 81C066EE1BFAC1D4001E0658 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 81C066F01BFAC1D4001E0658 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ 81C066F31BFAC1D4001E0658 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 81C066F71BFAC1D4001E0658 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 81C067031BFAC8CD001E0658 /* Bolts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bolts.framework; sourceTree = ""; };
+ 81C067041BFAC8CD001E0658 /* Parse.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Parse.framework; sourceTree = ""; };
+ 81C067071BFAC98B001E0658 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
+ 81C067091BFAC9C8001E0658 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 81C066E91BFAC1D4001E0658 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 81C0670A1BFAC9C8001E0658 /* libsqlite3.tbd in Frameworks */,
+ 81C067081BFAC98B001E0658 /* SystemConfiguration.framework in Frameworks */,
+ 81C067061BFAC8CD001E0658 /* Parse.framework in Frameworks */,
+ 81C067051BFAC8CD001E0658 /* Bolts.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 81BA813C1A49DA1800E65899 = {
+ isa = PBXGroup;
+ children = (
+ 81C066ED1BFAC1D4001E0658 /* ParseStarter */,
+ 81BA816A1A49DB5600E65899 /* Frameworks */,
+ 81BA81461A49DA1800E65899 /* Products */,
+ );
+ sourceTree = "";
+ };
+ 81BA81461A49DA1800E65899 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 81C066EC1BFAC1D4001E0658 /* ParseStarter.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 81BA816A1A49DB5600E65899 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 81C067031BFAC8CD001E0658 /* Bolts.framework */,
+ 81C067041BFAC8CD001E0658 /* Parse.framework */,
+ 81BA81751A49E0C500E65899 /* System Frameworks */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 81BA81751A49E0C500E65899 /* System Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 81C067091BFAC9C8001E0658 /* libsqlite3.tbd */,
+ 81C067071BFAC98B001E0658 /* SystemConfiguration.framework */,
+ );
+ name = "System Frameworks";
+ sourceTree = "";
+ };
+ 81C066ED1BFAC1D4001E0658 /* ParseStarter */ = {
+ isa = PBXGroup;
+ children = (
+ 81C066EE1BFAC1D4001E0658 /* AppDelegate.swift */,
+ 81C066F01BFAC1D4001E0658 /* ViewController.swift */,
+ 81C066F21BFAC1D4001E0658 /* Main.storyboard */,
+ 81C066F71BFAC1D4001E0658 /* Info.plist */,
+ );
+ path = ParseStarter;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 81C066EB1BFAC1D4001E0658 /* ParseStarter */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 81C066F81BFAC1D4001E0658 /* Build configuration list for PBXNativeTarget "ParseStarter" */;
+ buildPhases = (
+ 81C066E81BFAC1D4001E0658 /* Sources */,
+ 81C066E91BFAC1D4001E0658 /* Frameworks */,
+ 81C066EA1BFAC1D4001E0658 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 81C066FC1BFAC308001E0658 /* PBXTargetDependency */,
+ );
+ name = ParseStarter;
+ productName = ParseStarter;
+ productReference = 81C066EC1BFAC1D4001E0658 /* ParseStarter.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 81BA813D1A49DA1800E65899 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 0710;
+ LastUpgradeCheck = 0700;
+ ORGANIZATIONNAME = Parse;
+ TargetAttributes = {
+ 81993FC71B69AA940077D6B9 = {
+ CreatedOnToolsVersion = 6.4;
+ };
+ 81C066EB1BFAC1D4001E0658 = {
+ CreatedOnToolsVersion = 7.1.1;
+ };
+ };
+ };
+ buildConfigurationList = 81BA81401A49DA1800E65899 /* Build configuration list for PBXProject "ParseStarter-Swift" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 81BA813C1A49DA1800E65899;
+ productRefGroup = 81BA81461A49DA1800E65899 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 81C066EB1BFAC1D4001E0658 /* ParseStarter */,
+ 81993FC71B69AA940077D6B9 /* Bootstrap */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 81C066EA1BFAC1D4001E0658 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 81C066FE1BFAC330001E0658 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 81993FCB1B69AA9F0077D6B9 /* ShellScript */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "if [[ ! -d \"Bolts.framework\" ]]; then\n cp -R ../../../Vendor/Bolts-ObjC/build/tvOS/Bolts.framework .\nfi\n";
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 81C066E81BFAC1D4001E0658 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 81C066F11BFAC1D4001E0658 /* ViewController.swift in Sources */,
+ 81C066EF1BFAC1D4001E0658 /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 81C066FC1BFAC308001E0658 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 81993FC71B69AA940077D6B9 /* Bootstrap */;
+ targetProxy = 81C066FB1BFAC308001E0658 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 81C066F21BFAC1D4001E0658 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 81C066F31BFAC1D4001E0658 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 81993FC81B69AA950077D6B9 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = appletvos;
+ };
+ name = Debug;
+ };
+ 81993FC91B69AA950077D6B9 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = appletvos;
+ };
+ name = Release;
+ };
+ 81BA81621A49DA1800E65899 /* 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[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ 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;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 81BA81631A49DA1800E65899 /* 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[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ 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;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 81C066F91BFAC1D4001E0658 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)",
+ );
+ GCC_NO_COMMON_BLOCKS = YES;
+ INFOPLIST_FILE = ParseStarter/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.parse.starter;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = appletvos;
+ TARGETED_DEVICE_FAMILY = 3;
+ TVOS_DEPLOYMENT_TARGET = 9.0;
+ };
+ name = Debug;
+ };
+ 81C066FA1BFAC1D4001E0658 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)",
+ );
+ GCC_NO_COMMON_BLOCKS = YES;
+ INFOPLIST_FILE = ParseStarter/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.parse.starter;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = appletvos;
+ TARGETED_DEVICE_FAMILY = 3;
+ TVOS_DEPLOYMENT_TARGET = 9.0;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 81993FCA1B69AA950077D6B9 /* Build configuration list for PBXAggregateTarget "Bootstrap" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 81993FC81B69AA950077D6B9 /* Debug */,
+ 81993FC91B69AA950077D6B9 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 81BA81401A49DA1800E65899 /* Build configuration list for PBXProject "ParseStarter-Swift" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 81BA81621A49DA1800E65899 /* Debug */,
+ 81BA81631A49DA1800E65899 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 81C066F81BFAC1D4001E0658 /* Build configuration list for PBXNativeTarget "ParseStarter" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 81C066F91BFAC1D4001E0658 /* Debug */,
+ 81C066FA1BFAC1D4001E0658 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 81BA813D1A49DA1800E65899 /* Project object */;
+}
diff --git a/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter-Swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter-Swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000..b162c5ad7
--- /dev/null
+++ b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter-Swift.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter-Swift.xcodeproj/xcshareddata/xcschemes/ParseStarter-tvOS.xcscheme b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter-Swift.xcodeproj/xcshareddata/xcschemes/ParseStarter-tvOS.xcscheme
new file mode 100644
index 000000000..98a84ee5e
--- /dev/null
+++ b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter-Swift.xcodeproj/xcshareddata/xcschemes/ParseStarter-tvOS.xcscheme
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter/AppDelegate.swift b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter/AppDelegate.swift
new file mode 100644
index 000000000..98d31f5d0
--- /dev/null
+++ b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter/AppDelegate.swift
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2015-present, Parse, LLC.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+import UIKit
+
+import Parse
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+ var window: UIWindow?
+
+ //--------------------------------------
+ // MARK: - UIApplicationDelegate
+ //--------------------------------------
+
+ func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
+ // ****************************************************************************
+ //
+ // Uncomment and fill in with your Parse credentials:
+ // Parse.setApplicationId("your_application_id", clientKey: "your_client_key")
+ //
+ // ****************************************************************************
+
+ PFUser.enableAutomaticUser()
+
+ let defaultACL = PFACL();
+ defaultACL.publicReadAccess = true // If you would like all objects to be private by default, remove this line.
+ PFACL.setDefaultACL(defaultACL, withAccessForCurrentUser:true)
+
+ return true
+ }
+
+}
diff --git a/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter/Base.lproj/Main.storyboard b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter/Base.lproj/Main.storyboard
new file mode 100644
index 000000000..ad0a98962
--- /dev/null
+++ b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter/Base.lproj/Main.storyboard
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter/Info.plist b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter/Info.plist
new file mode 100644
index 000000000..4f338601b
--- /dev/null
+++ b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter/Info.plist
@@ -0,0 +1,32 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UIMainStoryboardFile
+ Main
+ UIRequiredDeviceCapabilities
+
+ arm64
+
+
+
diff --git a/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter/ViewController.swift b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter/ViewController.swift
new file mode 100644
index 000000000..69d3e7c40
--- /dev/null
+++ b/ParseStarterProject/tvOS/ParseStarterProject-Swift/ParseStarter/ViewController.swift
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2015-present, Parse, LLC.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+import UIKit
+import Parse
+
+class ViewController: UIViewController {
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view, typically from a nib.
+ }
+
+ override func didReceiveMemoryWarning() {
+ super.didReceiveMemoryWarning()
+ // Dispose of any resources that can be recreated.
+ }
+
+}
diff --git a/Rakefile b/Rakefile
index 62d858c7a..8f56b3ceb 100644
--- a/Rakefile
+++ b/Rakefile
@@ -299,6 +299,7 @@ namespace :test do
osx_schemes = ['ParseOSXStarterProject',
'ParseOSXStarterProject-Swift']
watchos_schemes = ['ParseWatchStarter-watchOS']
+ tvos_schemes = ['ParseStarter-tvOS']
ios_schemes.each do |scheme|
task = XCTask::BuildTask.new do |t|
@@ -342,6 +343,20 @@ namespace :test do
end
results << task.execute
end
+ tvos_schemes.each do |scheme|
+ task = XCTask::BuildTask.new do |t|
+ t.directory = script_folder
+ t.workspace = 'Parse.xcworkspace'
+
+ t.scheme = scheme
+ t.configuration = 'Debug'
+ t.destinations = ["\"platform=tvOS Simulator,OS=9.0,name=Apple TV 1080p\"",]
+
+ t.actions = [XCTask::BuildAction::CLEAN, XCTask::BuildAction::BUILD]
+ t.formatter = XCTask::BuildFormatter::XCPRETTY
+ end
+ results << task.execute
+ end
results.each do |result|
unless result