ฉันจะดูเวอร์ชั่นของ Swift ที่ใช้อยู่ได้อย่างไร


567

ฉันเพิ่งสร้างโครงการ Swift ใหม่ภายใน Xcode ฉันสงสัยว่า Swift รุ่นใดที่ใช้

ฉันจะดูได้อย่างไรใน Xcode หรือเทอร์มินัลฉันใช้ Swift รุ่นใดในโครงการของฉัน


7
นอกจากนี้ชื่อของstackoverflow.com/questions/29140476/...ผมพบว่าไม่มีความคล้ายคลึงกันกับคำถามนี้ว่าพอที่จะติดป้ายคำถามนี้เป็นมันซ้ำกัน สาระสำคัญของคำถามนี้ไม่ใช่วิธีการค้นหารุ่นของ Swift โดยทางโปรแกรมแต่วิธีค้นหารุ่นของ Swift ในลักษณะทั่วไป (ผ่านเทอร์มินัลหรือ Xcode หรืออื่น ๆ ) นี่คือความแตกต่างที่ยิ่งใหญ่
David Snabel

คำตอบ:


407

การตั้งค่าการสร้างโครงการมีบล็อก 'Swift Compiler - Languages' ซึ่งเก็บข้อมูลเกี่ยวกับ Swift Language Version ในรูปแบบคีย์ - ค่า มันจะแสดงให้คุณเห็นทั้งหมดที่มีอยู่ (ได้รับการสนับสนุน) เวอร์ชั่นภาษา Swift สำหรับ Xcode ของคุณและรุ่นที่ใช้งานด้วยเครื่องหมายถูก

โครงการ► (เลือกเป้าหมายโครงการของคุณ) ►สร้างการตั้งค่า► (พิมพ์ 'swift_version' ในแถบค้นหา) Swift Compiler Language ► Swift Language Version ►คลิกที่รายการภาษาเพื่อเปิด (และจะมีเครื่องหมายถูกที่รายการใดรายการหนึ่ง) - รายการนั้นจะเป็นเวอร์ชั่นที่รวดเร็วปัจจุบัน)

ดูภาพรวมนี้เพื่อความเข้าใจง่าย:

xcode พร้อมไฮไลต์พื้นที่ที่อธิบายไว้


ด้วยความช่วยเหลือของรหัสต่อไปนี้โดยทางโปรแกรมคุณสามารถค้นหา Swift version ที่โครงการของคุณรองรับ

#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

นี่คือผลการใช้สนามเด็กเล่น (พร้อมXcode 11.x )

ป้อนคำอธิบายรูปภาพที่นี่


10
ฉันคิดว่านี่เป็นคำตอบที่ถูกต้อง ง่ายกว่าเทอร์มินัลโทร (โดยเฉพาะถ้าคุณติดตั้ง Xcode เวอร์ชันอื่น)
Mike Keskinov

17
นี่เป็นคำตอบที่ถูกต้องเพราะเวอร์ชั่น swift ได้รับการกำหนดค่าตามเป้าหมาย
Andrew Paul Simmons

2
ฉันไม่เห็นสิ่งนี้ในโครงการของฉันด้วย Xcode 8.1
ออกจากระบบ

6
คุณสามารถดูคุณสมบัตินี้ได้ใน xcode เวอร์ชันล่าสุด
Parkhya Dev

1
@JonMcClung - ตัวเลือกเดียวกันนี้มีประโยชน์ใน Xcode 10.1 เช่นกัน ฉันเพิ่งตรวจสอบมัน
Krunal

500

สิ่งที่ฉันพูดในเทอร์มินัล:

$ 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


8
นอกจากนี้คุณยังสามารถใช้xcode-select -pพิมพ์เส้นทางไปยัง Xcode ที่ xcrun จะใช้และsudo xcode-select -s /path/to/Xcode.appเปลี่ยนได้
Jack Lawrence

4
ฉันเพิ่งเริ่มเรียนรู้การพัฒนา iOS และฉันประหลาดใจที่ xcode ไม่อนุญาตให้คุณเลือกเวอร์ชันของ swift หรือแม้แต่แจ้งให้คุณทราบเวอร์ชันจาก GUI
อเล็กซ์

@ RadekWilczak ฉันไม่รู้ว่าคุณหมายถึงอะไรโดย "ควรเป็น" ฉันเพิ่งคัดลอกคำสั่งที่โพสต์และวางลงใน Terminal แล้วกด Return และใช้งานได้ ดังนั้นอาจมีทางเลือกอื่น แต่สิ่งที่ฉันพูดไม่ผิด
ด้าน

1
นี่เป็นคำตอบที่ผิด เนื่องจากมีการกำหนดค่า swift ต่อเป้าหมาย ดูคำตอบด้านล่างจาก @Krunal สำหรับคำตอบที่ดีที่สุด
Andrew Paul Simmons

ฉันเห็นด้วยกับทั้งหมด "วิธีที่ถูกต้องคือการตั้งค่า SWIFT_VERSION" ต่อโครงการ อย่างไรก็ตามในเวอร์ชัน Xcode รุ่นก่อนหน้านี้ 8.2 มันไม่ได้ระบุอย่างชัดเจนใน UI ว่า XCode รุ่นใดที่ได้รับการสนับสนุนในโครงการและเพิ่งมี "ใช้ Legacy Swift Language Version" ใน UI ที่มีใช่ไม่ใช่ไม่ได้ระบุ แนวทางบรรทัดคำสั่งมีประโยชน์อย่างยิ่งที่จะสามารถค้นหาคำตอบได้อย่างรวดเร็วสำหรับเวอร์ชั่นสูงสุดของ swift
truedat101

