Làm cách nào để biết phiên bản Swift tôi đang sử dụng?


567

Tôi vừa tạo một dự án Swift mới trong Xcode. Tôi đang tự hỏi phiên bản Swift nào đang sử dụng.

Làm cách nào tôi có thể thấy, trong Xcode hoặc thiết bị đầu cuối, tôi đang sử dụng phiên bản Swift nào trong dự án của mình?


7
Ngoài tiêu đề của stackoverflow.com/questions/29140476/ Cách tôi thấy không có sự tương đồng với câu hỏi này đủ để gắn nhãn câu hỏi này là nó trùng lặp . Bản chất của câu hỏi này không phải là làm thế nào để tìm phiên bản Swift theo chương trình , mà là cách tìm phiên bản Swift theo cách chung (thông qua thiết bị đầu cuối hoặc Xcode hoặc v.v.). Đây là một sự khác biệt lớn.
David Snabel

Câu trả lời:


407

Cài đặt xây dựng dự án có một khối 'Trình biên dịch Swift - Ngôn ngữ', lưu trữ thông tin về Phiên bản ngôn ngữ Swift ở định dạng khóa-giá trị. Nó sẽ hiển thị cho bạn tất cả Phiên bản ngôn ngữ Swift có sẵn (được hỗ trợ) cho Xcode của bạn và phiên bản hoạt động cũng bằng dấu tích.

Dự án ► (Chọn mục tiêu dự án của bạn) ► Cài đặt bản dựng ► (Nhập 'swift_version' trong thanh Tìm kiếm) Ngôn ngữ trình biên dịch Swift ► Phiên bản ngôn ngữ Swift ► Nhấp vào danh sách Ngôn ngữ để mở (và sẽ có dấu tích vào bất kỳ danh sách nào -item, đó sẽ là phiên bản nhanh chóng hiện tại).

Nhìn vào ảnh chụp này, để dễ hiểu:

xcode với các khu vực được mô tả được tô sáng


Với sự trợ giúp của mã theo sau, theo lập trình, bạn có thể tìm thấy phiên bản Swift được hỗ trợ bởi dự án của bạn.

#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

Đây là kết quả khi sử dụng Playground (với Xcode 11.x )

nhập mô tả hình ảnh ở đây


10
Tôi nghĩ rằng đây là câu trả lời chính xác. Dễ dàng hơn gọi thiết bị đầu cuối. (đặc biệt nếu bạn đã cài đặt phiên bản Xcode khác nhau)
Mike Keskinov

17
Đây là câu trả lời đúng vì phiên bản nhanh được cấu hình trên cơ sở từng mục tiêu.
Andrew Paul Simmons

2
Tôi không thấy propoerty này trong dự án của mình với Xcode 8.1
đăng xuất

6
bạn có thể thấy tài sản này trên các phiên bản mới nhất của xcode
Parkhya Dev

1
@JonMcClung - Tùy chọn tương tự cũng có sẵn trong Xcode 10.1. Tôi chỉ kiểm tra nó.
Krunal

500

Những gì tôi làm là nói trong Terminal:

$ xcrun swift -version

Đầu ra cho Xcode 6.3.2 là:

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

Tất nhiên, điều đó giả định rằng bạn xcrunđang chỉ chính xác bản sao Xcode của mình. Nếu, giống như tôi, bạn đang tung hứng một số phiên bản Xcode, điều đó có thể gây lo lắng! Để chắc chắn rằng nó là, nói

$ xcrun --find swift

và nhìn vào đường dẫn đến Xcode mà nó hiển thị cho bạn. Ví dụ:

/Applications/Xcode.app/...

Nếu đó là Xcode của bạn, thì đầu ra từ -versionlà chính xác. Nếu bạn cần bổ sung lại xcrun, hãy sử dụng menu bật lên Công cụ dòng lệnh trong ngăn tùy chọn Vị trí của Xcode.


8
Bạn cũng có thể sử dụng xcode-select -pđể in đường dẫn đến Xcode mà xcrun sẽ sử dụng và sudo xcode-select -s /path/to/Xcode.appđể thay đổi nó.
Jack Lawrence

4
Tôi mới bắt đầu học phát triển ios và tôi ngạc nhiên rằng xcode không cho phép bạn chọn phiên bản swift và thậm chí không cho bạn biết phiên bản từ GUI.
Alex

@RadekWilczak Tôi không biết ý của bạn là "nên là". Tôi chỉ sao chép lệnh đã đăng và dán vào Terminal và nhấn Return, và nó hoạt động. Vì vậy, có thể có một sự thay thế khác, nhưng những gì tôi nói không sai.
matt

1
Điều này đã cho tôi câu trả lời sai. Bởi vì swift được cấu hình cho mỗi mục tiêu. Xem câu trả lời dưới đây từ @Krunal để có câu trả lời tốt nhất.
Andrew Paul Simmons

Tôi đồng ý với tất cả "cách chính xác là đặt SWIFT_VERSION" cho mỗi dự án. Tuy nhiên, trong các phiên bản Xcode trước đó như 8.2, không nêu rõ trong UI, phiên bản XCode nào được hỗ trợ trong dự án và chỉ có "Sử dụng Phiên bản ngôn ngữ Swift kế thừa" trong Giao diện người dùng với Có, Không, không xác định. Cách tiếp cận dòng lệnh cực kỳ hữu ích để có thể nhanh chóng truy vấn câu trả lời cho phiên bản max swift có sẵn là gì.
truedat101

104

Mở Terminal và viết:

swift -version

12
Đây không nhất thiết là phiên bản swift mà Xcode nhìn thấy. Bên cạnh đó, bạn có thể có swift mà không cần Xcode.
asiby

