If you have a lot of schemes in your Xcode project, searching for the one you want to run may be slow, even if you use the “search as you type” feature. Because of this, you may choose to hide or not generate schemes that you don’t regularly use. Here’s an example of an Xcode project with a lot of schemes:
There’s an alternative. Until we have better scheme management in Xcode, let’s make our life easier by writing some AppleScript commands for the schemes that we typically use and bind them to some key combinations.
Create an AppleScript file (MyScript.applescript, for example) in your favorite editor and write the following code:
#!/usr/bin/osascript
tell application "Xcode"
open "<Path to MyProject.xcworkspace>"
set workspaceDocument to workspace document "MyProject.xcworkspace"
repeat 120 times
if loaded of workspaceDocument is true then
exit repeat
end if
delay 0.5
end repeat
if loaded of workspaceDocument is false then
error "Xcode workspace did not finish loading within timeout. If it's a very large project you could try increasing the timeout."
end if
set schemeToUse to scheme "MyProjectApp" of workspaceDocument
set active scheme of workspaceDocument to schemeToUse
set destinationToUse to run destination "iPad Air 2" of workspaceDocument
set active run destination of workspaceDocument to destinationToUse
end tell
This script will switch and wait for the workspace MyProject.xcworkspace to load (if it’s not already loaded) and then select the scheme “MyProjectApp”, with “iPad Air 2” as the run destination. Once you have switched the current scheme and run destination in Xcode, you could even build it automatically using AppleScript:
set buildResult to build workspace document 1
Save the script and mark it as executable by running this shell command:
chmod +x MyScript.applescript
Go to Xcode, Behaviors, Edit Behaviors. Click on the plus (+) sign, check Run and select the MyScript.applescript file. You can also set a keybinding for the new Xcode behavior (recommended).