如何在 Objective-C 中使用 Swift 文件?

Posted

技术标签:

【中文标题】如何在 Objective-C 中使用 Swift 文件?【英文标题】:How to work with Swift file in Objective-C? 【发布时间】:2016-11-24 05:38:07 【问题描述】:

我想使用一个用 Swift 编写的第三方库,但我在 Objective-C 环境中工作。怎么做?到目前为止,我所做的是:

    将第三方库拖放到我的项目中。 它要求我单击“是”的桥接头。 在构建设置中 defines Modules 没有到 yes 在两者中。 产品模块名称显示为$(PRODUCT_NAME:c99extidentifier)。我也尝试过使用我的项目名称。

现在我收到很多如下错误:

pDatePicker.swift:50:9:一行上的连续声明必须用';'分隔

'open' 的模糊使用。

我收到与上述错误相同的大约 50 到 60 个错误。我的错误在哪里?有人可以帮帮我吗?

【问题讨论】:

【参考方案1】:

你能在你的项目中看到 projectName-Swift.h 文件吗?

演示示例可在 github 上找到。

https://github.com/hasyapanchasara/UsingSwiftInObjectiveC

如果是,那么希望您在 Objectice C .m 文件中导入了#import "projectName-Swift.h" ?

#import "projectName-Swift.h"

只有你才能在 swift 代码中访问目标 c 文件。

参考

https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

签入构建设置 Objective-C 桥接头 ProjectName-Bridging-Header.h 有完美的位置。

如果该路径存在问题而不是桥接将无法正常工作,那为什么当您编译 #import "projectName-Swift.h" 时不会生成。

Download

下载以上示例项目。

【讨论】:

不,我没有找到“projectName-Swift.h”如何生成该文件。我正在使用 7.3.1 xcode 那么桥接肯定有问题。检查构建设置 - Objective-C Bridging Header - ProjectName-Bridging-Header.h 有完美的位置。如果该路径存在问题而不是桥接将无法正常工作,那为什么当您编译 #import "projectName-Swift.h" 时没有生成。 但我仍然遇到同样的错误,我没有找到“projectName-Swift.h”。我只是检查了我认为它只是当前位置的位置。 检查我的更新答案,刚刚为您完成了演示,下载并检查正确的配置。 非常感谢。【参考方案2】:

确保您在设置中的 swift 版本与此库使用的版本相同;如果没有,请尝试自己翻译,或者将 Use Legacy Swift Version 设置为 YES

【讨论】:

以上是关于如何在 Objective-C 中使用 Swift 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Objective-C 中使用 Swift 文件?

如何在 Objective-C 中使用 Swift 字符串枚举?

如何在 Flutter 插件的 Swift 编写的 iOS 部分中使用 Objective-C 框架

如何在带有 SwiftPM 的 Objective-C 模块中使用 Swift 模块?

浅谈Swift 2中的Objective-C指针

如何在 Swift 中转换 Objective-C TOCropViewController 委托方法?