Swift - 导入我的 Swift 类

44

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

这是我的文件夹结构:

enter image description here

我尝试过使用 import Player;import Player.swift;,但是当我尝试时出现了错误:No such module 'Player.swift'

我该如何正确地导入它?

谢谢!

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


2
你不需要导入任何东西。直接使用Player类即可。 - matt
4个回答

71

在 Swift 中,您不需要显式导入文件,因为它们可以通过项目全局使用。如果您想访问 Player class 的方法或属性,您可以直接在 MainScene.Swift 文件中创建 Player class 对象并访问它。 e.g var objPlayer = Player()


4
我已创建了一个文件夹,但自动链接无效。我必须将它们移到一个组中才能使其正常工作。 - owen gerig
我通过创建一个项目进行了测试,其中一个.swift文件有import UIkit,而另一个没有。果然,Xcode报错了,我想:“啊哈!这个答案是错误的。”但是后来我想起UIKit是一个Objective C框架,而不是Swift框架。 - ScottyBlades

31

使用其他Swift类时不需要进行导入,它们会自动可用。

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

import UIKit
import MapKit

确保已选择在目标中使用的选项。

请查看以下图片以获取更多想法。

在此图像中,我已选择了HomeViewController.swift以在AutolayoutDemo模块中使用。 enter image description here

在下面的图像中,我已取消勾选类DetailsViewController.swiftAutolayoutDemo模块。enter image description here

因此,从现在开始,当我尝试使用DetailsViewController时,编译器将在HomeViewController中给我以下错误,如下图所示。 enter image description here


2
请注意,如果您确实想要,您可以导入单个类 - 请参阅Nick Fox的答案。 - Erhannis
这篇文章描述了如何导入Swift的类、结构体、函数、变量、枚举等等。 - NightFuryLxD

15

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

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

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

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

您可以使用以下代码导入整个模块:

import ModuleName

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

import kindOfThing ModuleName.Type

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

有关此更深入的探索可在 NSHipster 此处找到。


这个第二个例子非常有用,但语法有点抛出我,我不得不跟随链接到NSHipster(谢谢)。我建议:import kindOfThing ModuleName.NameOfThing - orion elenzil

3

请检查右侧面板中是否已将该类添加到您的 iOS 目标中。


这适用于Flutter。 - Linar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接