我在 Swift 2.3 中编写了一个框架,它使用 Cocoapods 来利用一些 Objective-C 项目,例如 AFNetworking 和 CocoaLumberjack。由于桥接头不能在框架中使用,我为每个 Objective-C 项目(以及我编写的一些 Objective-C 实用程序)定义了模块映射。例如,AFNetworkModule 的 module.modulemap 如下所示:
module AFNetworkModule {
header "../../Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h"
export *
}
还在 Build Settings -> Import Paths 中添加了模块映射的路径。这样我可以在我的框架 swift 代码中导入模块:
import AFNetworkModule
在框架的构建设置中,设置定义模块设置为是。
import MyFramework
在外部,当框架和示例应用程序位于同一工作区时,我可以在示例 Swift 应用程序中使用该框架而不会出现任何问题:
-- SampleAppProj
-- MyFrameworkProj
-- Pods
但是当我尝试在单独的 Swift 项目中导入框架时,我得到“无法为 MyFramework 加载底层模块”。生成的框架包含一个 Headers 文件夹,其中包含 MyFramework-Swift.h 和 MyFramework.h(伞形文件)。我没有在伞形文件中添加任何标题,因为我正在使用模块在 swift 框架中内部导入 Objective-c。