104

เปิด Terminal และเขียน:

swift -version

12
นี่ไม่จำเป็นต้องเป็นเวอร์ชั่นของสวิฟท์ที่ Xcode เห็น นอกจากนี้คุณสามารถมีความรวดเร็วโดยไม่ต้องมี Xcode
asiby

64

ตั้งแต่ Xcode 8.3 ขึ้นไปBuild Settingsมีรหัสที่Swift Language Versionมีค่าเป็น swift ที่เป้าหมายของคุณใช้

สำหรับ 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 จะใช้ swift 3.x เป็นเวอร์ชัน swift เริ่มต้น หากต้องการใช้งานที่รวดเร็ว 2.3 เพียงแค่เปิดธงUse Legacy Swift Language VersionไปYESจากBuild Settingและ XCode จะใช้สวิฟท์ 2.3 เป้าหมายโครงการที่


21

คุณสามารถดูและเลือก Xcode เวอร์ชัน Swift ที่ใช้ใน:

เป้าหมาย -> การตั้งค่าการสร้าง -> เวอร์ชันภาษา Swift :

ป้อนคำอธิบายรูปภาพที่นี่

มีให้ใน Xcode 8.3 และ Xcode 9 (ยังไม่ได้ตรวจสอบเวอร์ชั่นที่เก่ากว่า)


2
Swift Language Versionไม่ได้เป็นการตั้งค่าในโครงการ Xcode 8.2.1 ของฉัน Use Legacy Swift Language Versionมันไม่ได้
Chris Prince

1
@ChrisPrince ใช่Swift Language Versionไม่ได้อยู่ที่นี่ในBuild Settingsจนกว่า Xcode 8.3 .... ในรุ่นก่อน Xcode 8.x Use Legacy Swift Language Version, No= สวิฟท์ 3 และYes= สวิฟท์ 2.3
วิลเลียม GP

17

โพสต์ reddit นี้ช่วยฉันได้ที่: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet

Xcode 8 ใช้ Swift 3.0 เป็นค่าเริ่มต้น แต่คุณสามารถเปิดใช้ Swift 2.3 ได้ ไปที่การตั้งค่า Build ของโครงการและตั้งค่า 'Use Legacy Swift Language Version' เป็น YES

Reddit เก่าดี :)


1
ฉันไม่พบสิ่งนี้ด้วยการค้นหา 'Use Legacy Swift Language Version' หรือ 'Legacy'
JerryZhou

ฉันใช้ Xcode เวอร์ชัน 8.3.2 (8E2002) ล่าสุดและ swift 3 ในเวอร์ชั่นภาษา Swift ตอนนี้ฉันต้องการเปลี่ยนสิ่งนี้เป็น swift 2.3 แต่มีเพียงหนึ่งตัวเลือก swift 3.0 และ 2nd เท่านั้นที่ไม่ได้ระบุ ดังนั้นคุณจะช่วยแนะนำว่ามันจะเป็นไปได้อย่างไร รับ 2.3 อย่างรวดเร็วในโครงการปัจจุบันของฉัน @alexisSchreier
Arsal

14

หากต้องการดูรุ่นเริ่มต้นของ swift ที่ติดตั้งบนเครื่องของคุณจากบรรทัดคำสั่งให้พิมพ์ดังต่อไปนี้:

swift --version

Apple Swift เวอร์ชัน 4.1.2 (clift-902.0.54 clang-902.0.39.2)

เป้าหมาย: x86_64-apple-darwin17.6.0

นี่น่าจะเป็นเวอร์ชั่นที่รวมอยู่ในเวอร์ชัน Xcode ของ app store ที่คุณติดตั้ง (ยกเว้นว่าคุณได้ทำการเปลี่ยนแปลง)

หากคุณต้องการกำหนดเวอร์ชันจริงของ Swift ที่ใช้โดย Xcode (เบต้าเป็นต้น) จากบรรทัดคำสั่งให้เรียกใช้ swift binary ภายในชุด 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



1

ฉันใช้ Swift จาก Google Colab นี่คือวิธีการตรวจสอบใน Colab

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

ผลที่ได้คือ 5.0-dev


-1

การมีส่วนร่วมโบนัส: ฉันใช้สคริปต์ 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

คุณสามารถใช้ regex แน่นอน แต่ทำสิ่งที่คุณต้องการ:]


-1

เพียงแค่ป้อนคำสั่ง swift ในเทอร์มินัลมันจะแสดงเวอร์ชันขณะที่เข้าสู่คอนโซล Swift (บางอย่างเช่นด้านล่าง)

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.

-1
  1. เลือกโครงการของคุณ
  2. สร้างการตั้งค่า
  3. ค้นหา "ภาษา swift"
  4. ตอนนี้คุณสามารถดูเวอร์ชันที่รวดเร็วที่คุณใช้ในโครงการของคุณ

https://i.stack.imgur.com/Ojn3m.png


แตกต่างจากโซลูชันแรกที่กำหนดในstackoverflow.com/a/46080904/1187415อย่างไร
Martin R

ดีฉันกำลังโยนไดเรกทอรีโครงการหลักไปและเมื่อคุณพิมพ์ "ภาษาสวิฟท์" มันเป็นเพียงการแสดง Swift รุ่นด้านบนไม่มีอะไรในการสร้างการตั้งค่าอื่นที่ไม่ใช่ว่า ..
ไวรัส goti

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.