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

eyh26e7m  于 2023-05-16  发布在  Swift
关注(0)|答案(3)|浏览(187)

我正在构建一个框架,其中我需要导入一些objective-c框架。
现在我需要导入“Beaconstac.framework”,但是我们不能在Swift框架项目中添加桥接头。
如何在我的项目中使用这个框架?
我试过:
导入Beaconstac
但编译器报告错误“无此类模块”
有没有其他方法可以做到这一点?

xcitsw88

xcitsw881#

将现有Obj C框架纳入Swift框架项目的步骤

假设我们在swift中创建一个“SwiftProj.framework”项目,它在内部必须使用ObjectiveC“ObjC.framework”
1.将ObjC.framework放入Frameworks文件夹,通过Linked Frameworks and Libraries链接到Swift框架项目,并在同一级别创建一个module.modulemap文件。
1.在modul.modulemap中

module ObjC{
    header "ObjC.framework/Headers/ClassA.h"
    export *
}

1.创建xcconfig文件(文件->新建->iOS->其他->配置设置文件)
1.在xcconfig文件中

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

现在您可以在SwiftProj.framework中访问ObjC.ClassA

vptzau2j

vptzau2j2#

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

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

请注意,您需要有正确的路径到您的Obj-C框架的伞形标头,这可能与上面的示例中列出的略有不同。
如果你仍然被卡住了,我强烈建议你看看this project

weylhg0b

weylhg0b3#

您需要在伞头中导入Beaconstac框架。也就是说,如果你通常在Obj-C桥接头中使用#import <Beaconstac/Beaconstac.h>,那么对于一个框架,你需要把它放在伞形头中。
有关详细信息,请参阅Apple文档中的本章:
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID130

相关问题