Swift - 导入我的 swift 类

Posted

技术标签:

【中文标题】Swift - 导入我的 swift 类【英文标题】:Swift - Import my swift class 【发布时间】:2016-05-15 07:20:32 【问题描述】:

这个问题被问了好几次,但我找不到适合我的问题的解决方案。我正在尝试在我的MainScene.swift 中导入我的Player.swift 类(我使用 Cocos2D - SpriteBuilder 来设置项目;现在使用 Xcode)。

这是我的文件夹结构:

我尝试使用import Player;import Player.swift;,但是当我尝试时收到此错误:No such module 'Player.swift'

如何正确导入?

谢谢!

顺便说一句,我是 Swift 的初学者,所以不要指望我知道所有的术语

【问题讨论】:

你不需要导入任何东西。直接使用 Player 类。 【参考方案1】:

您无需在 Swift 中显式导入文件,因为它们在项目中全局可用。如果要访问Player class的方法或属性,可以直接在MainScene.Swift文件中制作Player类的对象,即可访问。 e.g var objPlayer = Player()

【讨论】:

仅供参考,我创建了一个文件夹,但自动链接不起作用。我不得不将它们移到一个组中,然后它就起作用了。 我通过创建一个项目来测试这一点,其中一个.swift 文件有import UIkit 而另一个没有。果然,Xcode 抛出了错误,我想啊哈!这个答案是错误的。但后来我想起 UIKit 是一个 Objective C 框架,而不是一个 Swift 框架。【参考方案2】:

无需导入 swift 类即可在其他 swift 类中使用。 它们可以自动使用。

在 Swift 中你只能导入模块,例如任何框架,如 UIKit、MapKit,如下所示。您不能导入 swift 类。

import UIKit
import MapKit

只需确保将其选择用于您尝试使用的目标。

查看下面的图片了解更多信息。

在这张图片中,我的HomeViewController.swift 被选择用于AutolayoutDemo 模块。

在下图中,我为 DetailsViewController.swift. 类取消选中了 AutolayoutDemo 模块

所以现在当我尝试使用DetailsViewController 编译器时,会出现如下HomeViewController 中的错误。

【讨论】:

请注意,如果您真的想可以导入单个类 - 请参阅 Nick Fox 的回答。【参考方案3】:

说到 Swift 导入,有两种情况:

1) 要导入的类型在模块中

在这种情况下,不需要导入语句。只要类型不是privatefileprivate,都可以直接访问。

2) 要导入的类型在模块之外

您可以使用以下方法导入整个模块:

import ModuleName

如果您只想从模块中导入特定类型或函数,可以使用以下格式:

import kindOfThing ModuleName.Type

其中 kindOfThing 是 class/struct/func/etc...

可以在 NSHipster here 上找到更深入的探索。

【讨论】:

【参考方案4】:

在右窗格中检查该类是否已添加到您的 ios 目标中。

【讨论】:

以上是关于Swift - 导入我的 swift 类的主要内容,如果未能解决你的问题,请参考以下文章

Swift:尝试导入 UIKit 时出错

将 Objective C 框架导入我的 Swift 项目后,我的项目无法识别桥接文件中的头文件

Swift:导入桥接头失败

无法将 iSpeech 导入我的 iOS Swift 项目

FMDB 不显示任何东西 - 迅速

尝试导入 web3swift 时出现编译错误