Xcode 加载框架时找不到桥接 header

Xcode can't find Bridging header when loading Framework

我正在创建一个框架(已编译库),其中包含 Swift 和 Objective C 代码,因此我在我的框架项目中创建了一个桥接 header。 框架构建良好,桥接 header 没有问题。

然而,当我将产品 .sdk 拖到我的演示项目中以测试导入框架时,出现错误

Failed to import bridging header "...LibraryName-Bridging-Header.h"

我在搜索路径中添加了多条路径,但运气不佳。

混合了 Swift 和 Objective-C 代码的框架不需要(也不应该)桥接 header.

首先确保您的框架的构建设置包括“定义模块:是”。

那么,你的框架应该已经有了一把伞header,这个header和你的框架同名,里面有这样的东西

//! Project version number for MyFramework.
FOUNDATION_EXPORT double MyFrameworkVersionNumber;

//! Project version string for MyFramework.
FOUNDATION_EXPORT const unsigned char MyFrameworkVersionString[];

您希望 Swift 可见的任何 Objective-C 内容都需要具有 public 会员资格的 header,该会员资格被导入到该保护伞 header 中,例如这个#import <MyFramework/MyHeaderName.h>。请注意,您需要递归地应用此规则:如果您在伞 header 中导入 Objective-C header,则任何 it 导入也需要public 和在伞里 header.

如果您的某些 Objective-C header 有不必要的导入,或者导入您不想 public 在您的框架中的东西,这可能有点棘手。您可能需要稍微调整一下代码结构,以便清楚区分 public 和私有 headers.

如果你这样做,所有 public Objective-C 代码应该可以在框架的 Swift 代码中自动使用,没有任何桥接 header.

官方文档在这里:https://developer.apple.com/documentation/swift/imported_c_and_objective-c_apis/importing_objective-c_into_swift