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-path
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk
$ xcrun --sdk iphonesimulator8.1 swift
Welcome to Swift! Type :help for assistance.
1> import UIKit
/var/folders/kb/xgglxb597sv6h8b744d5vft00000gn/T/lldb/92014/repl1.swift:2:8: error: no such module 'UIKit'
import UIKit
^
$ swift -sdk `xcrun --sdk iphonesimulator8.1 --show-sdk-path`
Welcome to Swift! Type :help for assistance.
1> import UIKit
/var/folders/kb/xgglxb597sv6h8b744d5vft00000gn/T/lldb/91881/repl1.swift:2:8: error: no such module 'UIKit'
import UIKit
^
1> import Cocoa
2>
I'm using Xcode Version 6.1 (6A1052d)
All you need to do is type Swift statements and the REPL will immediately execute your code. Expression results are automatically formatted and displayed along with their type, as are the results of both variable and constant declarations. Console output flows naturally within the interactive session:
Swift is a powerful and intuitive programming language for iOS, iPadOS, macOS, tvOS, and watchOS. Writing Swift code is interactive and fun, the syntax is concise yet expressive, and Swift includes modern features developers love. Swift code is safe by design, yet also produces software that runs lightning-fast.
Swift is a powerful and intuitive programming language for macOS, iOS, watchOS, tvOS and beyond.
Find and copy the absolute path to your package, then go to File > Swift Packages > Add Package Dependency…, and enter file:// {path} as the url. At this point you can choose what branch, commit id, or version you want to use. Continue and it will automatically install and link your project as well as any dependencies.
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.
The Swift REPL currently does not support iOS device or iOS simulator.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With