[swift] Swift 3.0으로 컴파일 된 모듈은 Swift 3.0.1에서 가져올 수 없습니다.

Xcode를 8.1 GM으로 업그레이드했고 이제 SwiftyJSON에 대해 아래 오류가 발생합니다. 다른 가져온 프레임 워크가 작동하는 것 같습니다. SwiftyJSON이 프레임 워크를 업그레이드 할 때까지 Swift 3에서 작동하도록 강제하는 방법이 있습니까? Carthage를 사용하여 프레임 워크를 가져 오거나 업데이트했습니다. 나는 또한 Use Legacy Swift language version소용이 없도록 On 및 Off를 변경하려고 시도했습니다 .

Swift 3.0으로 컴파일 된 모듈은 Swift 3.0.1에서 가져올 수 없습니다 : Modules / SwiftyJSON.swiftmodule / arm64.swiftmodule



답변

SwiftyJson은 carthage에서 미리 컴파일하여 다운로드하고 있습니다. 미리 컴파일 된 다운로드는 Swift 버전 3.0입니다. 이로 인해 컴파일러는 버전이 올바르지 않다고 불평합니다. 다음 명령을 사용합니다.

carthage update --platform iOS --no-use-binaries

SwiftyJson (및 Carthage 내의 다른 모든 프레임 워크)은 로컬 버전의 Swift (3.0.1)를 사용하여 로컬에서 컴파일되며 컴파일러는 더 이상 불평하지 않습니다.


답변

DerivedData에서 앱 chache를 제거하고 다시 빌드합니다. 오류가 수정 될 수 있습니다.

다음과 같은 DerivedData 경로 :

~/Library/Developer/Xcode/DerivedData/


답변

응용 프로그램 폴더에 새로운 XCode 8.1 GM 패키지를 배치했는지 확인하십시오. 우리 중 한 명이 Carthage를 실행하여 종속성을 업데이트했지만 응용 프로그램 폴더에서 XCode 이전 8.0 응용 프로그램을 대체하지 않았을 때이 문제가 발생했습니다 (8.1 GM이 데스크탑에서 실행 중임).

: 당신은 당신이 터미널에 다음을 실행할 때 있는지 확인하려면 xcrun swift -version이 반환 Apple Swift version 3.0.1.


답변

Xcode터미널에서 기본값 을 새 것으로 업데이트 하는 것이 저에게 효과적이었습니다.

1 단계 : 다음 명령을 사용하여 터미널에서 Xcode 버전을 최신 버전으로 업데이트합니다. Ref

sudo xcode-select -switch <path/to/>Xcode.app

2 단계 : 이제 carthage 업데이트 명령을 시도합니다 .

carthage update --platform iOS


답변

최신 업데이트를 제공하려면 :

Carthage는 2017 년 2 월 27 일에 0.20 버전 을 출시했습니다 .

Carthage는 이제 사용 가능한 사전 빌드 바이너리가 호환되는 경우 에만 사전 빌드 바이너리를 사용합니다 .

즉, --no-use-binaries호환되지 않는 사전 빌드 프레임 워크를 피하기 위해 더 이상 사용할 필요가 없습니다 .

따라서 카르타고 버전이 다음 보다 더 크고 다음0.20 과 같은지 확인하십시오 .

carthage update --platform iOS


답변

@zirinisp가 말한 것처럼 :

  1. 다음 명령을 사용할 수 있습니다.carthage update --platform iOS --no-use-binaries
  2. 다음 명령 사용 : xcrun swift -versionSwift 버전보기
  3. 이렇게 : Xcode->preferences->locations파생 된 데이터를 지우고 데이터를 보관하려면 명령 줄 도구를 “로 변경하는 것이 가장 중요합니다.Xcode 8.1
  4. 다음 명령을 사용하면 xcrun swift -version빠른 버전이 3.0.1임을 알 수 있습니다.
  5. 세트 Use Legacy Swift Language Version = NO

도움이 되길 바랍니다


답변

  1. Xcode가 / Applications 폴더에있는 경우 베타 / GM 버전을 이동하고 이름을 Xcode-beta로 지정합니다.

  2. 다음의 출력을 확인하십시오.

    xcrun swift --version

터미널에서이 명령을 실행하면 Carthage가이 명령의 출력을 사용하여 로컬 Swift 버전을 결정하기 때문에 해당 출력이 앱에서 컴파일 할 빠른 버전과 일치해야합니다.

  1. 다음 명령을 실행하여 터미널에서 Xcode 버전을 최신 버전으로 업데이트하십시오.

    sudo xcode-select -s /Applications/Xcode-beta.app/

  2. iOS 용 라이브러리를 빌드하고 다음 명령을 실행하여 Carthage가 기존 (아직 호환되지 않는) 사전 컴파일 된 바이너리를 다운로드하지 못하도록합니다.

    carthage update --platform iOS --no-use-binaries

  3. 청소 및 구축