사용중인 Swift 버전을 어떻게 확인합니까?


566

방금 Xcode에서 새로운 Swift 프로젝트를 만들었습니다. 사용중인 Swift의 버전이 궁금합니다.

Xcode 또는 터미널에서 프로젝트 내에서 사용중인 Swift 버전을 어떻게 확인할 수 있습니까?


7
stackoverflow.com/questions/29140476/… 의 제목 외에… 이 질문과 중복 되는 것으로 표시하기에 충분한이 질문 과 유사성 이 없습니다 . 이 질문의 본질은 프로그래밍 방식 으로 Swift 버전 을 찾는 방법이 아니라 일반적인 방법으로 (터미널 또는 Xcode 등을 통해) Swift 버전을 찾는 방법입니다. 이것은 큰 차이입니다.
David Snabel

답변:


406

프로젝트 빌드 설정에는 Swift Language Version에 대한 정보를 키-값 형식으로 저장하는 'Swift Compiler-Languages'블록이 있습니다. Xcode 및 활성 버전에 사용할 수있는 (지원되는) Swift 언어 버전도 체크 표시로 표시합니다.

프로젝트 ► (프로젝트 대상 선택) ► 빌드 설정 ► (검색 막대에 'swift_version'을 입력하십시오.) Swift Compiler Language ► Swift Language Version ► 언어 목록을 클릭하여 엽니 다 (그리고 목록 중 하나에 체크 표시가 나타납니다) -항목, 현재 빠른 버전이 될 것입니다).

이해하기 쉽게이 스냅 샷을보십시오.

설명 된 영역이 강조 표시된 xcode


프로그래밍 방식으로 다음 코드를 사용하면 프로젝트에서 지원하는 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 사용 ).

여기에 이미지 설명을 입력하십시오


10
나는 이것이 정답이라고 생각합니다. 터미널을 호출하는 것보다 쉽습니다. (특히 다른 버전의 Xcode가 설치된 경우)
Mike Keskinov

17
빠른 버전이 대상별로 구성되므로 정답입니다.
Andrew Paul Simmons

2
나는 엑스 코드 내 프로젝트에 8.1이 propoerty 표시되지 않습니다
로그 오프

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)

물론 그것은 xcrunXcode 사본을 올바르게 가리키고 있다고 가정 합니다. 나처럼 Xcode의 여러 버전을 저글링하는 경우 걱정할 수 있습니다! 그것이 맞는지 확인하려면

$ xcrun --find swift

Xcode의 경로를 살펴보십시오. 예를 들면 다음과 같습니다.

/Applications/Xcode.app/...

그것이 당신의 Xcode라면, 출력 -version은 정확합니다. 을 다시 지정해야하는 경우 xcrunXcode의 위치 환경 설정 패널에있는 명령 행 도구 팝업 메뉴를 사용하십시오.


8
당신은 또한 사용할 수 있습니다 xcode-select -pxcrun가 사용하고있는 엑스 코드의 경로를 인쇄 할 sudo xcode-select -s /path/to/Xcode.app을 변경할 수 있습니다.
잭 로렌스

4
방금 iOS 개발을 배우기 시작했으며 xcode가 신속한 버전을 선택하지 못하게하고 GUI에서 버전을 알려주지 못하는 것에 놀랐습니다.
Alex

@RadekWilczak 나는 "해야한다"는 무슨 뜻인지 모르겠다. 방금 게시 된 명령을 복사하여 터미널에 붙여 넣고 Return 키를 누르면 작동합니다. 다른 대안이있을 수 있지만 내가 말한 것은 잘못이 아닙니다.
matt

1
이것은 나에게 잘못된 대답을 주었다. swift는 대상마다 구성되기 때문입니다. 최상의 답변은 @Krunal의 아래 답변을 참조하십시오.
Andrew Paul Simmons

프로젝트마다 "SWIFT_VERSION을 설정하는 올바른 방법"에 동의합니다. 그러나 8.2와 같은 이전 Xcode 버전에서는 프로젝트에서 지원되는 XCode 버전이 UI에 명확하게 명시되어 있지 않으며 UI에서 "레거시 스위프트 언어 버전 사용"이 예, 아니요, 지정되지 않은 상태로 표시됩니다. 명령 행 접근 방식은 사용 가능한 최대 빠른 버전에 대한 답변을 빠르게 쿼리 할 수있는 데 매우 유용합니다.
truedat101

