将 Objective-c 框架导入 Swift 框架项目

Import Objective-c framework into Swift framework project

我正在构建一个框架,我需要在其中导入一些 objective-c 框架,现在我需要导入 "Beaconstac.framework" 但因为我们无法在 swift 中添加桥接头框架项目所以我的问题是如何在我的项目中使用这个框架这在我试过的项目中不能直接访问

import Beaconstac

但是给出错误"No Such Module"

有没有其他方法可以做到这一点?

您需要在您的保护伞中导入 Beaconstac 框架 header。也就是说,如果您通常在 Obj-C 桥接 header 中使用 #import <Beaconstac/Beaconstac.h>,对于框架,您需要将其放在 header.[= 的保护伞中12=]

有关详细信息,请参阅 Apple 文档中的这一章:

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID130

创建一个名为 module.modulemap 的文件并包含以下内容:

module ObjCFrameworkName {
    header "ObjCFrameworkName.framework/Headers/ObjCFrameworkNameUmbrellaHeader.h"
    export *
}

请注意,您需要具有指向 Obj-C 框架的伞头的正确路径,该路径可能与上面示例中列出的略有不同。

如果您仍然卡住了,我强烈建议您看一下 this project

在 swift 框架项目中包含现有 Obj C 框架的步骤

假设我们正在 swift 中创建一个“SwiftProj.framework”项目,该项目内部必须使用 Objective C“ObjC.framework”

  1. 将 ObjC.framework 放入 Frameworks 文件夹,通过 Linked Frameworks and Libraries Link 到 Swift 框架项目,并在以下位置创建一个 module.modulemap 文件同级别
  2. 在module.modulemap
module ObjC{
    header "ObjC.framework/Headers/ClassA.h"
    export *
}
  1. 创建xcconfig文件(文件->新建->iOS->其他->配置设置文件)

  2. 在 xcconfig 文件中

SWIFT_INCLUDE_PATHS = $(SRCROOT)/
MODULEMAP_PRIVATE_FILE = $(SRCROOT)/module.modulemap

现在您可以在 SwiftProj.framework

中访问 ObjC.ClassA