Can I run Swift REPL with iOS SDK?
I want to import and use UIKit in REPL, but no success.
$ xcrun --sdk iphonesimulator8.1 --show-sdk-p
The Swift REPL currently does not support iOS device or iOS simulator.
You may achieve it by running repl from lldb, which attached to iOS application process (of your Xcode project).
Build project in Xcode, or:
$ xcrun xcodebuild -configuration Debug -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.3' clean build
Start standalone lldb for your iOS project:
$ xcrun lldb -- $DerivedData/$AppName/Build/Products/Debug-iphonesimulator/$AppName.app
(lldb) process attach --name '$AppName' --waitfor
You may find useful platform select ios-simulator and platform connect $UDID commands here.
Run your iOS application in iOS simulator from Xcode
Or from command line:
Boot simulator
From instruments:
$ xcrun instruments -w "`xcrun instruments -s | grep 'iPhone 7 (10.3)' | head -1`"
Or as an application:
$ open -a "Simulator" --args -CurrentDeviceUDID "`xcrun instruments -s | grep 'iPhone 7 (10.3)' | head -1 | sed -E -e 's/[^][]*\[([^][]*)\][^][]*/\1/g'`"
Install the application on simulator, and launch it:
$ xcrun simctl install booted $DerivedData/$AppName/Build/Products/Debug-iphonesimulator/$AppName.app
$ xcrun simctl launch booted $AppBundleID
Also, you can even use xcrun simctl launch --wait-for-debugger and start lldb later.
Or with ios-sim:
Optionally boot simulator & install the application:
$ ios-sim start --devicetypeid 'iPhone-7, 10.3'
$ ios-sim install --devicetypeid 'iPhone-7, 10.3' $DerivedData/$AppName/Build/Products/Debug-iphonesimulator/$AppName.app
Launch it:
$ ios-sim launch --devicetypeid 'iPhone-7, 10.3' $DerivedData/$AppName/Build/Products/Debug-iphonesimulator/$AppName.app
Attach to process in iOS simulator in lldb:
(lldb) continue
(lldb) process interrupt
Run swift repl.
(lldb) repl
1> import UIKit
2>
Furthermore, as opposed to swift repl in Xcode debug terminal emulator, here we have working source autocompletion and command history navigation.