64

Từ Xcode 8.3 trở đi Build Settingscó khóa Swift Language Versionvới giá trị phiên bản nhanh chóng mà mục tiêu của bạn đang sử dụng.

Đối với các Xcodes cũ hơn, hãy sử dụng giải pháp này, mở terminal và gõ lệnh sau (s)

Trường hợp 1: Bạn chỉ cài đặt một Ứng dụng Xcode

swift -version

Trường hợp 2: Bạn đã cài đặt nhiều Ứng dụng Xcode

  • Chuyển đổi active developer directory(Thay thế Xcode_7.3.apptừ lệnh sau bằng tên tệp ứng dụng Xcode của bạn từ thư mục Ứng dụng mà bạn muốn kiểm tra phiên bản nhanh chóng)

     sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
  • Sau đó

     swift -version

LƯU Ý: Từ Xcode 8 đến Xcode 8.2.x, bạn có thể sử dụng swift 2.3 ngay cả khi Xcode 8 sử dụng swift 3.x làm phiên bản swift mặc định. Để sử dụng nhanh chóng 2.3, chỉ cần bật cờ Use Legacy Swift Language Versionđể YEStừ Build Settingvà XCode sẽ sử dụng Swift 2.3 cho rằng mục tiêu của dự án.


21

Bạn có thể xem và chọn Xcode phiên bản Swift nào đang sử dụng trong:

Mục tiêu -> Cài đặt bản dựng -> Phiên bản ngôn ngữ Swift :

nhập mô tả hình ảnh ở đây

Điều này có sẵn trong Xcode 8.3 và Xcode 9 (chưa kiểm tra các phiên bản cũ hơn)


2
Swift Language Versionkhông xuất hiện như một cài đặt trong dự án Xcode 8.2.1 của tôi. Nó có Use Legacy Swift Language Version.
Hoàng tử Chris

1
@ChrisPrince Có, Swift Language Versionđã không tồn tại ở đây Build Settingscho đến khi Xcode 8.3 .... trong các phiên bản Xcode 8.x trước đó Use Legacy Swift Language Version, No= Swift 3 và Yes= Swift 2.3
William GP

17

Bài đăng reddit này đã giúp tôi: https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet

Xcode 8 sử dụng Swift 3.0 làm mặc định. Nhưng bạn có thể bật Swift 2.3. Chuyển đến Cài đặt bản dựng của dự án và đặt 'Sử dụng Phiên bản ngôn ngữ Swift kế thừa' thành CÓ.

Tốt cũ reddit :)


1
Tôi không thể tìm thấy điều này bằng cách tìm kiếm 'Sử dụng Phiên bản ngôn ngữ Swift kế thừa' hoặc 'Di sản'
JerryZhou

Tôi đang sử dụng Phiên bản Xcode mới nhất 8.3.2 (8E2002) và swift 3 ở Phiên bản Ngôn ngữ Swift. Bây giờ tôi muốn thay đổi điều này thành swift 2.3 nhưng chỉ có một tùy chọn swift 3.0 và 2nd là không xác định. Vì vậy, xin vui lòng hướng dẫn làm thế nào điều này sẽ có thể? để có được swift 2.3 trong dự án hiện tại của tôi? @alexisSchreier
Arsal

14

Để xem phiên bản mặc định của swift được cài đặt trên máy của bạn, sau đó từ dòng lệnh, nhập như sau:

swift --version

Apple Swift phiên bản 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)

Mục tiêu: x86_64-apple-darwin17.6.0

Đây rất có thể là phiên bản được bao gồm trong phiên bản Xcode của cửa hàng ứng dụng mà bạn đã cài đặt (trừ khi bạn đã thay đổi nó).

Nếu bạn muốn xác định phiên bản thực tế của Swift đang được sử dụng bởi một phiên bản Xcode cụ thể (ví dụ: phiên bản beta), sau đó từ dòng lệnh, hãy gọi tệp nhị phân nhanh trong gói Xcode và chuyển qua tham số - đảo ngược

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

Apple Swift phiên bản 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)

Mục tiêu: x86_64-apple-darwin17.6.0



1

Tôi đang sử dụng Swift từ Google Colab. Đây là cách kiểm tra nó trong Colab.

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

Kết quả là 5.0-dev


-1

Đóng góp tiền thưởng: Tôi đang sử dụng tập lệnh node.js tùy chỉnh để trích xuất một chuỗi sạch để sử dụng với tài liệu Jazzy. Bạn có thể sử dụng điều này nếu bạn có thể tìm một nơi để xử lý nó trong quy trình phát triển của mình:

Được viện dẫn từ tập lệnh 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

Tất nhiên bạn cũng có thể sử dụng regex, nhưng làm bất cứ điều gì bạn thích:]


-1

Chỉ cần nhập lệnh swift trong thiết bị đầu cuối, nó sẽ hiển thị phiên bản, trong khi đăng nhập vào bảng điều khiển Swift. (Một cái gì đó như bên dưới)

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. Chọn dự án của bạn
  2. Xây dựng cài đặt
  3. tìm kiếm "ngôn ngữ nhanh"
  4. bây giờ bạn có thể xem phiên bản nhanh nào bạn đang sử dụng trong dự án của mình

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


Làm thế nào khác với giải pháp đầu tiên được đưa ra trong stackoverflow.com/a/46080904/1187415 ?
Martin R

tôi sẽ ném thư mục dự án chính và khi bạn gõ "ngôn ngữ nhanh", nó chỉ hiển thị phiên bản nhanh chóng trên đầu trong Cài đặt bản dựng không có gì khác ngoài điều đó ..
virut goti

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.