Я щойно створив новий проект Swift в Xcode. Мені цікаво, яку версію Swift використовує.
Як я можу побачити в Xcode або терміналі, яку версію Swift я використовую всередині свого проекту?
Я щойно створив новий проект Swift в Xcode. Мені цікаво, яку версію Swift використовує.
Як я можу побачити в Xcode або терміналі, яку версію Swift я використовую всередині свого проекту?
Відповіді:
В налаштуваннях проекту є блок "Swift Compiler - Languages", який зберігає інформацію про версію мови Swift у форматі "ключ-значення". Він покаже вам всю доступну (підтримувану) версію мови Swift для вашого Xcode та активної версії також галочкою.
Проект ► (Виберіть ціль проекту) ► Налаштування збірки ► (Введіть 'swift_version' на панелі пошуку) Швидка мова компілятора ► Версія мови швидкої мови ► Клацніть на списку мов, щоб відкрити її (і на будь-якому списку з’явиться галочка -item, це буде поточна швидка версія).
Подивіться цей знімок для легкого розуміння:
За допомогою наступного коду програмно ви можете знайти версію Swift, що підтримується вашим проектом.
#if swift(>=5.2)
print("Hello, Swift 5.2")
#elseif swift(>=5.1)
print("Hello, Swift 5.1")
#elseif swift(>=5.0)
print("Hello, Swift 5.0")
#elseif swift(>=4.2)
print("Hello, Swift 4.2")
#elseif swift(>=4.1)
print("Hello, Swift 4.1")
#elseif swift(>=4.0)
print("Hello, Swift 4.0")
#elseif swift(>=3.2)
print("Hello, Swift 3.2")
#elseif swift(>=3.0)
print("Hello, Swift 3.0")
#elseif swift(>=2.2)
print("Hello, Swift 2.2")
#elseif swift(>=2.1)
print("Hello, Swift 2.1")
#elseif swift(>=2.0)
print("Hello, Swift 2.0")
#elseif swift(>=1.2)
print("Hello, Swift 1.2")
#elseif swift(>=1.1)
print("Hello, Swift 1.1")
#elseif swift(>=1.0)
print("Hello, Swift 1.0")
#endif
Ось результат за допомогою Playground (з Xcode 11.x )
Що я роблю, це сказати в Терміналі:
$ xcrun swift -version
Вихід для Xcode 6.3.2:
Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)
Звичайно, це передбачає, що ваш xcrun
правильно вказує на вашу копію Xcode. Якщо, як я, ви жонглюєте декількома версіями Xcode, це може викликати занепокоєння! Щоб переконатися, що це так, скажіть
$ xcrun --find swift
і подивіться на шлях до Xcode, який він вам показує. Наприклад:
/Applications/Xcode.app/...
Якщо це ваш Xcode, то вихід з нього -version
буде точним. Якщо вам потрібно повторно вказати xcrun
, скористайтеся спливаючим меню Інструменти командного рядка на панелі налаштувань Xcode's Locations.
xcode-select -p
для друку шляху до Xcode, який використовуватиме xcrun, та sudo xcode-select -s /path/to/Xcode.app
змінити його.
З Xcode 8.3 далі Build Settings
є ключ Swift Language Version
зі значенням швидкої версії, яку використовує ваша мета.
Для старих Xcodes використовуйте це рішення, відкрийте термінал і введіть наступні команди
Випадок 1: Ви встановили лише одну програму Xcode
swift -version
Випадок 2: Ви встановили кілька додатків Xcode
Перемикач active developer directory
(Замініть Xcode_7.3.app
наступну команду своїм ім'ям файлу програми Xcode з каталогу додатків, для якого потрібно перевірити швидку версію)
sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
Тоді
swift -version
ПРИМІТКА: Від Xcode 8 до Xcode 8.2.x ви можете використовувати swift 2.3, навіть якщо Xcode 8 використовує швидку версію 3.x як стандартну швидку версію. Щоб використовувати swift 2.3, просто увімкніть прапор Use Legacy Swift Language Version
на YES
з Build Setting
і XCode використовуватиме Swift 2.3 для цієї мети проекту.
Ви можете побачити та вибрати, яку версію Xcode версії Swift використовують у:
Мета -> Налаштування збірки -> Мовна версія версії :
Це доступно в Xcode 8.3 та Xcode 9 (не перевіряли старіші версії)
Swift Language Version
не відображається як налаштування в моєму проекті Xcode 8.2.1. Це є Use Legacy Swift Language Version
.
Swift Language Version
тут не існувало Build Settings
до Xcode 8.3 .... у попередніх версіях Xcode 8.x Use Legacy Swift Language Version
, No
= Swift 3 та Yes
= Swift 2.3
Ця публікація reddit допомогла мені: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet
Xcode 8 використовує Swift 3.0 за замовчуванням. Але ви можете увімкнути Swift 2.3. Перейдіть до "Налаштування збірки" проекту та встановіть "Використовувати застарілу мову швидкої версії" на ТАК.
Добрий старий reddit :)
Щоб побачити версію за замовчуванням swift, встановлену на вашій машині, потім з командного рядка введіть наступне:
swift --version
Apple Swift версія 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)
Мета: x86_64-apple-darwin17.6.0
Це, швидше за все, версія, яка входить у версію магазину додатків Xcode, яку ви встановили (якщо ви її не змінили).
Якщо ви хочете визначити, що фактична версія Swift використовується в певній версії Xcode (наприклад, бета-версія), то з командного рядка викликайте швидкий бінарний файл у пакеті Xcode і передайте йому параметр --version
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version
Apple Swift версія 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)
Мета: x86_64-apple-darwin17.6.0
/usr/bin/swiftc --version
Бонусний внесок: я використовую користувальницький скрипт node.js для витягування чистого рядка для використання з документацією Jazzy. Ви можете скористатися цим, якщо зможете знайти місце для його роботи у своєму розробнику:
Запрошено зі сценарію Bash:
#!/bin/bash
swiftversion=$(node SwiftVerSlicer.js "${xcrun swift -version}");
echo $swiftversion
SwiftVerSlicer.js:
// begin script
const inputString = `${process.argv[2]}`
let searchTerm = (inputString.indexOf('(') - 1)//-1 cause whitespace
let version = inputString.slice(0,searchTerm)
console.log(version)
// end script
Ви також можете використовувати регулярний вираз, але робіть все, що завгодно:]