Xcode 8 Beta - Сбой при преобразовании в текущий синтаксис Swift: Не удалось найти тестовый хост

Я получаю сообщение об ошибке при попытке использовать мастер преобразования Xcode 8. После попытки перезагрузки, загрузки свежего кода и удаления файлов DerivedData я не могу избежать этой ошибки:

Сбой преобразования в текущий синтаксис Swift: не удалось найти тестовый хост

Я испробовал оба варианта: Swift 2.3 и Swift 3. После выбора версии я сразу получаю эту ошибку.

Вот скриншот ошибки:

Xcode 8 конвертировать сообщение об ошибке

7 ответов

Решение

Это сработало для меня:

  1. Выберите проект Xcode в левом браузере.
  2. Нажмите на свою цель теста в Проекте General Вкладка.
  3. Раскрыть "Тестирование". В моем проекте кнопка "Host Application" была пуста. Выберите подходящее хост-приложение.
  4. Попробуйте создать свою тестовую цель сейчас. Если это успешно, то преобразование синтаксиса должно также.

У меня была эта проблема после установки бета-версии Xcode 8, поэтому я предполагаю, что это связано.

Изображение предоставлено @karthikkck

Мне потребовалось немного времени, чтобы найти раскрывающийся список "Host Application", упомянутый в очень полезном ответе iluvcapra.

Так вот что он имел в виду:

Здесь вы найдете выпадающее меню. Выберите свою основную цель.

Здесь вы найдете выпадающее меню

Я считаю, что это легко исправить, просто отредактируйте свою схему и отключите тесты.

введите описание изображения здесь

И снова запустите конвертацию.

+1 iluvcapra

Или используйте текстовый редактор, чтобы удалить следующие два элемента из файла MyAppSwift.xcodeproj/project.pbxproj, найдите TEST_HOST

Теперь заново откройте ваш проект и снова запустите мастер конвертации.

    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;
    };

введите описание изображения здесь

Пожалуйста, попробуйте эти шаги:

  1. Выберите ваш проект в левой части XCode.
  2. Перейдите в Targets и выберите свои тесты проекта.
  3. Перейдите на вкладку "Общие", затем выберите "Приложение хоста" и выберите приложение хоста.
  4. Конвертировать или запустить свой проект.

Попытка этих шагов работала для меня.

В моем случае я удалил свою цель тестов, затем повторно добавил ее, используя + ниже цели и выбрав "iOs Unit Testing Bundle"

По какой-то причине это привело к ошибке компиляции, поэтому я изменил "Путь к файлам промежуточных сборок для конфигурации: для моей цели теста на $(PROJECT_TEMP_DIR)/$(CONFIGURATION) как для отладки, так и для выпуска. Это позволило компиляции работать.

Исправьте это в 3 шага:

  1. Сначала удалите тестовую цель
  2. Выберите "Правка" -> "Преобразовать" -> "В текущий синтаксис Swift" и выполните преобразование.
  3. Затем добавьте новую цель теста
Другие вопросы по тегам