Bagaimana saya melihat versi Swift yang saya gunakan?


568

Saya baru saja membuat proyek Swift baru dalam Xcode. Saya bertanya-tanya versi Swift mana yang digunakannya.

Bagaimana saya bisa melihat, dalam Xcode atau terminal, versi Swift apa yang saya gunakan di dalam proyek saya?


7
Selain judul stackoverflow.com/questions/29140476/... Saya tidak menemukan kesamaan dengan pertanyaan ini yang cukup untuk melabeli pertanyaan ini karena merupakan duplikat . Inti dari pertanyaan ini bukanlah bagaimana menemukan versi Swift secara terprogram , tetapi bagaimana menemukan versi Swift secara umum (melalui terminal atau Xcode atau dll.). Ini perbedaan besar.
David Snabel

Jawaban:


407

Pengaturan membangun proyek memiliki blok 'Swift Compiler - Languages', yang menyimpan informasi tentang Versi Bahasa Swift dalam format nilai kunci. Ini akan menunjukkan kepada Anda semua Versi Bahasa Swift yang tersedia (didukung) untuk Xcode Anda dan versi aktif juga dengan tanda centang.

Proyek ► (Pilih Target Proyek Anda) ► Setelan Bangun ► (Ketik 'swift_version' di bilah pencarian) Bahasa Kompilasi Cepat ► Versi Bahasa Swift ► Klik pada daftar Bahasa untuk membukanya (dan akan ada tanda centang pada salah satu daftar) -item, itu akan menjadi versi cepat saat ini).

Lihat snapshot ini, untuk memudahkan pemahaman:

xcode dengan area yang dijelaskan disorot


Dengan bantuan kode berikut, secara terprogram Anda dapat menemukan versi Swift yang didukung oleh proyek Anda.

#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

Ini adalah hasil menggunakan Playground (dengan Xcode 11.x )

masukkan deskripsi gambar di sini


10
Saya pikir ini jawaban yang benar. Lebih mudah daripada menelepon terminal. (terutama jika Anda memiliki versi Xcode yang berbeda diinstal)
Mike Keskinov

17
Ini adalah jawaban yang benar karena versi cepat dikonfigurasikan pada basis per target.
Andrew Paul Simmons

2
Saya tidak melihat propoerty ini dalam proyek saya dengan Xcode 8.1
logoff

6
Anda dapat melihat properti ini di versi terbaru dari xcode
Parkhya Dev

1
@JonMcClung - Opsi yang sama juga tersedia di Xcode 10.1. Saya baru saja memeriksanya.
Krunal

500

Apa yang saya lakukan adalah katakan di Terminal:

$ xcrun swift -version

Output untuk Xcode 6.3.2 adalah:

Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)

Tentu saja itu mengasumsikan bahwa Anda xcrunmenunjuk salinan Xcode Anda dengan benar. Jika, seperti saya, Anda menyulap beberapa versi Xcode, itu bisa mengkhawatirkan! Untuk memastikan itu, katakan

$ xcrun --find swift

dan lihat jalur ke Xcode yang ditunjukkannya kepada Anda. Sebagai contoh:

/Applications/Xcode.app/...

Jika itu Xcode Anda, maka output dari -versionakurat. Jika Anda perlu melakukan repoint xcrun, gunakan menu pop-up Command Line Tools di panel preferensi Lokasi Xcode.


8
Anda juga dapat menggunakan xcode-select -puntuk mencetak path ke Xcode yang akan digunakan xcrun, dan sudo xcode-select -s /path/to/Xcode.appuntuk mengubahnya.
Jack Lawrence

4
Saya baru mulai belajar pengembangan ios dan saya terkejut bahwa xcode tidak membiarkan Anda memilih versi swift atau bahkan memberi tahu Anda versi dari GUI.
Alex

@ RadekWilczak Saya tidak tahu apa yang Anda maksud dengan "seharusnya". Saya baru saja menyalin perintah yang diposting dan disisipkan ke Terminal dan tekan Return, dan itu berhasil. Jadi mungkin ada alternatif lain, tetapi apa yang saya katakan tidak salah.
matt

1
Ini memberi saya jawaban yang salah. Karena swift dikonfigurasi per target. Lihat jawaban di bawah ini dari @ Kwrunal untuk jawaban terbaik.
Andrew Paul Simmons

Saya setuju dengan semua "cara yang benar adalah mengatur SWIFT_VERSION" per proyek. Namun, dalam versi Xcode sebelumnya seperti 8.2, itu tidak menyatakan dengan jelas di UI versi XCode apa yang didukung dalam proyek, dan hanya memiliki "Gunakan Versi Bahasa Swift Legacy" di UI dengan Ya, Tidak, tidak ditentukan. Pendekatan baris perintah sangat berguna untuk dapat dengan cepat menanyakan jawaban untuk apa versi max swift yang tersedia.
truedat101

104

Buka Terminal dan tulis:

swift -version

