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?
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?
Jawaban:
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:
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 )
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 xcrun
menunjuk 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 -version
akurat. Jika Anda perlu melakukan repoint xcrun
, gunakan menu pop-up Command Line Tools di panel preferensi Lokasi Xcode.
xcode-select -p
untuk mencetak path ke Xcode yang akan digunakan xcrun, dan sudo xcode-select -s /path/to/Xcode.app
untuk mengubahnya.
Dari Xcode 8.3 dan seterusnya Build Settings
memiliki kunci Swift Language Version
dengan 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.app
dari 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 Version
ke YES
dari Build Setting
dan XCode akan menggunakan Swift 2.3 untuk target proyek itu.
Anda dapat melihat dan memilih Xcode versi Swift mana yang digunakan di:
Target -> Pengaturan Bangun -> Versi Bahasa Swift :
Ini tersedia dalam Xcode 8.3 dan Xcode 9 (belum memeriksa versi yang lebih lama)
Swift Language Version
tidak muncul sebagai pengaturan dalam proyek Xcode 8.2.1 saya. Itu memang ada Use Legacy Swift Language Version
.
Swift Language Version
tidak ada di sini Build Settings
sampai Xcode 8.3 .... di versi Xcode 8.x sebelumnya Use Legacy Swift Language Version
, No
= Swift 3, dan Yes
= Swift 2.3
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 :)
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
/usr/bin/swiftc --version
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
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:]
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.