升级到 Xcode 10 后,无法快速识别 Objective C 类

Posted

技术标签:

【中文标题】升级到 Xcode 10 后,无法快速识别 Objective C 类【英文标题】:Objective C classes cannot be recognized in swift after upgrade to Xcode 10 【发布时间】:2018-09-26 10:19:32 【问题描述】:

我有一个由 Swift 4 和 Objective C 开发的 ios 项目,使用 Xcode 9 时一切正常。

XCode 升级到 10.0 后,我的 swift 类无法识别 Objective C 类和库,从而产生错误

'project_name-Swift.h' 文件未找到

使用未声明的类型'xxxxx'

后一种错误至少出现在以下几种情况:

系统目标C类(如UIImage、UIView...)

cocoapods 库中的 Objective C 类(如 AFNetworking 2...)

自定义目标 c 类

.h 文件中的#define 变量

我仍在使用 Swift 4(不是 4.2)。尝试清理构建文件夹并删除 DerivedData 并再次构建,这些错误仍然存​​在。

【问题讨论】:

【参考方案1】:

我通过在构建阶段移动其中一个框架来解决问题。

Targets -> Build Phases -> Link Binary With Libraries -> (remove) framework

当查看 Link Binary With Libraries 时,我注意到有些框架的图标颜色较浅(似乎已停用),删除框架并重新构建后,一切正常。

就我而言,我删除了与 Facebook SDK 一起安装的 Bolts 框架。之前,我改为使用 Cocoapods 更新 Facebook SDK,而不是手动将 Facebook SDK 库添加到项目中。

【讨论】:

以上是关于升级到 Xcode 10 后,无法快速识别 Objective C 类的主要内容,如果未能解决你的问题,请参考以下文章

iPod 设备在 Xcode 中无法识别

Xcode中无法识别iPod设备

iOS 10 升级后无法真机测试 Could not find Developer Disk Image

swift 4.2 的 Xcode 10 视觉识别问题

升级到 Xcode 3.2 后缺少框架

xcode不识别iphone