12
Ini belum tentu versi cepat yang Xcode lihat. Selain itu, Anda dapat melakukan swift tanpa memiliki Xcode.
asiby

64

Dari Xcode 8.3 dan seterusnya Build Settingsmemiliki kunci Swift Language Versiondengan nilai versi cepat yang digunakan target Anda.

Untuk Xcode yang lebih lama gunakan solusi ini, buka terminal dan ketik perintah berikut

Kasus 1: Anda hanya menginstal satu Aplikasi Xcode

swift -version

Kasus 2: Anda telah menginstal beberapa Aplikasi Xcode

  • Beralih active developer directory(Ganti Xcode_7.3.appdari perintah berikut dengan nama file aplikasi Xcode Anda dari direktori Aplikasi yang ingin Anda periksa versi cepatnya)

     sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
  • Kemudian

     swift -version

CATATAN: Dari Xcode 8 ke Xcode 8.2.x Anda dapat menggunakan swift 2.3 meskipun Xcode 8 menggunakan swift 3.x sebagai versi swift default. Untuk menggunakan swift 2.3, cukup nyalakan flag Use Legacy Swift Language Versionke YESdari Build Settingdan XCode akan menggunakan Swift 2.3 untuk target proyek itu.


21

Anda dapat melihat dan memilih Xcode versi Swift mana yang digunakan di:

Target -> Pengaturan Bangun -> Versi Bahasa Swift :

masukkan deskripsi gambar di sini

Ini tersedia dalam Xcode 8.3 dan Xcode 9 (belum memeriksa versi yang lebih lama)


2
Swift Language Versiontidak muncul sebagai pengaturan dalam proyek Xcode 8.2.1 saya. Itu memang ada Use Legacy Swift Language Version.
Chris Prince

1
@ ChrisPrince Ya, Swift Language Versiontidak ada di sini Build Settingssampai Xcode 8.3 .... di versi Xcode 8.x sebelumnya Use Legacy Swift Language Version, No= Swift 3, dan Yes= Swift 2.3
William GP

17

Posting reddit ini membantu saya: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet

Xcode 8 menggunakan Swift 3.0 sebagai default. Tetapi Anda dapat mengaktifkan Swift 2.3. Pergi ke Pengaturan Bangun proyek dan set 'Gunakan Versi Bahasa Swift Legacy' ke YES.

Good reddit :)


1
Saya tidak dapat menemukan ini dengan mencari 'Gunakan Versi Bahasa Legacy Swift' atau 'Legacy'
JerryZhou

Saya menggunakan Xcode Version 8.3.2 (8E2002) terbaru dan swift 3 di Swift Language Version. Sekarang saya ingin mengubahnya ke swift 2.3 tetapi hanya ada satu opsi swift 3.0 dan 2nd tidak ditentukan. jadi tolong bantu bagaimana ini mungkin? mendapatkan Swift 2.3 di proyek saya saat ini? @alexisSchreier
Arsal

15

Untuk melihat versi default swift yang diinstal pada mesin Anda kemudian dari baris perintah, ketikkan yang berikut:

swift --version

Apple Swift versi 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)

Target: x86_64-apple-darwin17.6.0

Kemungkinan besar ini adalah versi yang disertakan dalam versi Xcode app store yang telah Anda instal (kecuali Anda telah mengubahnya).

Jika Anda ingin menentukan versi aktual Swift yang digunakan oleh versi Xcode tertentu (beta, misalnya) dari baris perintah, aktifkan biner cepat dalam bundel Xcode dan berikan parameter --version

/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version

Apple Swift versi 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)

Target: x86_64-apple-darwin17.6.0



1

Saya menggunakan Swift dari Google Colab. Berikut cara mengeceknya di Colab.

!/swift/toolchain/usr/bin/swift --version

Hasilnya adalah 5.0-dev


0

Dalam hal siapa pun mencari pemetaan satu-ke-satu yang cepat dari versi Swift berdasarkan Versi Xcode:

Xcode 11.5  :       Swift version 5.2.4

Xcode 11.4  :       Swift version 5.2

Xcode 11.3  :       Swift version 5.1.3

Xcode 11.2.1:       Swift version 5.1.2

Diperoleh dengan menjalankan perintah berikut sebagaimana disebutkan pada versi Xcode yang berbeda:

/Applications/Xcode11.5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version

-1

Kontribusi bonus: Saya menggunakan skrip node.js khusus untuk mengekstrak string bersih untuk digunakan dengan dokumentasi Jazzy. Anda mungkin dapat menggunakan ini jika Anda dapat menemukan tempat untuk mengerjakannya dalam proses dev Anda:

Dipanggil dari skrip 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

Anda juga dapat menggunakan regex tentu saja, tetapi lakukan apa pun yang Anda suka:]


-1

Dengan hanya memasukkan perintah swift di terminal, ia akan menampilkan versi, sambil masuk ke konsol Swift. (Sesuatu seperti di bawah ini)

System-IOSs-MacBook-Air:~ system$ swift
Welcome to Apple Swift version 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7).
Type :help for assistance.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.