Xcode 8 Beta - Falha na conversão para a sintaxe atual do Swift: não foi possível encontrar o host de teste


115

Estou recebendo uma mensagem de erro quando tento usar o assistente de conversão do Xcode 8. Depois de tentar reinicializar, baixar código novo e excluir meus arquivos DerivedData, não consigo escapar deste erro:

A conversão para a sintaxe Swift atual falhou: não foi possível encontrar o host de teste

Eu tentei as duas opções, que são: Swift 2.3 e Swift 3. Depois de selecionar uma versão, recebo imediatamente esse erro.

Aqui está uma captura de tela do erro:

Mensagem de erro de conversão do Xcode 8


Eu tenho o mesmo problema aqui. Outro projeto, menor, converte bem.
Gondomir

Não tenho certeza do que pode estar causando isso. Isso me permite selecionar os módulos a serem convertidos. Todos os módulos produzem o mesmo erro.
thejuki

O que é "host de teste"? Mostra o arquivo DerivedData / ding / Build / Products / Debug-iphoneos / ding.app / ding que não existe após a pasta DerivedData de exclusão.
Gondomir de

Você também pode verificar a versão do idioma Swift nas configurações de Build. Tente usar uma versão inferior dele.
iPhoneDeveloper

Respostas:


306

Isso funcionou para mim:

  1. Selecione o projeto Xcode no navegador esquerdo.
  2. Clique no seu alvo de teste na Generalguia do Projeto .
  3. Divulgue "Teste". No meu projeto, o botão suspenso "Aplicativo host" estava em branco. Selecione seu aplicativo host apropriado.
  4. Tente construir seu alvo de teste agora. Se isso for bem-sucedido, a sintaxe de conversão também deve.

Tive esse problema depois de instalar o Xcode 8 beta, então presumo que isso esteja relacionado.

Crédito da imagem para @karthikkck insira a descrição da imagem aqui


5
Isso funcionou para mim. Obrigado! Para esclarecimento: Clique e selecione seu alvo de teste no seletor à esquerda do título da guia Geral.
thejuki

5
Obrigado, funcionou para mim também. Notando aqui um detalhe maluco que pode ajudar outras pessoas também: o campo "Host Application" já estava com o valor correto preenchido, mas apenas desligá-lo e voltar ao valor original fez com que funcionasse.
mz2

5
Pelo que vale a pena, meu aplicativo host foi definido como "personalizado". Mudar para a única opção disponível corrigiu o problema. Obrigado!
Mark McCorkle,

1
Onde encontrar aquele mencionado na etapa 3? @Bharathi
JayVDiyk

2
Não tenho uma seção de teste na minha guia geral ??
Deuce bigalow

62

Custou-me um pouco encontrar o menu suspenso "Aplicativo host" mencionado na resposta, de outra forma muito útil, de iluvcapra.

Então é isso que ele quis dizer:

É aqui que você encontra o menu suspenso. Selecione seu alvo principal.

Aqui é onde você encontra o menu suspenso


22

Acho uma solução fácil para isso, basta editar seu Scheme e desabilitar os testes.

insira a descrição da imagem aqui

E execute a conversão novamente.


1
obrigado! isso funcionou para mim, enquanto a resposta aceita não.
daver

Este. Mesmo que eu já tivesse definido o "Host Application" corretamente, ele não funcionou. Também não consegui executar os testes (obtendo a mesma mensagem de erro ...). o projeto não usa testes de unidade ativamente agora, mas terá que verificar isso em algum momento ...
verificá-los Nicolas Miari

5

+1 iluvcapra

Como alternativa, use o editor de texto para remover os dois itens a seguir de seu arquivo MyAppSwift.xcodeproj / project.pbxproj , procure por TEST_HOST

Agora, reabra seu projeto e execute o assistente de conversão novamente.

    4EFFFAE51B53D5D8003CD25A /* Debug */ = {
        isa = XCBuildConfiguration;
        buildSettings = {
            BUNDLE_LOADER = "$(TEST_HOST)";
            FRAMEWORK_SEARCH_PATHS = (
                "$(SDKROOT)/Developer/Library/Frameworks",
                "$(inherited)",
            );
            GCC_PREPROCESSOR_DEFINITIONS = (
                "DEBUG=1",
                "$(inherited)",
            );
            INFOPLIST_FILE = "AF SwiftTests/Info.plist";
            LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
            PRODUCT_NAME = "FA SwiftTests";
            TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AF Swift.app/AF Swift";
        };
        name = Debug;
    };
    4EFFFAE61B53D5D8003CD25A /* Release */ = {
        isa = XCBuildConfiguration;
        buildSettings = {
            BUNDLE_LOADER = "$(TEST_HOST)";
            FRAMEWORK_SEARCH_PATHS = (
                "$(SDKROOT)/Developer/Library/Frameworks",
                "$(inherited)",
            );
            INFOPLIST_FILE = "AF SwiftTests/Info.plist";
            LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
            PRODUCT_NAME = "FA SwiftTests";
            TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AF Swift.app/AF Swift";
        };
        name = Release;
    };

5

insira a descrição da imagem aqui

Tente estas etapas:

  1. Selecione seu projeto no lado esquerdo do Xcode.
  2. Vá para Alvos e selecione seus Testes de Projeto.
  3. Selecione a guia Geral e selecione o menu suspenso Aplicativo host e escolha seu aplicativo host.
  4. Converta ou execute seu projeto.

Tentar essas etapas funcionou para mim.


0

No meu caso, eu excluí meu alvo de testes e o adicionei novamente usando os alvos + abaixo e selecionando "Pacote de teste de unidade iOs"

Por alguma razão, ocorreu um erro de compilação, então mudei o "Caminho dos arquivos de compilação intermediários por configuração: para meu destino de teste para $ (PROJECT_TEMP_DIR) / $ (CONFIGURATION) para depuração e liberação. Isso permitiu que a compilação funcionasse.


-1

Corrija isso em 3 etapas:

  1. Primeiro exclua seu alvo de teste
  2. Selecione Editar -> Converter -> Para a sintaxe Swift atual ... e execute a conversão
  3. Em seguida, adicione um novo alvo de teste
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.