如何在 Objective-C 中导入 SKTUtils?

Posted

技术标签:

【中文标题】如何在 Objective-C 中导入 SKTUtils?【英文标题】:How to import SKTUtils in Objective-C? 【发布时间】:2016-04-05 21:33:57 【问题描述】:

我正在尝试将SKTUtils(一组 swift 文件)导入到一个 Objective-C 项目中。据我所知,这样做就足够了:

#import "ProjectName-Swift.h"

但问题是SKTUtils 不是一个项目,而是一个包含一组 swift 类的目录。我尝试以这种方式导入文件:

#import "Vector3-Swift.h"
#import "CGFloat+Extensions-Swift.h"
.... etcetera ....

但没有成功。我还将项目构建设置中的定义模块选项设置为是,但仍然无事可做。

【问题讨论】:

【参考方案1】:

我刚刚尝试在空白的 Objective-C Xcode 项目中导入 SKTUtils。

您似乎缺少正确桥接要求的以下部分:

您需要导入 ProjectName-Swift.h。请注意,它是项目名称 - 其他答案错误地使用了类名。

这个单独的文件是一个自动生成的头文件,它为项目中的所有 Swift 类定义了 Objective-C 接口这些接口要么被 @objc 注释,要么继承自 NSObject。

取自How to import Swift code to Objective-C。

例如,在我的测试项目中,我的 Project-Swift.h 确实包含 SKTUtils 的 SKAction 扩展的导入,因为它们是基于 Objective-C 的 SpriteKit 类,但其他一些东西对 Objective-C 不友好,这就是为什么你无法访问它,因为它只是没有在-Swift.h 文件中生成。

另一个例子是,如果我将 SKTAudio 设为 NSObject 的子类,我开始在我的 Objective-C 代码中看到 SKTAudio 类:

 @objc public class SKTAudio: NSObject 

【讨论】:

但它不是一个项目,它只是一组swift文件。 #import "ProjectName-Swift.h" ProjectName 是你的主要项目,它不是!您要导入的 Swift 项目的名称(在本例中为 SKTUtils)。 从我在 SKTUtils 中看到的情况来看,它并不是为了与 Objective-C 一起使用而编写的。您可以在他们的问题跟踪器上请求支持或自行破解其来源,当然前者更好。 SKTUtils 不是一个项目。它只是一个目录,里面有一些 swift 文件,这就是我的意思。 我不明白为什么我的答案是-1。请解释一下。

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

如何在 SWIFT Xcode 中导入 Rollout.io

在 Objective-C(测试)代码中导入框架的 Swift 类

我可以使用桥接头在基于 Swift 的项目中导入 Objective-C++ 类吗?

在桥接头中导入头文件导致的 Swift 编译器错误

在桥接头中导入头文件导致的 Swift 编译器错误

在“发布”构建配置中看不到在桥接头中导入的头,但在“调试”构建配置中可见