从Swift 3.2迁移到Swift 4会导致“无法导入桥接头”错误

问题描述 投票:13回答:6

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

Xcode错误细节:

转换为当前Swift语法失败

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

在将代码库升级到swift 4时,是否有任何人遇到类似的错误。

ios swift4 xcode9
6个回答
6
投票

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

我发现CocoaPods是个问题。

  1. 我从我的项目中删除了CocoaPods(如果你不知道如何检查这个How to remove CocoaPods from a project?
  2. 不要忘记如果您有单元和ui测试,您还必须从上面的链接重复第4步。
  3. 将代码库升级到Swift 4
  4. 再次安装pod,你就完成了。

希望能帮助到你 :)


1
投票

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

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

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


0
投票

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

这解决了我。


0
投票

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


0
投票

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

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


0
投票

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

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

希望能帮助到你

© www.soinside.com 2019 - 2024. All rights reserved.