Xcode 8 Beta - Сбой при преобразовании в текущий синтаксис Swift: Не удалось найти тестовый хост
Я получаю сообщение об ошибке при попытке использовать мастер преобразования Xcode 8. После попытки перезагрузки, загрузки свежего кода и удаления файлов DerivedData я не могу избежать этой ошибки:
Сбой преобразования в текущий синтаксис Swift: не удалось найти тестовый хост
Я испробовал оба варианта: Swift 2.3 и Swift 3. После выбора версии я сразу получаю эту ошибку.
Вот скриншот ошибки:
7 ответов
Это сработало для меня:
- Выберите проект Xcode в левом браузере.
- Нажмите на свою цель теста в Проекте
General
Вкладка. - Раскрыть "Тестирование". В моем проекте кнопка "Host Application" была пуста. Выберите подходящее хост-приложение.
- Попробуйте создать свою тестовую цель сейчас. Если это успешно, то преобразование синтаксиса должно также.
У меня была эта проблема после установки бета-версии Xcode 8, поэтому я предполагаю, что это связано.
Мне потребовалось немного времени, чтобы найти раскрывающийся список "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;
};
Пожалуйста, попробуйте эти шаги:
- Выберите ваш проект в левой части XCode.
- Перейдите в Targets и выберите свои тесты проекта.
- Перейдите на вкладку "Общие", затем выберите "Приложение хоста" и выберите приложение хоста.
- Конвертировать или запустить свой проект.
Попытка этих шагов работала для меня.
В моем случае я удалил свою цель тестов, затем повторно добавил ее, используя + ниже цели и выбрав "iOs Unit Testing Bundle"
По какой-то причине это привело к ошибке компиляции, поэтому я изменил "Путь к файлам промежуточных сборок для конфигурации: для моей цели теста на $(PROJECT_TEMP_DIR)/$(CONFIGURATION) как для отладки, так и для выпуска. Это позволило компиляции работать.
Исправьте это в 3 шага:
- Сначала удалите тестовую цель
- Выберите "Правка" -> "Преобразовать" -> "В текущий синтаксис Swift" и выполните преобразование.
- Затем добавьте новую цель теста