18

由于苹果发布了支持 Swift 4.0 的 Xcode 9 beta 版本。我一直在尝试将我的代码从 Swift 3.2 升级到 Swift 4.0。但是当failed to import bridging header我的项目成功构建时,它一直给我错误。

Xcode 错误详情:

转换为当前 Swift 语法失败

在尝试迁移之前,请确保所有选定的目标都使用当前配置的 Swift 版本成功构建。

有没有人在将代码库升级到 swift 4 时遇到过类似的错误。

4

7 回答 7

9

我在我的一个项目中遇到了类似的问题,接下来我如何解决这个问题:

我发现 CocoaPods 是问题所在。

  1. 我从我的项目中删除了 CocoaPods(如果你不知道该怎么做,请查看如何从项目中删除 CocoaPods?

  2. 不要忘记,如果你有单元和 ui 测试,你也必须从上面的链接中重复第四步。

  3. 将您的代码库升级到 Swift 4

  4. 再次安装 pod,您就完成了。

希望能帮助到你 :)

于 2017-07-26T16:12:51.197 回答
4

对我们来说有效的是删除 UnitTest 和 UITests

点击您的项目,然后“右键单击”-> 删除两个依赖项

希望能帮助到你

于 2019-06-18T07:45:00.247 回答
1

对我来说,我从 3.2 迁移到 4.0 失败,然后当我尝试编辑 > 转换 > 到当前 Swift 语法时,我总是收到此错误消息...

我的修复很简单,将项目设置的 swift 版本从 4.0 设置回 3.2 或您使用的任何版本。

这是因为虽然第一次迁移失败了,但 Xcode 已经在你的项目设置中将 swift 版本更改为 4.0。

于 2017-09-19T09:45:20.567 回答
0

在我的项目的构建设置和所有目标中更改Swift 语言版本后,我必须将AppDelegate.swift中的这个函数声明更改为:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true }

于 2019-01-05T07:01:46.600 回答
0

确保所有目标都编译,包括测试。从项目中删除 Cocoapods 后删除 NAME.xcworkspace

这为我解决了。

于 2017-09-18T02:09:37.380 回答
0

我所有的代码都在 Swift 5 中,除了我的一个 Pod 几年没有更新。该吊舱使用 Swift 4。

当我添加一个新的 Swift5 pod 时,这个错误发生在我身上。

所以,我需要做的就是:

  1. 更改受影响 Pod 的 Swift 版本以匹配项目的其余部分

在此处输入图像描述

  1. 清洁项目
于 2020-07-10T17:17:25.810 回答
0

可能您在桥接头文件中放置的至少一个目标 c 类未编译 - 注释掉桥接头文件中的所有条目,然后编译 - 它现在应该能够导入桥接头,但当然会生成很多由于未找到类而导致的错误。现在一一取消注释以找出导致导入失败的行,然后修复这些文件。

于 2017-10-18T08:29:11.180 回答