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

115

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

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

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

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

Сообщение об ошибке преобразования Xcode 8

thejuki
источник
У меня такая же проблема. Другой, меньший по размеру, проект конвертируется нормально.
Gondomir
Я не уверен, что могло быть причиной этого. Это позволяет мне выбирать модули для преобразования. Все модули выдают одну и ту же ошибку.
thejuki
Что такое «тестовый хост»? Он показывает файл DerivedData / ding / Build / Products / Debug-iphoneos / ding.app / ding, который не существует после удаления папки DerivedData.
Gondomir
Вы также можете проверить языковую версию Swift в настройках сборки. Попробуйте использовать его более раннюю версию.
iPhoneDeveloper

Ответы:

306

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

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

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

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

iluvcapra
источник
5
Это сработало для меня. Спасибо! Для пояснения: нажмите и выберите свою тестовую цель в селекторе слева от заголовка вкладки «Общие».
thejuki
5
Спасибо, у меня тоже сработало. Отмечая здесь сумасшедшую деталь, которая может помочь и другим: в поле «Host Application» уже было заполнено правильное значение, но просто его выключение и возвращение к исходному значению заставило его работать.
mz2
5
Как бы то ни было, мое хост-приложение было настроено на "custom". Переход на единственный доступный вариант устранил проблему. Спасибо!
Марк МакКоркл
1
Где найти тот, что упомянут в шаге 3? @Bharathi
JayVDiyk
2
У меня на общей вкладке нет раздела тестирования ??
Deuce bigalow
62

Мне потребовалось немного времени, чтобы найти раскрывающееся меню «Хост-приложение», упомянутое в очень полезном ответе iluvcapra.

Вот что он имел в виду:

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

Здесь находится раскрывающееся меню

Оливер Рейнхард
источник
22

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

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

И снова запустите преобразование.

Никогда не быть
источник
1
Спасибо! это сработало для меня, а принятый ответ - нет.
daver
Это. Хотя у меня уже было правильно настроено «Хост-приложение», оно не сработало. Я также не мог запустить тесты (получаю то же сообщение об ошибке ...). в данный момент проект активно не использует модульные тесты, но в какой-то момент придется изучить это ...
Николас Миари
5

+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;
    };
Скотт Нгуен
источник
5

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

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

  1. Выберите свой проект в левой части Xcode.
  2. Перейдите в раздел «Цели» и выберите «Тесты проекта».
  3. Выберите вкладку «Общие», в раскрывающемся списке выберите «Хост-приложение» и выберите хост-приложение.
  4. Преобразуйте или запустите свой проект.

Эти шаги сработали для меня.

Karthickkck
источник
0

В моем случае я удалил свою цель тестов, затем снова добавил ее, используя + ниже целей и выбрав «Пакет модульного тестирования iOs».

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

Mark80
источник
-1

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

  1. Сначала удалите тестовую цель
  2. Выберите Edit -> Convert -> To current Swift syntax ... и выполните преобразование.
  3. Затем добавьте новую тестовую цель
Marmoy
источник