【问题标题】:How to force `Xcode-generated header` ... in a Swift Project (Call Swift from Obj-C)如何在 Swift 项目中强制“Xcode 生成的标头”...(从 Obj-C 调用 Swift)
【发布时间】:2018-04-16 06:54:13
【问题描述】:

当项目是 Swift 项目时,Xcode 不会生成此 -Swift.h 头文件。文档说:

当你将 Swift 代码导入到 Objective-C 中时,你依赖于一个 Xcode 生成的头文件将这些文件公开给 Objective-C。这 自动生成的文件是一个 Objective-C 头文件,它声明 目标中的 Swift 接口。它可以被认为是一个 Swift 代码的伞头。此标题的名称是您的 产品模块名称后加“-Swift.h”。

如果我尝试包含-Swift.h 文件,它会显示file not found。 我之前已经能够在一个 Objective-C 项目中生成这个文件。 但我想在 Swift 项目中从 Objective-C 调用 Swift。

如何在 Swift 项目中从 Obj-C 调用 Swift?

谢谢!

【问题讨论】:

    标签: objective-c swift xcode


    【解决方案1】:

    如果您在其中导入 *-Swift.h 的 Objective-C 文件位于包含您尝试在 Objective-C 中使用的 Swift 代码的同一 Swift 目标中,则导入它应该没有问题。为确保您使用的名称正确,请检查Build Settings 下的Objective-C Generated Interface Header Name。如果目标是一个框架,您可能需要稍微不同地导入 -Swift.h 标头:

    #import "YourFrameworkModuleName/YourFrameworkModuleName-Swift.h"

    而在应用程序目标中你会这样做

    #import "YourAppModuleName-Swift.h"
    

    这是我从经验中发现的。

    【讨论】:

    • 感谢 .h 导入现在很棒,但 swift 代码没有读取,我确实添加了 @objc。这是一个框架
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多