ios - Xcode 8 - 找不到用户 header 路径

标签 ios objective-c swift xcode xcode8

我有一个以前在 XCode 7 中运行的项目,在 Swift 2.2 下。然而,我开始将它迁移到 Xcode 8 和 Swift 2.3(Swift 3 将在稍后推出)。这是我第一次迁移项目,所以我对很多概念都很陌生。

我不断收到以下错误: 找不到“JBBarChartView.h”文件。

这是我的项目的样子(出于隐私原因模糊了不重要的部分)

enter image description here

蓝色箭头指向桥接头。 这就是我的桥接头的样子:enter image description here

这是我的实际文件夹结构。 enter image description here

重要的头文件,例如 JBBarChartView.h,位于 Vendor 文件夹中。由于某些奇怪的原因,Xcode 根本找不到文件,因此无法导入桥接 header 。

到目前为止我尝试过的是:

  • 对于相关的目标,我已将 Swift Compiler - General > Objective-C Bridging Header 设置到正确的位置。
  • 我已将目标的 header 搜索路径设置为 ../../${SRCROOT} 并递归。
  • 我还在总是搜索用户路径上选择了YES
  • 我的用户 header 搜索路径也是:../../${SRCROOT} 并且是递归的。 (手动,在我的build设置中)
  • 我还有一个 xconfig 文件,看起来像这样:HEADER_SEARCH_PATHS = "../$(SRCROOT)/**"(除其他外,但它们都由空格分隔。)
  • 我也清理了 DerivedData 文件夹,并多次重启 Xcode。

无论我尝试什么,出于某种奇怪的原因,Xcode 都找不到这些 header 。有人知道我可以尝试什么吗?

最佳答案

这个 ../../${SRCROOT} 看起来不对 - 很可能你想要 ${SRCROOT}/../Vendor/ (或类似的东西) .

当您添加它时,它应该展开 SRCROOT 宏并向您显示正在生成的实际路径...看起来正确吗?

例如,当我使用:

${SRCROOT}/../Vendor/

我得到:

/Users/DonMag/Source/TestProj/../Vendor/

这会将我要查找的供应商文件放在:

/Users/DonMag/Source/Vendor/

我解决这个问题的步骤:

在您的项目中创建一个新的 FindMe.h 文件。将 #define FOUNDIT 1 放入其中。将 #include "FindMe.h" 添加到 AppDelegate.m 的顶部。

添加到 didFinishLaunchingWithOptions:

#ifdef FOUNDIT
    NSLog(@"Woo Hoo");
#endif

当然,这应该可以毫无问题地编译和运行。

接下来,从您的项目中删除对 FindMe.h 的引用,并将 FindMe.h 向上移动一个文件夹级别。尝试编译 --- 你应该得到一个“FindMe.h not found”错误。

${SRCROOT} 添加为 Header Search Path

尝试编译/运行。这应该 有效。如果是这样...

将 FindMe.h 移到另一个文件夹级别,并将 Header Search Path 更改为 ${SRCROOT}/../。编译/运行 --- 应该可以。

继续执行该过程 - 将 .h 移动一个级别(向上或向下移动到一个新文件夹中),编辑您的 Header Search Path,构建/运行以确认.. . 直到您到达“供应商”头文件的目标文件夹。

关于ios - Xcode 8 - 找不到用户 header 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43235921/

相关文章:

ios - 导航栏按钮不显示在导航栏中

iphone - 如何为多个值设置本地通知?

iphone - 自定义字体不以大写字母显示分音符

带变量的 Swift 泛型

swift - 可选择在 SwiftUI 文本字段中链接绑定(bind)值

ios - RxSwift+Moya+Moya_ObjectMapper+MJRefresh,刷新失败?

iphone - UIApplicationDidFinishLaunchingNotification的使用

iOS 图形界面刷新

ios - 如何在快捷语言中设置键盘上的完成键?

ios - 如何在没有多选的情况下向 UICollectionView 添加取消选择?