Xcode 8 Beta - Convert to Current Swift Syntax Failed: Could not find test host

当我尝试使用 Xcode 8的转换向导时,收到一个错误消息。 在尝试重新启动、下载新代码和删除我的衍生数据文件之后,我无法避免这个错误:

转换到当前 Swift 语法失败: 无法找到测试主机

我已经尝试了两个选项: Swift 2.3和 Swift 3。在我选择了一个版本之后,我立即得到了这个错误。

下面是错误的截图:

Xcode 8 Convert Error Message

24683 次浏览

这对我很有效:

  1. 在左边的浏览器中选择 Xcode 项目。
  2. 单击 Project 的 General选项卡中的测试目标。
  3. 披露“测试”。在我的项目中,“主机应用程序”下拉按钮是空白的。选择适当的主机应用程序。
  4. 现在尝试构建您的测试目标。如果成功,那么转换语法也应该。

我在安装 Xcode 8 beta 之后遇到了这个问题,所以我假设这是相关的。

图片来源:@karthikkck enter image description here

+ 1 iluvcapra

或者,使用文本编辑器从 MyAppSwift.xcodeproj/project.pbxproj文件中删除以下两项,搜索 测试主机

Now, re-open your project and run the convert wizard again.

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

我发现这很容易修复,只要编辑您的方案和禁用测试。

enter image description here

再次运行转换。

它花费了我一点时间找到 “主机应用程序”下拉列表提到了在其他非常有帮助的答案由 iluvcapra。

这就是他的意思:

这是您找到下拉菜单的地方。选择您的主要目标。

This is where you find the pulldown menu

In my case I deleted my tests target, then re-added it using the + below targets and selecting "iOs Unit Testing Bundle"

由于某种原因,这得到了一个编译错误,所以我更改了“ Per-CONFIGURATION Intermediate Build Files Path: For my test target to $(PROJECT _ TEMP _ DIR)/$(CONFIGURATION) For both debug and release。这允许编译工作。

解决这个问题需要3个步骤:

  1. 首先删除测试目标
  2. 选择 Edit-> Convert-> To current Swift 语法... 并执行转换
  3. 然后添加一个新的测试目标

enter image description here

Please try these Steps:

  1. 在 Xcode 的左侧选择您的项目。
  2. 转到 Target 并选择您的项目测试。
  3. 选择“常规”选项卡并选择“主机应用程序”下拉列表,然后选择“主机应用程序”。
  4. 转换或运行项目。

尝试这些步骤对我有用。