Swift 编译器错误:在范围内找不到“ClassName.h” - Xcode 13

问题描述 投票:0回答:3

对于初学者来说,这仅在升级到 Xcode 13 后才成为问题。我有一个用 Objective-C 编写的应用程序,并且正在使用一些用 Swift 编写的文件。为了访问在 Objective-C 中的应用程序中创建的类,我确实有一个名为 TargetName-Bridging-Header.h 的桥接标头,其中所有有问题的类都像这样导入:

#import "ClassName.h"

在目标构建设置中,Objective-C Bridging Header 的值设置为桥接头文件的路径 (ProjectName/TargetName-BridgingHeader.h),并且应用程序似乎没有问题找到它。预编译桥接标头设置为“是”。安装 Objective-C 兼容性标头设置为“是”。此外,应用程序构建并运行,并且访问这些 Objective-C 构建的类似乎没有问题,但编译器继续抛出错误,指出它找不到这些类。我尝试过删除派生数据并进行清理。我缺少什么?这可能是其他人经历过的新 Xcode bug 吗?

确切的错误是“Swift编译器错误:无法在范围内找到'ClassName.h'”

ios swift objective-c xcode compiler-errors
3个回答
6
投票

遇到了同样的问题,我从桥接头中删除了特定的导入语句,将其放回并保存...接下来的编译顺利,没有任何错误。奇怪的错误...但可以避免..


1
投票

Xcode 似乎缓存了桥接导入。更新桥接标头将重置缓存


0
投票

面临类似但不一样的问题。尝试在 github 工作流程中构建 ios 时出现错误。

操作步骤片段

  - name: Build package for iOS
    run: |
      flutter build ios --release --no-codesign \

在我们的案例中,这是 XCode 版本兼容性问题。它正在运行的跑步者

jobs:
  build_ios:
    runs-on: macos-latest

在撰写此答案时,latest 指向 macos-12,其 XCode 版本为 14.2.0 但是对于我们的应用程序,我们需要版本 >= 14.3.0

因此,我们的第一个选择是使用 https://github.com/marketplace/actions/setup-xcode-version 并使用下面的方法明确设置 XCode

jobs:
  build:
    runs-on: macos-latest
    steps:
    - uses: maxim-lobanov/setup-xcode@v1
      with:
        xcode-version: latest-stable

但是这里的问题是对于指向macos-12的macos-latest,这个set-xcode操作没有XCOde版本> 14.2.0

最终对我们有用的解决方案是使用 XCode 14.3.1 附带的 macos-13 运行器

工作: 构建_ios: 运行:macos-13

无需使用

maxim-lobanov/setup-xcode@v1

如前所述,我的问题相似但不一样,因为我们的应用程序是在 Flutter 中,但在幕后它生成与 ios 兼容的代码(在 swift 中)并且部署需要 XCode,因此这里的解决方案是仔细检查 XCode您的应用程序的兼容性。

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