104

터미널을 열고 다음을 작성하십시오.

swift -version

12
이것은 반드시 Xcode가 볼 수있는 신속한 버전이 아닙니다. 게다가 Xcode가 없어도 신속하게 사용할 수 있습니다.
asiby

64

Xcode 8.3부터는 대상이 사용하는 신속한 버전의 가치 Build Settings가있는 열쇠 Swift Language Version가 있습니다.

구형 Xcode의 경우이 솔루션을 사용하려면 터미널을 열고 다음 명령을 입력하십시오.

사례 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에서 swift 3.x를 기본 swift 버전으로 사용하더라도 Xcode 8에서 Xcode 8.2.x까지 swift 2.3을 사용할 수 있습니다. 신속한 2.3을 사용하려면 from 플래그 Use Legacy Swift Language Version를 켜면 XCode가 해당 프로젝트 대상에 Swift 2.3을 사용합니다.YESBuild Setting


21

Xcode가 사용하는 Swift 버전을보고 선택할 수 있습니다.

대상 -> 빌드 설정 -> Swift Language Version :

여기에 이미지 설명을 입력하십시오

Xcode 8.3 및 Xcode 9에서 사용할 수 있습니다 (이전 버전은 확인하지 않았습니다)


2
Swift Language Version내 Xcode 8.2.1 프로젝트에서 설정으로 나타나지 않습니다. 있습니다 Use Legacy Swift Language Version.
Chris Prince

1
@ChrisPrince 그렇습니다 . Xcode 8.3 이전까지는 Swift Language Version존재하지 않았습니다 Build Settings... Xcode 8.x 이전 버전 Use Legacy Swift Language Version에서는 No= Swift 3, Yes= Swift 2.3
William GP

17

이 레딧 게시물이 도움이되었습니다 : https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet

Xcode 8은 Swift 3.0을 기본값으로 사용합니다. 그러나 Swift 2.3을 켤 수 있습니다. 프로젝트의 빌드 설정으로 이동하여 '레거시 스위프트 언어 버전 사용'을 예로 설정하십시오.

좋은 오래된 레딧 :)


1
'레거시 스위프트 언어 버전 사용'또는 '레거시'를 검색하면 찾을 수 없습니다
JerryZhou

최신 Xcode 버전 8.3.2 (8E2002)를 사용하고 있으며 Swift Language Version에서 신속한 3을 사용하고 있습니다. 이제 이것을 swift 2.3으로 변경하고 싶지만 swift 3.0 옵션은 하나 뿐이며 2nd는 지정되지 않았습니다. 어떻게 이것이 가능할까요? 현재 프로젝트에서 신속한 2.3을 얻으려면? @alexisSchreier
Arsal

14

시스템에 설치된 기본 버전의 swift를 보려면 명령 행에서 다음을 입력하십시오.

swift --version

Apple Swift 버전 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)

대상 : x86_64-apple-darwin17.6.0

이것은 설치 한 Xcode의 앱 스토어 버전에 포함 된 버전 일 가능성이 높습니다 (변경하지 않은 경우).

Xcode의 특정 버전 (예 : 베타)에서 사용중인 Swift의 실제 버전을 확인하려면 명령 행에서 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

Google Colab에서 Swift를 사용하고 있습니다. Colab에서 확인하는 방법은 다음과 같습니다.

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

결과는 5.0-dev


-1

보너스 기여 : Jazzy 문서와 함께 사용할 깨끗한 문자열을 추출하기 위해 사용자 정의 node.js 스크립트를 사용하고 있습니다. 개발 프로세스에서 작업 할 수있는 장소를 찾을 수 있다면 이것을 사용할 수 있습니다.

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

물론 정규 표현식을 사용할 수도 있지만 원하는대로 수행하십시오.]


-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. "빠른 언어"검색
  4. 이제 프로젝트에서 사용중인 빠른 버전을 확인할 수 있습니다

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


stackoverflow.com/a/46080904/1187415에 제공된 첫 번째 솔루션과 어떻게 다릅니 까?
Martin R

글쎄, 나는 주요 프로젝트 디렉토리를 던질거야 그리고 당신이 "빠른 언어"를 입력하면 그것은 빌드 설정에서 맨 위에 빠른 버전 만 표시됩니다 ..
viral goti

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.