Xcode 9로 업데이트 한 후 내 프로젝트 중 하나를 빌드하려고했습니다.
FacebookLogin 포드를 사용합니다 . FacebookLogin / LoginButton.swift에 컴파일러 오류가 있습니다.
@testable import FacebookCore
❌ Module compiled with Swift 3.1 cannot be imported in Swift 4.0
내 대상의 빌드 설정에서 Swift 언어 버전은 Swift 3.2 로 설정됩니다 .
Facebook이 포드를 업데이트 할 때까지 기다려야 할 것 같아요. 아니면 다른 제안?
감사 !
답변
최신 정보:
솔루션은 Swift 5 및 Xcode 11에서도 테스트되고 작동합니다.
실물:
Carthage 를 사용하여 Swift 3.2에서 모듈을 컴파일하는 경우 터미널로 이동하여 다음을 실행해야한다고 추가하고 싶습니다 .
sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer
Xcode 9 명령 줄 도구를 사용하려면 다음을 실행할 수 있습니다.
carthage update NameOfTheLibrary --platform iOS --no-use-binaries
이렇게하면 현재 명령 줄 도구로 라이브러리가 컴파일됩니다. 약간 느릴 수 있지만 이제 프로젝트가 빌드되어야합니다.
노트
안정적인 Xcode 명령 줄 도구를 되돌리고 사용하려면 다음을 실행하십시오.
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
답변
Xcode 9는 Swift 3.2와 swift 4를 모두 이해하는 Swift 4 컴파일러와 함께 제공되며, 심지어 두 가지 버전을 믹스 앤 매치 할 수 있습니다. 불행히도 다른 버전은 지원되지 않습니다.
언어를 Swift 3.2로 설정하더라도 Swift 4 컴파일러를 사용합니다.
cocoapods를 사용하는 경우 pod 파일 끝에 이것을 추가하여 pod가 Swift 3.2 또는 4.0을 사용하도록 할 수 있습니다.
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.2'
end
end
end
또는 FacebookLogin이 Swift 3.2 또는 4로 업데이트 될 때까지 팟 (Pod)의 파일을 프로젝트에 임시로 직접 넣을 수 있습니다.
참고 : Matt의 피드백에 따라 편집 됨
답변
빌드하기 전에 타겟을 청소할 수 있습니다. 그것은 나를 위해 잘 작동합니다.
답변
‘Alamofire’를 가리키는 Xcode 9 Beta 3에서 동일한 문제가 발생하여 몇 가지 다른 솔루션을 시도했는데 가장 쉬운 방법은 다음과 같습니다.
1. CMD+SHIFT+K to clean the build
2. Restart Xcode 9 <-- make sure you do this step, that's critical. `
답변
“클린 빌드 폴더”를 수행하고 Xcode 9를 다시 시작하면 오류가 해결되었습니다. 또한 오류로 인해 앱이 내 장치 또는 시뮬레이터에서 실행되는 것을 중지하지 않았습니다.
답변
xcode DerivedData 디렉토리로 이동 한 다음 그 안의 모든 파일을 제거하고 프로젝트를 다시 컴파일합니다. 그것은 나를 위해 작동합니다.
기본 DerivedData 디렉토리는 : ~ / Library / Developer / Xcode / DerivedData입니다.