【问题标题】:Import a Swift module in Obj C module在 Obj C 模块中导入 Swift 模块
【发布时间】:2020-07-18 17:08:41
【问题描述】:

我有一个 xcworkspace,里面有两个 xcodeprojects(一个是一个静态库,其中实现了所有基本功能,另一个是一个使用第一个类的演示项目) - 到目前为止,所有代码都是用 Objective 编写的C. 我想要实现的是在静态库中创建一个 Swift 类,然后从“demo”xcodeproj 中的一个 Objective C 类访问它。

我已经创建了这个“Test.swift”类和一个自动创建的桥接头(在 Build 设置中将 Defines Module 属性更改为 YES),并且一切正常 - 我可以从 Obj C 类中访问它同一个项目。接下来,我将在“演示”项目中创建一个新的“DemoTest.swift”Swift 类,并将 Test.swift 子类化(有效)。但是,当尝试从“演示”项目中的 Objective C 文件访问此类时,编译器无法识别我的“基础”模块 -

In file included from 
xxxxx/AppDelegate.m:26:
xxxxx/mpdemo-Swift.h:189:9: fatal error: module 'mpbba' not found
@import mpbba;
 ~~~~~~~^~~~~
1 error generated.

我的问题是如何将 Swift 代码导入另一个 Objective C 模块?

【问题讨论】:

    标签: ios swift module objective-c-swift-bridge


    【解决方案1】:

    请执行以下操作:

    1. 配置一个 Objective-C 桥接头
    2. 单击您的 Xcode 项目文件
    3. 点击构建设置
    4. 找到搜索栏并搜索Defines Module
    5. 将值更改为
    6. 搜索产品模块名称。
    7. 将值更改为您的项目名称。
    8. 在类中,添加以下内容:#import "YourProjectName-Swift.h"

    希望这会奏效。如果您还需要什么,请告诉我。

    【讨论】:

    • 嗨,Akshay,感谢您的回答。我已经完成了所有这些步骤,并且在同一个 xcodeproject 中一切正常。但是,我不知道该怎么做,所以我可以在不同的 xcodeproject 中使用这个模块(但在同一个 xcworkspace 中)。如果我尝试导入 #import "YourProjectName-Swift.h",则无法识别。
    猜你喜欢
    • 2015-05-08
    • 1970-01-01
    • 2015-09-22
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 2021-12-08
    相关资源
    最近更新 更多