swift - tools - xcode 9.3 3




Xcode 8 Beta 3 레거시 스위프트 사용 문제 (13)

Xcode 8 Beta 3에 Objective-C 프로젝트가 있습니다. 업데이트 후 빌드 할 때마다 다음 오류가 발생합니다.

Swift를 사용하는 대상에 대해 "레거시 스위프트 언어 버전 사용"(SWIFT_VERSION)을 올바르게 구성해야합니다. [편집> 변환> 현재 Swift 구문으로…] 메뉴를 사용하여 Swift 버전을 선택하거나 빌드 설정 편집기를 사용하여 빌드 설정을 직접 구성하십시오.

누구든지 이것을 만난 적이 있습니까? Objective-C 프로젝트이므로 Swift를 구성하기위한 빌드 설정이 없습니다. 또한 프로젝트 종속성이나 CocoaPod가 Swift를 사용하지 않는지 확인했습니다. 내가 가지고있는 유일한 해결책은 베타 2를 사용하는 것입니다.

또한 OSX 10.12 베타 2를 실행 중임을 언급해야합니다.


CocoaPods를 사용하고 있고 pod install 수행 할 때마다 자동으로 수정되도록 pod install 다음 행을 Podfile 끝에 추가하십시오.

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end

편집 : CocoaPods v1.1.1 이상을 사용하는 경우이 문제가 해결되었습니다. 기본 프로젝트 대상에서 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 설정을 제거하는 것을 잊지 마십시오.


XCode 8부터는 기본 swift 버전으로 swift 3.x를 사용하더라도 swift 2.3을 사용할 수 있습니다. 신속한 2.3을 사용하려면 빌드 설정에서 레거시 스위프트 언어 버전 사용 플래그를 YES로 설정하면 XCode가 해당 프로젝트 대상에 Swift 2.3을 사용합니다.


Xcode 9 베타 버전. 프로젝트 설정, 빌드 설정으로 이동하여 Swift Language Version을 검색하십시오. Xcode 9에서는 Swift 3.2 또는 Swift 4를 사용 중인지 지정해야합니다.


podfile 끝에 아래 코드를 추가하십시오.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = '3.0'
    end
  end
end

같은 오류가 발생했습니다. "레거시 스위프트 언어 버전 사용"을 검색하려고했으나 찾을 수 없습니다. Xcode 8.3.3을 사용 하고 있습니다. 너무 많이 서핑하고 해결 한 후에이 솔루션을 찾았습니다.

Here are the steps.
1=> select your target from Xcode
2=> go to build setting
3=> search for "Swift Language Version"
4=> change it to swift 3. (or accordingly.)

나는 이전에 swift 버전 2.3을 사용했던 objective-c와 swift 코드가 혼합 된 프로젝트를 진행 중이며 swift 3으로 업그레이드 한 후 프로젝트를 빌드 할 수 없었습니다. Xcode가 언급 된 오류 메시지에 대해 불평했습니다.

분명히 내 project.pbxproj 파일에 오래된 Swift 버전이 아직 지정되어 있습니다. 신속한 3.0.1이 지정되었습니다.

SWIFT_VERSION = 3.0.1;

반면에 이미 3.0.2가 설치되어 있습니다.

$ xcrun swift -version
Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
Target: x86_64-apple-macosx10.9

Sooo, project-pbxproj 파일의 Swift 버전을 다음과 같이 변경하여 수정했습니다.

SWIFT_VERSION = 3.0;

패치 레벨 버전 지정자가 너무 구체적인 것 같습니다.


나는이 문제를 잠시 무시하고 그 동안 다른 것들을 연구하고 있었고 마침내 내 문제에 대한 해결책을 찾았습니다.

내 프로젝트는 Objective-C이기 때문에 내가 사용하는 포드 중 하나가 Swift를 사용하고 있다고 생각했는데 각 포드를 확인했지만 그중 하나도 없었습니다.

마지막 해결책은 파일> 새로 만들기> NSManagedObjectSubclass 메뉴에서 수동으로 코드를 생성했지만 핵심 데이터 모델이 Swift에서 코드를 생성하도록 설정되었다는 것입니다. 내가해야 할 일은 Objective-C로 전환하는 것입니다.


내 경우에는 다음을 수행합니다.

프로젝트 선택 == 빌드 설정으로 이동 =>“Swift Language Version”검색 => 현재 Swift 버전 평가

그게 다 내 문제를 해결했습니다


방금 해결 방법을 찾았습니다.

프로젝트 또는 라이브러리의 빌드 설정으로 이동하여 Swift 컴파일러 버전 속성 "레거시 스위프트 언어 버전 사용"을 지정되지 않음에서 예 또는 아니오로 설정하십시오.


복잡한 솔루션을 시도하기 전에 Cocoapods를 처음 사용하고 있고이 문제가있는 경우 수행해야 할 기본 점검 사항이 있습니다.

다음이 필요할 수 있습니다.

  • Podfile을 다시여십시오
  • 플랫폼 행이 '#'으로 주석 처리되지 않았는지 확인하십시오. 마침내 다음과 같이 보일 것입니다 :

platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For swift pod "MyPod" # Your mean pod :)

  • Podfile을 저장하고 Xcode를 닫은 후 pod install 다시 실행하십시오.
  • 프로젝트를여십시오.

아마 그거야

그렇지 않으면 ;-) 이상으로 갈 수 있습니다.


이 문제는 Xcode-8.1에서도 볼 수 있습니다. 확장 또는 위젯과 같은 새로운 대상을 추가하면 cocopods의 도움으로 타사 라이브러리가 새로운 대상에 통합됩니다. 포드 설치 후. 위와 같은 오류가 발생할 수 있습니다.

모든 라이브러리 빌드 설정에서 레거시 스위프트 언어 버전 사용 설정을 다음으로 변경하십시오.

아니


프로젝트 또는 빠른 타사에서 이전 버전의 스위프트를 사용하는 경우 "레거시 스위프트 언어 버전 사용"을 "예"로 설정하십시오. 프로젝트가 현재 빠른 버전으로 업데이트 된 경우 "아니오" 빠른 버전을 구성하지 않으면 모든 업데이트 및 설치 후에 Pod 프레임 워크에서이를 지정해야합니다.


ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESNO 변경해도 여전히 작동하지 않으면 문제가 아닌 xcode 문제 때문입니다. 다음 단계를 수행하십시오.

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 경고 대상에서 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 속성을 YES 로 변경하십시오.

2. 왼쪽 막대에 swift 3.0으로 변경하는 것이 좋습니다 경고가 표시됩니다

3. 그런 다음 NO 다시 변경하십시오. 프로젝트를 다시 빌드하면 xcode는 마지막으로 NO 변경 사항을 감지합니다!

이 경우 문제가 해결되었습니다!





xcode8-beta3