14

我正在构建一个框架,我需要在其中导入一些objective-c框架,现在我需要导入“Beaconstac.framework”,但是由于我们无法在快速框架项目中添加桥接头,所以我的问题是如何使用它我项目中的框架这在我尝试过的项目中无法直接访问

进口比康斯塔克

但它给出错误“没有这样的模块”

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

4

3 回答 3

16

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

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

  1. 将 ObjC.framework 放在 Frameworks 文件夹中,通过 Linked Frameworks and Libraries 链接到 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

于 2016-07-26T18:09:47.383 回答
3

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

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

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

如果您仍然卡住,我强烈建议您看看这个项目

于 2016-04-01T00:12:54.703 回答
2

您需要在伞形标题中导入 Beaconstac 框架。也就是说,如果您通常使用,例如,#import <Beaconstac/Beaconstac.h>在 Obj-C 桥接头中,对于框架,您需要将它放在伞头中。

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

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

于 2015-11-19T20:16:11.117 回答