Eu tenho um projeto Objective-C no Xcode 8 Beta 3. Desde a atualização, sempre que tento compilar, recebo o seguinte erro:
É necessário que a opção "Usar versão do idioma do Swift herdado" (SWIFT_VERSION) seja configurada corretamente para destinos que usam o Swift. Use o menu [Editar> Converter> Para a sintaxe Swift atual…] para escolher uma versão Swift ou use o editor Configurações de compilação para definir diretamente a configuração de compilação.
Alguém já encontrou isso? Como é um projeto Objective-C, não há configuração de compilação para configurar o Swift. Também verifiquei que nenhuma das dependências do projeto ou o CocoaPods estão usando o Swift. A única solução que tenho é usar o Beta 2. Alguma idéia de como posso corrigir esse problema?
Também devo mencionar que estou executando o OSX 10.12 Beta 2.
fonte
Respostas:
Se você estiver usando o CocoaPods e desejar que ele seja corrigido automaticamente toda vez que estiver fazendo um
pod install
, você poderá adicionar essas linhas ao final do seu Podfile:EDIT: Agora, esse problema foi corrigido se você usar o CocoaPods v1.1.1 ou posterior. Não se esqueça de remover a
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
configuração dos principais objetivos do projeto.fonte
2.3
vez de3.0
Ótima solução! Isso efetivamente faz o"Use Legacy Swift Language Version"
paraNo
(ou se você alterá-lo para2.3
eleYes
). O benefício desta opção é que toda vez que vocêpod install
define essa configuração automaticamente! Impressionante. Vejo que tambémSWIFT_VERSION
é definido em projetos Obj-C . Presumo que não há efeitos adversos?pod install / update
. Esta solução torna as coisas mais rápidas. Você também pode atualizar sua versão do Cocoapods agora: também deve corrigir esse problema.Acabei de encontrar uma maneira de consertar isso.
Vá para as configurações de compilação do projeto ou biblioteca e defina o atributo Versão do compilador Swift "Usar versão do idioma do Swift herdado" de Não especificado para Sim ou NÃO.
fonte
pod install
, recomendo usar a resposta do @Tulleb acima.Eu tenho ignorado esse problema há um tempo e, enquanto isso, estou trabalhando em outras coisas - finalmente encontrei a solução para o meu problema.
Como meu projeto é o Objective-C, imaginei que um dos Pods que eu estava usando estivesse usando o Swift, verifiquei cada Pod e nenhum deles.
A solução final foi que meu modelo de dados principais foi definido para gerar código no Swift, embora eu os tenha gerado manualmente no menu Arquivo> Novo> NSManagedObjectSubclass. Tudo o que eu precisava fazer era mudar para o Objective-C.
fonte
Esse problema também é visível no Xcode-8.1. Quando adicionamos um novo destino, como extensão ou widget, a biblioteca de terceiros é integrada no novo destino, com a ajuda de cocópodes. Após a instalação do Pod . Podemos enfrentar o mesmo erro acima.
Altere a versão do idioma Swift herdado em todas as configurações de criação de biblioteca para
fonte
Se você estiver usando o Xcode 8 ou posterior
fonte
Adicione o código abaixo no final do podfile.
fonte
Estou trabalhando em um projeto que mesclou o código objetivo e o código swift. Anteriormente, usei a versão 2.3 do swift e, após a atualização para o swift 3, não consegui compilar o projeto. O Xcode reclamou da mensagem de erro mencionada.
Aparentemente, ainda havia alguma versão Swift desatualizada especificada no meu arquivo project.pbxproj. Havia o veloz 3.0.1 especificado:
Visto que eu já tinha o 3.0.2 instalado:
Então, eu o corrigi alterando a versão Swift no arquivo project-pbxproj para:
Parece que o especificador de versão no nível do patch foi muito específico.
fonte
No meu caso, basta fazer o seguinte
Escolha o projeto Target => Vá para a configuração Build => pesquise por "Swift Language Version" => dê ao Value a versão Swift atual
Isso é tudo Corrigido meu problema
fonte
Eu recebi o mesmo erro. Tentei pesquisar "Usar a versão do idioma do Legacy Swift", mas não foi encontrado. Estou usando o Xcode 8.3.3 Depois de navegar muito e contornar, encontrei esta solução e funcionou para mim.
fonte
defina "Usar versão do idioma do Swift herdado" como "SIM" se você estiver usando uma versão antiga do swift em seu projeto ou qualquer terceiro rápido. "Não" se o seu projeto atualizar para a versão rápida atual. se você não configurar sua versão rápida, após cada atualização e instalação, a estrutura do Pod precisará especificar isso.
fonte
Na verdade, tive que fazer uma pesquisa por "Legacy Swift" para poder alterá-lo de não especificado para "Sim". Quando simplesmente rolei para a seção descrita acima, não consegui alterá-lo. Espero que isso ajude alguém.
fonte
Meu projeto está escrito em Swift. Eu tenho o mesmo erro com
fastlane
. O que aconteceu foi o meu Xcode atualizado automaticamente, então tive que atualizar meu projeto para o Swift 3.0. Tenho muitos erros. A correção e a depuração estavam demorando muito e não valia a pena naquele momento, então decidi instalar uma versão mais antiga do Xcode. Reverti meu código para 2.3. Entãofastlane beta
não estava mais funcionando. Acontece que eu precisava definir a Command Line Tool para 7.3.fonte
Eu estava tendo esse mesmo problema e o resolvi fazendo o seguinte:
Em Projeto> Configurações de compilação:
Always Embed Swift Standard Libraries = $(inherited)
Use Legacy Swift Language Version = YES
Então no meu Podfile:
config.build_settings['SWIFT_VERSION'] = '3.0'
O uso dessas três configurações removeu todos os avisos e me permitiu compilar corretamente.
O mais obscuro e o que realmente obteve progresso na compilação foi alterar o SWIFT_VERSION no Podfile de 3 para 3,0, conforme sugerido aqui .
fonte
A partir do XCode 8, você pode usar o swift 2.3, mesmo que o XCode 8 use o swift 3.x como versão rápida padrão. Para usar o swift 2.3, basta ativar o sinalizador Use a versão do idioma do Legacy Swift para YES a partir da Configuração de compilação, e o XCode usará o Swift 2.3 para esse destino do projeto.
fonte
Antes de tentar soluções complicadas, aqui está uma verificação básica que você precisa fazer se for iniciante no Cocoapods e tiver esse problema.
Pode ser necessário:
platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For swift pod "MyPod" # Your mean pod :)
pod install
novamenteTalvez seja só isso.
Caso contrário, você pode ir acima ;-)
fonte
Eu tive esse mesmo problema depois de atualizar para o xcode 8.3.2, mas a opção "Usar linguagem Swift herdada" desapareceu. Esta parece ser a opção de mudar agora:
Usou essa correção com Alamofire e outras bibliotecas e tudo funciona bem.
fonte
Vá para Configuração de criação do projeto para o projeto e o Destino faz abaixo de dois.
Alterar para o mais recente
Swift 3
.Erro resolvido.
Se foi solucionada a sua correção de erro, goste.
fonte
No Xcode 9 beta. Vá para Configurações do projeto, Configurações da compilação, procure a versão do idioma Swift. No Xcode 9, você deve especificar se está usando o Swift 3.2 ou o Swift 4.
fonte
Se você mudar
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
paraNO
ainda não funcionar, é por causa do problema do xcode, não do seu problema. Executando as seguintes etapas:1.Altere a
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
propriedade para estarYES
no alvo de aviso2. então ele mostrará um aviso na barra esquerda que recomenda que você mude para o swift 3.0
3. depois mude de volta para
NO
. Reconstrua o projeto, o xcode finalmente detectará sua alteração noNO
!Problema resolvido neste caso!
fonte