ios - Xcode 9 Swift Language Version(SWIFT_VERSION)




swift3 xcode9 (6)

Esta solução funciona quando nada mais funciona:

Passei mais de uma semana para converter todo o projeto e cheguei a uma solução abaixo:

Primeiro, desintegre a dependência dos cocopodes do projeto e, em seguida, comece a converter o projeto para a última versão rápida.

Vá para o diretório do projeto no terminal e digite:

pod deintegrate

Isso irá desativar os cocopods do projeto e nenhum vestígio de CocoaPods será deixado no projeto. Mas, ao mesmo tempo, não excluirá o xcworkspace e os podfiles. Tudo bem se eles estiverem presentes.

Agora você tem que abrir o xcodeproj (não o xcworkspace) e você obterá muitos erros porque você chamou os métodos de dependência do cocoapods em seus projetos principais.

Então, para remover esses erros, você tem duas opções:

  1. Comente todo o código que você usou da biblioteca de cocoapods.
  2. Crie uma classe wrapper que tenha métodos fictícios semelhantes à biblioteca cocopods e, em seguida, chame-a.

Depois que todos os erros forem removidos, você poderá converter o código para a versão mais recente.

Às vezes, se você está recebendo erros estranhos, tente limpar os dados derivados e tente novamente.

Eu recentemente atualizei o xcode para a versão 9. Antes disso, no Xcode 8.x sempre que eu uso para pod update ele me mostra um código de atualização para converter o código para o Swift 3 e fazer isso para resolver os erros. Mas agora está me dando esse erro:

A configuração de compilação "Swift Language Version" (SWIFT_VERSION) deve ser definida como um valor suportado para destinos que usam o Swift. Essa configuração pode ser definida no editor de configurações de construção.

Para este erro eu tentei Build Settings > Swift Language Version e foi Swift 3.2 Mas como a chamada de atualização re-instalou alguns dos pods como Alamofire e diz para instalar o Xcode 8.x para converter o código para Swift 3 assim eu preciso instalar uma versão adicional com o Xcode mais recente? Se sim, como posso instalar o Xcode 8 com o Xcode 9?


Acabei de receber isso depois de criar um novo projeto Objective-C no Xcode 10, depois que adicionei um arquivo de modelo Core Data ao projeto.

Eu encontrei duas maneiras de corrigir isso:

  1. A maneira fácil: Abra o inspetor de arquivos do modelo Core Data ( - 1 ) e mude o idioma de Swift para Objective-C

  1. Método mais longo e mais perigoso

O modelo contém um arquivo "contents" com esta linha:

<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14460.32" systemVersion="17G5019" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">

Em há uma entrada sourceLanguage="Swift" . Mude para sourceLanguage="Objective-C" e o erro desaparece.

Para encontrar o arquivo "contents", clique com o botão direito do mouse no .xcdatamodeld no Xcode e .xcdatamodeld "Show in Finder". Clique com o botão direito no arquivo real (Finder) e faça "Show Package Contents"

Além disso: Alterar o idioma do modelo impedirá que o Xcode gere arquivos de subclasse de objetos gerenciados no Swift.


Isso pode acontecer quando você adiciona dados principais a um projeto existente.
Verifica a:
<Name> / <Name> .xcdatamodeld / <Name> .xcdatamodel / contents
Arquivo.
Este arquivo contém uma entrada "sourceLanguage" que (por padrão) pode ter sido definida como "Swift". Altere para "Objective-C".


No meu caso, todo o aviso desapareceu depois que eu mudei rapidamente a versão rápida de 2.x para 4.0 nas configurações de compilação, exceto duas avisar.

Esses avisos estão relacionados à pasta myprojectnameUITests e myprojectnameUITests . Eu não percebi e achei que se tratava de imigração direta do Xcode 7 para o Xcode 9 e achei que não conseguiria resolver esse problema e deveria instalar a versão perdida do Xcode 8.

No meu caso, eu apaguei essas pastas e todos os avisos desapareceram, mas você pode recriar essa pasta e contém usando isso:

file > new > target > (uitest or unittest extensions)

e use este artigo para criar casos de teste: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tests.html


talvez você precise baixar o toolchain. Este erro ocorre quando você não tem a versão correta do compilador swift.


Responda à sua pergunta:
Você pode fazer o download do Xcode 8.x do Portal de Download da Apple ou fazer o Download do Xcode 8.3.3 (ou consulte: Onde fazer o download da versão antiga do Xcode ), se você tiver uma conta de desenvolvedor premium (ID da Apple). Você pode instalar e trabalhar com o Xcode 9 e o Xcode 8.x no sistema single (mac). (Certifique-se de que você possui o Command Line Tools suportando ambas as versões do Xcode, para trabalhar com o terminal (consulte: Como instalar o 'Command Line Tool' ))

Dica: Como migrar seu código Versões Swift compatíveis com o Xcode 9 (Swift 3.2 ou 4)
O Xcode 9 permite a conversão / migração do Swift 3.0 para o Swift 3.2/4.0 apenas. Portanto, se a versão atual da linguagem Swift do seu projeto estiver abaixo de 3.0, você deverá migrar seu código na versão compatível do Swift 3 usando o Xcode 8.x.

Esta é uma mensagem de erro comum que o Xcode 9 mostra se identificar o idioma Swift abaixo de 3.0, durante a migração.


O Swift 3.2 é suportado pelo Xcode 9 e pelo Xcode 8.

Projeto ► (Selecione o seu destino do projeto) ► Configurações de compilação ► (Digite 'swift' na barra de pesquisa) Idioma do Compilador Swift ► Versão do Idioma Swift ► Clique em Lista de idiomas para abri-lo.



Converta seu código-fonte do Swift 2.0 para o 3.2 usando o Xcode 8 e continue com o Xcode 9 (Swift 3.2 ou 4).

Para facilitar a migração do seu código, siga estas etapas: (ele ajudará você a converter na última versão do swift suportada pela sua ferramenta Xcode)

Xcode: Menus: Edit ▶ Covert ▶ Para a sintaxe Swift atual





xcode9